{
  "@context": {
    "@vocab": "https://recal.dev/schema#",
    "schema": "https://schema.org/",
    "xsd": "http://www.w3.org/2001/XMLSchema#",
    "dcterms": "http://purl.org/dc/terms/",
    "recal": "https://recal.dev/schema#",
    "User": "recal:User",
    "createdAt": {
      "@id": "recal:createdAt",
      "@type": "xsd:dateTime"
    },
    "id": {
      "@id": "recal:id",
      "@type": "xsd:string"
    },
    "Organization": "recal:Organization",
    "name": {
      "@id": "recal:name"
    },
    "slug": {
      "@id": "recal:slug",
      "@type": "xsd:string"
    },
    "members": {
      "@id": "recal:members",
      "@container": "@list"
    },
    "AuthConnection": "recal:AuthConnection",
    "alive": {
      "@id": "recal:alive",
      "@type": "xsd:boolean"
    },
    "email": {
      "@id": "recal:email"
    },
    "expiresAt": {
      "@id": "recal:expiresAt",
      "@type": "xsd:dateTime"
    },
    "provider": {
      "@id": "recal:provider"
    },
    "scope": {
      "@id": "recal:scope",
      "@container": "@list"
    },
    "type": {
      "@id": "recal:type",
      "@type": "xsd:string"
    },
    "accessToken": {
      "@id": "recal:accessToken"
    },
    "refreshToken": {
      "@id": "recal:refreshToken"
    },
    "TimeRange": "recal:TimeRange",
    "end": {
      "@id": "recal:end",
      "@type": "xsd:dateTime"
    },
    "start": {
      "@id": "recal:start",
      "@type": "xsd:dateTime"
    },
    "FreeBusyFailureReason": "recal:FreeBusyFailureReason",
    "FailedCalendar": "recal:FailedCalendar",
    "calendarId": {
      "@id": "recal:calendarId",
      "@type": "xsd:string"
    },
    "message": {
      "@id": "recal:message",
      "@type": "xsd:string"
    },
    "reason": {
      "@id": "recal:reason",
      "@type": "@id"
    },
    "FailedFreeBusyUser": "recal:FailedFreeBusyUser",
    "customId": {
      "@id": "recal:customId",
      "@type": "xsd:string"
    },
    "failedCalendars": {
      "@id": "recal:failedCalendars",
      "@container": "@list"
    },
    "Calendar": "recal:Calendar",
    "original": {
      "@id": "recal:original"
    },
    "accessRole": {
      "@id": "recal:accessRole"
    },
    "backgroundColor": {
      "@id": "recal:backgroundColor",
      "@type": "xsd:string"
    },
    "foregroundColor": {
      "@id": "recal:foregroundColor",
      "@type": "xsd:string"
    },
    "primary": {
      "@id": "recal:primary",
      "@type": "xsd:boolean"
    },
    "selected": {
      "@id": "recal:selected",
      "@type": "xsd:boolean"
    },
    "subject": {
      "@id": "recal:subject",
      "@type": "xsd:string"
    },
    "timeZone": {
      "@id": "recal:timeZone",
      "@type": "xsd:string"
    },
    "Event": "recal:Event",
    "attendees": {
      "@id": "recal:attendees",
      "@container": "@list"
    },
    "description": {
      "@id": "recal:description",
      "@type": "xsd:string"
    },
    "location": {
      "@id": "recal:location",
      "@type": "xsd:string"
    },
    "metaId": {
      "@id": "recal:metaId",
      "@type": "xsd:string"
    },
    "MetaEvent": "recal:MetaEvent",
    "originals": {
      "@id": "recal:originals",
      "@container": "@list"
    },
    "CreateMetaEvent": "recal:CreateMetaEvent",
    "meeting": {
      "@id": "recal:meeting"
    },
    "sendNotificationsFor": {
      "@id": "recal:sendNotificationsFor",
      "@container": "@list"
    },
    "UpdateMetaEvent": "recal:UpdateMetaEvent",
    "CreateEvent": "recal:CreateEvent",
    "sendNotifications": {
      "@id": "recal:sendNotifications",
      "@type": "xsd:boolean"
    },
    "UpdateEvent": "recal:UpdateEvent"
  },
  "@type": "schema:Dataset",
  "schema:name": "Recal API JSON-LD context",
  "schema:description": "A JSON-LD @context for the objects Recal's own API contract declares: one class per component schema, one property per declared field, typed from the contract. Derived by script (derive-json-ld.py, 2026-10-18) from openapi/recal-openapi.json.",
  "dcterms:created": "2026-10-18",
  "dcterms:source": [
    "openapi/recal-openapi.json"
  ]
}