{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://raw.githubusercontent.com/api-evangelist/luma/main/json-schema/v1_events_create_post_request.json",
  "title": "V1 Events Create Post Request",
  "type": "object",
  "properties": {
    "can_register_for_multiple_tickets": {
      "type": "boolean"
    },
    "cover_url": {
      "type": "string",
      "format": "uri",
      "pattern": "^https:\\/\\/images\\.lumacdn\\.com\\/.*",
      "description": "Specify an image that has been uploaded to the Luma CDN. You can upload an image after getting an upload URL from the Luma API."
    },
    "coordinate": {
      "type": "object",
      "properties": {
        "longitude": {
          "type": "number"
        },
        "latitude": {
          "type": "number"
        }
      },
      "required": [
        "longitude",
        "latitude"
      ]
    },
    "description_md": {
      "type": "string",
      "description": "Luma stores rich text in a special format called Spark. We don't expose an API for that format, but we can convert Markdown to Spark for you. Some Spark features, like Luma event embeds, are not supported by Markdown. Images are supported using standard markdown syntax (![alt](url)) \u2014 image URLs must be hosted on the Luma CDN (images.lumacdn.com). Upload images via the /v1/images/create-upload-url endpoint first."
    },
    "end_at": {
      "type": "string",
      "format": "date-time",
      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
      "description": "ISO 8601 Datetime. For example, 2022-10-19T03:27:13.673Z"
    },
    "geo_address_json": {
      "oneOf": [
        {
          "type": "object",
          "properties": {
            "type": {
              "type": "string",
              "const": "manual"
            },
            "address": {
              "type": "string"
            }
          },
          "required": [
            "type",
            "address"
          ]
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "type": "string",
              "const": "google"
            },
            "place_id": {
              "type": "string"
            },
            "description": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ]
            }
          },
          "required": [
            "type",
            "place_id"
          ]
        }
      ]
    },
    "max_capacity": {
      "description": "Once an event hits the max capacity, the event will be marked as sold out and registration will automatically be closed.\n\nIf `can_register_for_multiple_tickets` is `true`, each ticket will count towards the max capacity.",
      "anyOf": [
        {
          "type": "integer",
          "minimum": -9007199254740991,
          "maximum": 9007199254740991
        },
        {
          "type": "null"
        }
      ]
    },
    "meeting_url": {
      "type": "string"
    },
    "name": {
      "type": "string"
    },
    "name_requirement": {
      "type": "string",
      "enum": [
        "full-name",
        "first-last"
      ],
      "description": "Luma collects the name of every guest as they register. Choose if you'd like to split this into two fields to encourage guests to enter their first and last name."
    },
    "phone_number_requirement": {
      "anyOf": [
        {
          "type": "string",
          "enum": [
            "optional",
            "required"
          ]
        },
        {
          "type": "null"
        }
      ]
    },
    "registration_questions": {
      "type": "array",
      "items": {
        "anyOf": [
          {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "label": {
                "type": "string"
              },
              "required": {
                "type": "boolean"
              },
              "question_type": {
                "type": "string",
                "const": "agree-check"
              }
            },
            "required": [
              "id",
              "label",
              "required",
              "question_type"
            ]
          },
          {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "label": {
                "type": "string"
              },
              "required": {
                "type": "boolean"
              },
              "question_type": {
                "type": "string",
                "const": "company"
              },
              "collect_job_title": {
                "anyOf": [
                  {
                    "type": "boolean"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "job_title_label": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ]
              }
            },
            "required": [
              "id",
              "label",
              "required",
              "question_type"
            ]
          },
          {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "label": {
                "type": "string"
              },
              "required": {
                "type": "boolean"
              },
              "question_type": {
                "type": "string",
                "const": "dropdown"
              },
              "options": {
                "maxItems": 250,
                "type": "array",
                "items": {
                  "type": "string"
                }
              }
            },
            "required": [
              "id",
              "label",
              "required",
              "question_type",
              "options"
            ]
          },
          {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "label": {
                "type": "string"
              },
              "required": {
                "type": "boolean"
              },
              "question_type": {
                "type": "string",
                "const": "github"
              }
            },
            "required": [
              "id",
              "label",
              "required",
              "question_type"
            ]
          },
          {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "label": {
                "type": "string"
              },
              "required": {
                "type": "boolean"
              },
              "question_type": {
                "type": "string",
                "const": "instagram"
              }
            },
            "required": [
              "id",
              "label",
              "required",
              "question_type"
            ]
          },
          {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "label": {
                "type": "string"
              },
              "required": {
                "type": "boolean"
              },
              "question_type": {
                "type": "string",
                "const": "linkedin"
              }
            },
            "required": [
              "id",
              "label",
              "required",
              "question_type"
            ]
          },
          {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "label": {
                "type": "string"
              },
              "required": {
                "type": "boolean"
              },
              "question_type": {
                "type": "string",
                "const": "long-text"
              }
            },
            "required": [
              "id",
              "label",
              "required",
              "question_type"
            ]
          },
          {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "label": {
                "type": "string"
              },
              "required": {
                "type": "boolean"
              },
              "question_type": {
                "type": "string",
                "const": "multi-select"
              },
              "options": {
                "maxItems": 250,
                "type": "array",
                "items": {
                  "type": "string"
                }
              }
            },
            "required": [
              "id",
              "label",
              "required",
              "question_type",
              "options"
            ]
          },
          {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "label": {
                "type": "string"
              },
              "required": {
                "type": "boolean"
              },
              "question_type": {
                "type": "string",
                "const": "phone-number"
              }
            },
            "required": [
              "id",
              "label",
              "required",
              "question_type"
            ]
          },
          {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "label": {
                "type": "string"
              },
              "required": {
                "type": "boolean"
              },
              "question_type": {
                "type": "string",
                "const": "telegram"
              }
            },
            "required": [
              "id",
              "label",
              "required",
              "question_type"
            ]
          },
          {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "label": {
                "type": "string"
              },
              "required": {
                "type": "boolean"
              },
              "question_type": {
                "type": "string",
                "const": "text"
              }
            },
            "required": [
              "id",
              "label",
              "required",
              "question_type"
            ]
          },
          {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "label": {
                "type": "string"
              },
              "required": {
                "type": "boolean"
              },
              "question_type": {
                "type": "string",
                "const": "twitter"
              }
            },
            "required": [
              "id",
              "label",
              "required",
              "question_type"
            ]
          },
          {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "label": {
                "type": "string"
              },
              "required": {
                "type": "boolean"
              },
              "question_type": {
                "type": "string",
                "const": "url"
              }
            },
            "required": [
              "id",
              "label",
              "required",
              "question_type"
            ]
          },
          {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "label": {
                "type": "string"
              },
              "required": {
                "type": "boolean"
              },
              "question_type": {
                "type": "string",
                "const": "youtube"
              }
            },
            "required": [
              "id",
              "label",
              "required",
              "question_type"
            ]
          },
          {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "label": {
                "type": "string"
              },
              "required": {
                "type": "boolean"
              },
              "question_type": {
                "type": "string",
                "const": "terms"
              },
              "terms": {
                "oneOf": [
                  {
                    "type": "object",
                    "properties": {
                      "content_type": {
                        "type": "string",
                        "const": "text"
                      },
                      "content_md": {
                        "type": "string",
                        "description": "Markdown content for the terms. Luma converts this to rich text internally."
                      },
                      "collect_signature": {
                        "type": "boolean"
                      },
                      "require_review": {
                        "description": "When true, guests must open the hosted terms before accepting.",
                        "type": "boolean"
                      }
                    },
                    "required": [
                      "content_type",
                      "content_md",
                      "collect_signature"
                    ]
                  },
                  {
                    "type": "object",
                    "properties": {
                      "content_type": {
                        "type": "string",
                        "const": "link"
                      },
                      "url": {
                        "type": "string",
                        "format": "uri"
                      },
                      "collect_signature": {
                        "type": "boolean"
                      }
                    },
                    "required": [
                      "content_type",
                      "url",
                      "collect_signature"
                    ]
                  }
                ]
              }
            },
            "required": [
              "id",
              "label",
              "required",
              "question_type",
              "terms"
            ]
          }
        ]
      }
    },
    "reminders_disabled": {
      "description": "By default, Luma will send reminders before the event. Turn off if you'd like more control over event communications.",
      "type": "boolean"
    },
    "feedback_email": {
      "description": "Settings for the post-event feedback email sent to guests. If not specified on create, inherits from calendar defaults.",
      "type": "object",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Whether to send the feedback email."
        },
        "delay": {
          "description": "How long after the event ends to send the feedback email. Defaults to PT0M (immediately). Maximum is P7D (7 days).",
          "type": "string"
        }
      },
      "required": [
        "enabled"
      ]
    },
    "show_guest_list": {
      "description": "When the guest list is shown, approved guests will be able to see who else is going to the event.",
      "type": "boolean"
    },
    "slug": {
      "description": "The URL slug for the event. If the slug is `aloha`, the URL will be `https://luma.com/aloha`. If the slug is not available, the event creation will fail.\n\nYou can use `/public/v1/entity/lookup` to check if a slug is available.",
      "type": "string",
      "minLength": 3,
      "maxLength": 50
    },
    "start_at": {
      "type": "string",
      "format": "date-time",
      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
      "description": "ISO 8601 Datetime. For example, 2022-10-19T03:27:13.673Z"
    },
    "timezone": {
      "type": "string",
      "description": "IANA Timezone, e.g. America/New_York. https://en.wikipedia.org/wiki/List_of_tz_database_time_zones"
    },
    "tint_color": {
      "description": "A hex color like '#bb2dc7'. Alpha channels (#rgba, #rrggbbaa) are automatically stripped.",
      "type": "string"
    },
    "visibility": {
      "type": "string",
      "enum": [
        "public",
        "members-only",
        "private"
      ]
    }
  },
  "required": [
    "name",
    "start_at",
    "timezone"
  ]
}