{
  "name": "Event",
  "description": "Use this schema type for events such as concerts, conferences, workshops, meetups, and festivals. Enables rich event results in Google Search with date, location, ticket information, and event status.",
  "schema_type": "Event",
  "version": "1.0.0",
  "fields": [
    {
      "key": "name",
      "label": "Event Name",
      "type": "text",
      "required": true,
      "description": "The name of the event.",
      "default": ""
    },
    {
      "key": "description",
      "label": "Description",
      "type": "textarea",
      "required": false,
      "description": "A description of the event, its purpose, and what attendees can expect.",
      "default": ""
    },
    {
      "key": "image",
      "label": "Event Image URL",
      "type": "url",
      "required": false,
      "description": "URL of an image or poster for the event.",
      "default": ""
    },
    {
      "key": "startDate",
      "label": "Start Date",
      "type": "date",
      "required": true,
      "description": "The start date and time of the event in ISO 8601 format (e.g., 2024-06-15T19:00:00-05:00).",
      "default": ""
    },
    {
      "key": "endDate",
      "label": "End Date",
      "type": "date",
      "required": false,
      "description": "The end date and time of the event in ISO 8601 format.",
      "default": ""
    },
    {
      "key": "eventStatus",
      "label": "Event Status",
      "type": "select",
      "required": false,
      "description": "The current status of the event.",
      "default": "https://schema.org/EventScheduled",
      "options": [
        { "value": "https://schema.org/EventScheduled", "label": "Scheduled" },
        { "value": "https://schema.org/EventCancelled", "label": "Cancelled" },
        { "value": "https://schema.org/EventPostponed", "label": "Postponed" },
        { "value": "https://schema.org/EventRescheduled", "label": "Rescheduled" }
      ]
    },
    {
      "key": "eventAttendanceMode",
      "label": "Attendance Mode",
      "type": "select",
      "required": false,
      "description": "Whether the event is in-person, online, or a mix of both.",
      "default": "https://schema.org/OfflineEventAttendanceMode",
      "options": [
        { "value": "https://schema.org/OfflineEventAttendanceMode", "label": "In-Person (Offline)" },
        { "value": "https://schema.org/OnlineEventAttendanceMode", "label": "Online" },
        { "value": "https://schema.org/MixedEventAttendanceMode", "label": "Mixed (Online & In-Person)" }
      ]
    },
    {
      "key": "location",
      "label": "Location",
      "type": "object",
      "required": true,
      "description": "The venue or virtual location where the event takes place.",
      "default": "",
      "fields": [
        {
          "key": "@type",
          "label": "Location Type",
          "type": "select",
          "required": true,
          "description": "Whether this is a physical venue or a virtual location.",
          "default": "Place",
          "options": [
            { "value": "Place", "label": "Physical Venue" },
            { "value": "VirtualLocation", "label": "Virtual / Online" }
          ]
        },
        {
          "key": "name",
          "label": "Venue Name",
          "type": "text",
          "required": true,
          "description": "The name of the venue or platform.",
          "default": ""
        },
        {
          "key": "address",
          "label": "Address",
          "type": "text",
          "required": false,
          "description": "The full address of the physical venue.",
          "default": ""
        },
        {
          "key": "url",
          "label": "Virtual Event URL",
          "type": "url",
          "required": false,
          "description": "The URL for accessing the virtual event (for online events).",
          "default": ""
        }
      ]
    },
    {
      "key": "organizer",
      "label": "Organizer",
      "type": "object",
      "required": false,
      "description": "The organization or person responsible for organizing the event.",
      "default": "",
      "fields": [
        {
          "key": "@type",
          "label": "Organizer Type",
          "type": "select",
          "required": true,
          "description": "Whether the organizer is an organization or a person.",
          "default": "Organization",
          "options": [
            { "value": "Organization", "label": "Organization" },
            { "value": "Person", "label": "Person" }
          ]
        },
        {
          "key": "name",
          "label": "Organizer Name",
          "type": "text",
          "required": true,
          "description": "Name of the event organizer.",
          "default": ""
        },
        {
          "key": "url",
          "label": "Organizer URL",
          "type": "url",
          "required": false,
          "description": "Website URL of the organizer.",
          "default": ""
        }
      ]
    },
    {
      "key": "offers",
      "label": "Ticket Offers",
      "type": "object",
      "required": false,
      "description": "Ticket or registration pricing information.",
      "default": "",
      "fields": [
        {
          "key": "price",
          "label": "Price",
          "type": "number",
          "required": false,
          "description": "The ticket price. Use 0 for free events.",
          "default": ""
        },
        {
          "key": "priceCurrency",
          "label": "Currency",
          "type": "text",
          "required": false,
          "description": "Currency code in ISO 4217 format (e.g., 'USD').",
          "default": "USD"
        },
        {
          "key": "url",
          "label": "Ticket URL",
          "type": "url",
          "required": false,
          "description": "URL where tickets can be purchased.",
          "default": ""
        },
        {
          "key": "availability",
          "label": "Availability",
          "type": "select",
          "required": false,
          "description": "Ticket availability status.",
          "default": "https://schema.org/InStock",
          "options": [
            { "value": "https://schema.org/InStock", "label": "Available" },
            { "value": "https://schema.org/SoldOut", "label": "Sold Out" },
            { "value": "https://schema.org/PreOrder", "label": "Pre-Sale" },
            { "value": "https://schema.org/LimitedAvailability", "label": "Limited Availability" }
          ]
        },
        {
          "key": "validFrom",
          "label": "Tickets Available From",
          "type": "date",
          "required": false,
          "description": "The date when tickets go on sale in ISO 8601 format.",
          "default": ""
        }
      ]
    },
    {
      "key": "performer",
      "label": "Performer",
      "type": "object",
      "required": false,
      "description": "A performer at the event (musician, speaker, etc.).",
      "default": "",
      "fields": [
        {
          "key": "@type",
          "label": "Performer Type",
          "type": "select",
          "required": true,
          "description": "Whether the performer is a person or group.",
          "default": "Person",
          "options": [
            { "value": "Person", "label": "Person" },
            { "value": "PerformingGroup", "label": "Group / Band" }
          ]
        },
        {
          "key": "name",
          "label": "Performer Name",
          "type": "text",
          "required": true,
          "description": "Name of the performer.",
          "default": ""
        }
      ]
    }
  ],
  "template": {
    "@context": "https://schema.org",
    "@type": "Event",
    "name": "",
    "description": "",
    "image": "",
    "startDate": "",
    "endDate": "",
    "eventStatus": "https://schema.org/EventScheduled",
    "eventAttendanceMode": "https://schema.org/OfflineEventAttendanceMode",
    "location": {
      "@type": "Place",
      "name": "",
      "address": {
        "@type": "PostalAddress",
        "streetAddress": "",
        "addressLocality": "",
        "addressRegion": "",
        "postalCode": "",
        "addressCountry": ""
      }
    },
    "organizer": {
      "@type": "Organization",
      "name": "",
      "url": ""
    },
    "offers": {
      "@type": "Offer",
      "price": "",
      "priceCurrency": "USD",
      "url": "",
      "availability": "https://schema.org/InStock",
      "validFrom": ""
    },
    "performer": {
      "@type": "Person",
      "name": ""
    }
  },
  "google_required": ["name", "startDate", "location"],
  "google_recommended": ["image", "description", "endDate", "offers", "organizer"]
}