{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/eventship-com/json-schema/eventship-com-external-broadcast-request-schema.json",
  "title": "ExternalBroadcastRequest",
  "description": "Request to send a broadcast message to event attendees via the API.\n\nMirrors the filtering / targeting options available in the web app's\nbroadcast composer: filter by registration status, ticket type, or both.\nOmit both filters to target the default audience (confirmed + pending +\ninvited attendees who haven't opted out of event messages).",
  "x-generated": "2026-11-07",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/eventship-com-openapi.json#/components/schemas/ExternalBroadcastRequest",
  "properties": {
    "subject": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 500
        },
        {
          "type": "null"
        }
      ],
      "title": "Subject",
      "description": "Email subject line. Optional — if omitted or blank, defaults to \"📣 {event title} update\" (the same placeholder the web composer pre-fills for hosts)."
    },
    "bodyHtml": {
      "type": "string",
      "minLength": 1,
      "title": "Bodyhtml",
      "description": "Email body. Plain text or safe HTML."
    },
    "registrationStatuses": {
      "anyOf": [
        {
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        {
          "type": "null"
        }
      ],
      "title": "Registrationstatuses",
      "description": "Filter by registration status. Valid values: 'confirmed', 'pending', 'invited', 'waitlisted', 'cancelled', 'declined'. Omit to target the default set (confirmed, pending, invited)."
    },
    "ticketTypeIds": {
      "anyOf": [
        {
          "items": {
            "type": "integer"
          },
          "type": "array"
        },
        {
          "type": "null"
        }
      ],
      "title": "Tickettypeids",
      "description": "Filter by ticket type IDs. Omit to include all ticket types."
    },
    "postToFeed": {
      "type": "boolean",
      "title": "Posttofeed",
      "description": "If true, also post the message to the event's feed.",
      "default": false
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "bodyHtml"
  ]
}