{
  "@context": {
    "@vocab": "https://extralingo.com/schema#",
    "schema": "https://schema.org/",
    "xsd": "http://www.w3.org/2001/XMLSchema#",
    "dcterms": "http://purl.org/dc/terms/",
    "extralingo": "https://extralingo.com/schema#",
    "SchoolSearchRequest": "extralingo:SchoolSearchRequest",
    "query": {
      "@id": "extralingo:query",
      "@type": "xsd:string"
    },
    "locale": {
      "@id": "extralingo:locale",
      "@type": "xsd:string"
    },
    "language": {
      "@id": "extralingo:language",
      "@type": "xsd:string"
    },
    "country": {
      "@id": "extralingo:country",
      "@type": "xsd:string"
    },
    "cities": {
      "@id": "extralingo:cities",
      "@container": "@list"
    },
    "course_type_titles": {
      "@id": "extralingo:course_type_titles",
      "@container": "@list"
    },
    "accommodation_type_titles": {
      "@id": "extralingo:accommodation_type_titles",
      "@container": "@list"
    },
    "atmosphere_tags": {
      "@id": "extralingo:atmosphere_tags",
      "@container": "@list"
    },
    "accreditations": {
      "@id": "extralingo:accreditations",
      "@container": "@list"
    },
    "class_size": {
      "@id": "extralingo:class_size",
      "@type": "xsd:string"
    },
    "school_size": {
      "@id": "extralingo:school_size",
      "@type": "xsd:string"
    },
    "age": {
      "@id": "extralingo:age",
      "@type": "xsd:string"
    },
    "facets": {
      "@id": "extralingo:facets",
      "@container": "@list"
    },
    "limit": {
      "@id": "extralingo:limit",
      "@type": "xsd:integer"
    },
    "offset": {
      "@id": "extralingo:offset",
      "@type": "xsd:integer"
    },
    "SchoolSearchResponse": "extralingo:SchoolSearchResponse",
    "success": {
      "@id": "extralingo:success",
      "@type": "xsd:boolean"
    },
    "data": {
      "@id": "extralingo:data"
    },
    "TripSavedResponse": "extralingo:TripSavedResponse",
    "trip_id": {
      "@id": "extralingo:trip_id",
      "@type": "xsd:string"
    },
    "url": {
      "@id": "extralingo:url",
      "@type": "xsd:string"
    },
    "trip_url": {
      "@id": "extralingo:trip_url",
      "@type": "xsd:string"
    },
    "continue_url": {
      "@id": "extralingo:continue_url",
      "@type": "xsd:string"
    },
    "school_url": {
      "@id": "extralingo:school_url",
      "@type": "xsd:string"
    },
    "school_id": {
      "@id": "extralingo:school_id",
      "@type": "xsd:integer"
    },
    "school_name": {
      "@id": "extralingo:school_name",
      "@type": "xsd:string"
    },
    "configuration": {
      "@id": "extralingo:configuration"
    },
    "summary": {
      "@id": "extralingo:summary",
      "@type": "xsd:string"
    },
    "note": {
      "@id": "extralingo:note",
      "@type": "xsd:string"
    },
    "TripEmailedResponse": "extralingo:TripEmailedResponse",
    "emailed_to": {
      "@id": "extralingo:emailed_to",
      "@type": "xsd:string"
    },
    "message": {
      "@id": "extralingo:message",
      "@type": "xsd:string"
    },
    "Error": "extralingo:Error",
    "error": {
      "@id": "extralingo:error",
      "@type": "xsd:string"
    },
    "code": {
      "@id": "extralingo:code",
      "@type": "xsd:string"
    },
    "hint": {
      "@id": "extralingo:hint",
      "@type": "xsd:string"
    },
    "retryAfter": {
      "@id": "extralingo:retryAfter",
      "@type": "xsd:integer"
    }
  },
  "@type": "schema:Dataset",
  "schema:name": "Extralingo API JSON-LD context",
  "schema:description": "A JSON-LD @context for the objects Extralingo'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-11-07) from openapi/extralingo-com-openapi.json.",
  "dcterms:created": "2026-11-07",
  "dcterms:source": [
    "openapi/extralingo-com-openapi.json"
  ]
}