{ "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "https://raw.githubusercontent.com/api-evangelist/luma/main/json-schema/webhook_event.created_post_request.json", "title": "Webhook Event.Created Post Request", "type": "object", "properties": { "type": { "type": "string", "const": "event.created" }, "data": { "type": "object", "properties": { "platform": { "type": "string", "const": "luma" }, "id": { "type": "string" }, "user_id": { "type": "string" }, "calendar_id": { "type": "string" }, "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" }, "duration_interval": { "type": "string" }, "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" }, "created_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" }, "name": { "type": "string" }, "description": { "type": "string" }, "description_md": { "type": "string" }, "geo_address_json": { "anyOf": [ { "type": "object", "properties": { "address": { "type": "string" }, "city": { "anyOf": [ { "type": "string" }, { "type": "null" } ] }, "region": { "anyOf": [ { "type": "string" }, { "type": "null" } ] }, "country": { "anyOf": [ { "type": "string" }, { "type": "null" } ] }, "city_state": { "anyOf": [ { "type": "string" }, { "type": "null" } ] }, "full_address": { "anyOf": [ { "type": "string" }, { "type": "null" } ] }, "google_maps_place_id": { "anyOf": [ { "type": "string" }, { "type": "null" } ] }, "apple_maps_place_id": { "anyOf": [ { "type": "string" }, { "type": "null" } ] }, "description": { "anyOf": [ { "type": "string" }, { "type": "null" } ] } }, "required": [ "address", "city", "region", "country", "city_state", "full_address", "google_maps_place_id", "apple_maps_place_id", "description" ] }, { "type": "null" } ] }, "coordinate": { "anyOf": [ { "type": "object", "properties": { "longitude": { "type": "number" }, "latitude": { "type": "number" } }, "required": [ "longitude", "latitude" ] }, { "type": "null" } ], "description": "Latitude and longitude of the event location. Null for online events or when the address can't be geocoded." }, "meeting_url": { "anyOf": [ { "type": "string" }, { "type": "null" } ] }, "location_type": { "type": "string", "enum": [ "discord", "meet", "twitch", "twitter", "youtube", "zoom", "offline", "missing", "unknown" ], "description": "`offline` for in-person events. Online events have the meeting platform (`zoom`, `meet`, etc.), or `unknown` if we don't recognize the meeting link. `missing` if the event has no location set." }, "location_visibility": { "type": "string", "enum": [ "public", "guests-only" ], "description": "Whether the event's address is shown to everyone or only to approved guests. This API always returns the full address." }, "cover_url": { "type": "string" }, "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" ] } ] } }, "url": { "type": "string" }, "visibility": { "type": "string", "enum": [ "public", "members-only", "private" ] }, "waitlist_status": { "type": "string", "enum": [ "disabled", "enabled" ], "description": "`enabled` if the event has a waitlist. New registrations join the waitlist once the event reaches capacity." }, "feedback_email": { "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" ], "description": "Settings for the post-event feedback email sent to guests." }, "geo_latitude": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "deprecated": true, "description": "Use `coordinate.latitude` instead." }, "geo_longitude": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "deprecated": true, "description": "Use `coordinate.longitude` instead." }, "tags": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string" }, "name": { "type": "string" } }, "required": [ "id", "name" ] } } }, "required": [ "platform", "id", "user_id", "calendar_id", "start_at", "duration_interval", "end_at", "created_at", "timezone", "name", "description", "description_md", "geo_address_json", "coordinate", "meeting_url", "location_type", "location_visibility", "cover_url", "url", "visibility", "waitlist_status", "feedback_email", "geo_latitude", "geo_longitude", "tags" ] } }, "required": [ "type", "data" ] }