{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/aisle-wedding/json-schema/aisle-wedding-wedding-schema.json",
  "title": "Wedding",
  "x-generated": "2026-11-01",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/aisle-wedding-openapi.json#/components/schemas/Wedding",
  "type": "object",
  "additionalProperties": false,
  "properties": {
    "id": {
      "type": "string",
      "pattern": "^wed_.+$"
    },
    "slug": {
      "type": "string"
    },
    "partner_1_name": {
      "type": "string"
    },
    "partner_2_name": {
      "type": "string"
    },
    "couple_display_name": {
      "type": [
        "string",
        "null"
      ]
    },
    "wedding_date": {
      "type": [
        "string",
        "null"
      ],
      "format": "date",
      "description": "A calendar day the couple owns in the venue's zone, with no instant behind it. It is the same day for every reader."
    },
    "wedding_end_date": {
      "type": [
        "string",
        "null"
      ],
      "format": "date",
      "description": "A calendar day the couple owns in the venue's zone, with no instant behind it. It is the same day for every reader."
    },
    "timezone": {
      "type": [
        "string",
        "null"
      ],
      "description": "The IANA zone of the venue, such as `Europe/Rome`. Every instant this API returns is meant to be read in this zone. Null on a wedding with no venue yet, in which case instants were written against UTC."
    },
    "currency": {
      "type": "string"
    },
    "location": {
      "type": [
        "string",
        "null"
      ]
    },
    "venue": {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "name": {
          "type": [
            "string",
            "null"
          ]
        },
        "place_id": {
          "type": [
            "string",
            "null"
          ]
        },
        "latitude": {
          "type": [
            "string",
            "null"
          ]
        },
        "longitude": {
          "type": [
            "string",
            "null"
          ]
        },
        "city": {
          "type": [
            "string",
            "null"
          ]
        },
        "country": {
          "type": [
            "string",
            "null"
          ]
        }
      }
    },
    "room_selection_mode": {
      "type": "string"
    },
    "guest_pays_platform_fee": {
      "type": "boolean"
    },
    "room_payment_on_rsvp": {
      "type": "boolean",
      "description": "When true, a guest's yes on the couple's Aisle site waits for the first payment on their room. `PUT /v1/guests/{guest_id}/rsvp` does not apply this rule."
    },
    "public_registry_enabled": {
      "type": "boolean"
    },
    "published": {
      "type": "boolean"
    },
    "created_at": {
      "type": "string",
      "format": "date-time"
    },
    "updated_at": {
      "type": "string",
      "format": "date-time"
    }
  },
  "required": [
    "id",
    "slug",
    "partner_1_name",
    "partner_2_name",
    "couple_display_name",
    "wedding_date",
    "wedding_end_date",
    "timezone",
    "currency",
    "location",
    "venue",
    "room_selection_mode",
    "guest_pays_platform_fee",
    "room_payment_on_rsvp",
    "public_registry_enabled",
    "published",
    "created_at",
    "updated_at"
  ]
}