tools.ozone.moderation.scheduleAction

ozone-lexicons.bsky.social

{
  "$type": "com.atproto.lexicon.schema",
  "defs": {
    "failedScheduling": {
      "properties": {
        "error": {
          "type": "string"
        },
        "errorCode": {
          "type": "string"
        },
        "subject": {
          "format": "did",
          "type": "string"
        }
      },
      "required": [
        "subject",
        "error"
      ],
      "type": "object"
    },
    "main": {
      "description": "Schedule a moderation action to be executed at a future time",
      "input": {
        "encoding": "application/json",
        "schema": {
          "properties": {
            "action": {
              "refs": [
                "#takedown"
              ],
              "type": "union"
            },
            "createdBy": {
              "format": "did",
              "type": "string"
            },
            "modTool": {
              "description": "This will be propagated to the moderation event when it is applied",
              "ref": "tools.ozone.moderation.defs#modTool",
              "type": "ref"
            },
            "scheduling": {
              "ref": "#schedulingConfig",
              "type": "ref"
            },
            "subjects": {
              "description": "Array of DID subjects to schedule the action for",
              "items": {
                "format": "did",
                "type": "string"
              },
              "maxLength": 100,
              "type": "array"
            }
          },
          "required": [
            "action",
            "subjects",
            "createdBy",
            "scheduling"
          ],
          "type": "object"
        }
      },
      "output": {
        "encoding": "application/json",
        "schema": {
          "ref": "#scheduledActionResults",
          "type": "ref"
        }
      },
      "type": "procedure"
    },
    "scheduledActionResults": {
      "properties": {
        "failed": {
          "items": {
            "ref": "#failedScheduling",
            "type": "ref"
          },
          "type": "array"
        },
        "succeeded": {
          "items": {
            "format": "did",
            "type": "string"
          },
          "type": "array"
        }
      },
      "required": [
        "succeeded",
        "failed"
      ],
      "type": "object"
    },
    "schedulingConfig": {
      "description": "Configuration for when the action should be executed",
      "properties": {
        "executeAfter": {
          "description": "Earliest time to execute the action (for randomized scheduling)",
          "format": "datetime",
          "type": "string"
        },
        "executeAt": {
          "description": "Exact time to execute the action",
          "format": "datetime",
          "type": "string"
        },
        "executeUntil": {
          "description": "Latest time to execute the action (for randomized scheduling)",
          "format": "datetime",
          "type": "string"
        }
      },
      "type": "object"
    },
    "takedown": {
      "description": "Schedule a takedown action",
      "properties": {
        "acknowledgeAccountSubjects": {
          "description": "If true, all other reports on content authored by this account will be resolved (acknowledged).",
          "type": "boolean"
        },
        "comment": {
          "type": "string"
        },
        "durationInHours": {
          "description": "Indicates how long the takedown should be in effect before automatically expiring.",
          "type": "integer"
        },
        "emailContent": {
          "description": "Email content to be sent to the user upon takedown.",
          "type": "string"
        },
        "emailSubject": {
          "description": "Subject of the email to be sent to the user upon takedown.",
          "type": "string"
        },
        "policies": {
          "description": "Names/Keywords of the policies that drove the decision.",
          "items": {
            "type": "string"
          },
          "maxLength": 5,
          "type": "array"
        },
        "severityLevel": {
          "description": "Severity level of the violation (e.g., 'sev-0', 'sev-1', 'sev-2', etc.).",
          "type": "string"
        },
        "strikeCount": {
          "description": "Number of strikes to assign to the user when takedown is applied.",
          "type": "integer"
        },
        "strikeExpiresAt": {
          "description": "When the strike should expire. If not provided, the strike never expires.",
          "format": "datetime",
          "type": "string"
        }
      },
      "type": "object"
    }
  },
  "id": "tools.ozone.moderation.scheduleAction",
  "lexicon": 1
}

Validate Record

Validate a record against tools.ozone.moderation.scheduleAction

Validation Options
Automatically resolve and include external schemas for full validation
Treat any remaining unresolved references as valid

Metadata

DID
did:plc:33dt5kftu3jq2h5h4jjlqezt
CID
bafyreiacql23anujg7k4ph6cfyi53hwn6belrfgohjqjaid42vsquk5szm
Indexed At
2026-07-26 20:04 UTC
AT-URI
at://did:plc:33dt5kftu3jq2h5h4jjlqezt/com.atproto.lexicon.schema/tools.ozone.moderation.scheduleAction

Referenced Schemas (1)

Similar Lexicons

Lexicons whose schemas describe something close to this one. Check them before publishing a new one that overlaps.

Lexicon Garden

@