Raw schema
{
"type": "object",
"properties": {
"title": {
"type": "string",
"minLength": 1,
"maxLength": 200,
"description": "Event title, such as \"Sprint Review\"."
},
"start": {
"type": "string",
"maxLength": 30,
"pattern": "^\\d{4}-\\d{2}-\\d{2}(T\\d{2}:\\d{2}(:\\d{2})?(Z|[+-]\\d{2}:\\d{2})?)?$",
"description": "Start as YYYY-MM-DD for an all-day event, such as \"2026-11-02\", or YYYY-MM-DDTHH:MM for a timed event, such as \"2026-11-02T09:30\". A timed start needs timezone, or a Z or offset at the end such as \"2026-11-02T09:30+07:00\"."
},
"end": {
"type": "string",
"maxLength": 30,
"pattern": "^\\d{4}-\\d{2}-\\d{2}(T\\d{2}:\\d{2}(:\\d{2})?(Z|[+-]\\d{2}:\\d{2})?)?$",
"description": "Optional end in the same format as start, such as \"2026-11-02T10:30\". For an all-day event, the last day, such as \"2026-11-04\"."
},
"duration_minutes": {
"type": "integer",
"minimum": 1,
"maximum": 43200,
"description": "Duration in minutes if end date-time is omitted (for example, 30 or 60)."
},
"timezone": {
"type": "string",
"maxLength": 50,
"description": "IANA time zone name in Area/City form, such as America/New_York, Europe/Paris or Asia/Tokyo. Needed for a timed start that has no Z or offset."
},
"location": {
"type": "string",
"maxLength": 500,
"description": "Meeting room, street address, or video call URL."
},
"description": {
"type": "string",
"maxLength": 5000,
"description": "Event agenda, notes, or participant details."
},
"reminder_minutes": {
"type": "integer",
"minimum": 0,
"maximum": 10080,
"description": "Minutes before the event to trigger an alarm/reminder (for example, 10 or 15)."
},
"filename": {
"type": "string",
"maxLength": 80,
"description": "Optional .ics filename (without or with .ics)."
}
},
"required": [
"title",
"start"
],
"additionalProperties": false,
"examples": [
{
"title": "Product Launch",
"start": "2026-11-15T14:00",
"duration_minutes": 60,
"timezone": "Europe/London"
}
]
}