{"openapi":"3.1.0","info":{"title":"VolnéKurty REST API","version":"1.0.0-beta","description":"Čtecí REST API pro katalog areálů, dostupnost a osobní oblíbené. Rezervace nejsou součástí API."},"servers":[{"url":"https://volnekurty.cz","description":"Produkční adresa (beta zatím není zapnutá)"}],"security":[{"bearerAuth":[]}],"tags":[{"name":"Katalog"},{"name":"Dostupnost"},{"name":"Účet"}],"paths":{"/api/v1/catalog":{"get":{"operationId":"getCatalog","tags":["Katalog"],"summary":"Podporované oblasti, sporty a filtry","responses":{"200":{"description":"Úspěšná odpověď.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CatalogResponse"}}}},"400":{"description":"Neplatný požadavek nebo cursor.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Chybějící nebo neplatný Bearer token."},"403":{"description":"Nedostatečné oprávnění nebo pozastavený přístup.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Překročený krátkodobý nebo denní limit.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Služba nebo data jsou dočasně nedostupné.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/venues":{"get":{"operationId":"listVenues","tags":["Katalog"],"summary":"Stránkovaný seznam areálů","parameters":[{"name":"metro","in":"query","required":true,"schema":{"type":"string"}},{"name":"sport","in":"query","required":false,"schema":{"type":"string","enum":["tennis","padel","squash","badminton"]}},{"name":"query","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":100}},{"name":"cursor","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":2048}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":50}}],"responses":{"200":{"description":"Úspěšná odpověď.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VenuesResponse"}}}},"400":{"description":"Neplatný požadavek nebo cursor.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Chybějící nebo neplatný Bearer token."},"403":{"description":"Nedostatečné oprávnění nebo pozastavený přístup.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Překročený krátkodobý nebo denní limit.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Služba nebo data jsou dočasně nedostupné.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/venues/{slug}":{"get":{"operationId":"getVenue","tags":["Katalog"],"summary":"Detail areálu","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","pattern":"^[a-z0-9-]{1,80}$"}}],"responses":{"200":{"description":"Úspěšná odpověď.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VenueResponse"}}}},"400":{"description":"Neplatný požadavek nebo cursor.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Chybějící nebo neplatný Bearer token."},"403":{"description":"Nedostatečné oprávnění nebo pozastavený přístup.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Areál nebyl nalezen.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Překročený krátkodobý nebo denní limit.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Služba nebo data jsou dočasně nedostupné.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/availability/search":{"post":{"operationId":"searchAvailability","tags":["Dostupnost"],"summary":"Hledání volných bloků v rozsahu 1–14 dní","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchAvailabilityInput"}}}},"responses":{"200":{"description":"Úspěšná odpověď.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AvailabilityResponse"}}}},"400":{"description":"Neplatný požadavek nebo cursor.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Chybějící nebo neplatný Bearer token."},"403":{"description":"Nedostatečné oprávnění nebo pozastavený přístup.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Tělo je větší než 16 KiB.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"Tělo není application/json.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Překročený krátkodobý nebo denní limit.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Služba nebo data jsou dočasně nedostupné.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/me/favorites":{"get":{"operationId":"listMyFavorites","tags":["Účet"],"summary":"Oblíbené areály aktuálního účtu","parameters":[{"name":"cursor","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":2048}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":50}}],"responses":{"200":{"description":"Úspěšná odpověď.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FavoritesResponse"}}}},"400":{"description":"Neplatný požadavek nebo cursor.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Chybějící nebo neplatný Bearer token."},"403":{"description":"Nedostatečné oprávnění nebo pozastavený přístup.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Překročený krátkodobý nebo denní limit.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Služba nebo data jsou dočasně nedostupné.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/me":{"get":{"operationId":"getMyAccess","tags":["Účet"],"summary":"Scopes, platnost a společná kvóta tokenu","responses":{"200":{"description":"Úspěšná odpověď.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccessResponse"}}}},"400":{"description":"Neplatný požadavek nebo cursor.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Chybějící nebo neplatný Bearer token."},"403":{"description":"Nedostatečné oprávnění nebo pozastavený přístup.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Překročený krátkodobý nebo denní limit.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Služba nebo data jsou dočasně nedostupné.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}},"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"VolneKurty personal token"}},"schemas":{"ListVenuesInput":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"metro":{"type":"string"},"sport":{"type":"string","enum":["tennis","padel","squash","badminton"]},"query":{"type":"string","minLength":1,"maxLength":100},"cursor":{"type":"string","minLength":1,"maxLength":2048},"limit":{"type":"integer","minimum":1,"maximum":50}},"required":["metro"],"additionalProperties":false},"SearchAvailabilityInput":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"metro":{"type":"string"},"sport":{"type":"string","enum":["tennis","padel","squash","badminton"]},"dateFrom":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"dateTo":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"timeFrom":{"type":"string","pattern":"^([01]\\d|2[0-3]):(00|30)$"},"timeTo":{"type":"string","pattern":"^([01]\\d|2[0-3]):(00|30)$"},"durationMinutes":{"anyOf":[{"type":"number","const":60},{"type":"number","const":90},{"type":"number","const":120}]},"venueSlugs":{"minItems":1,"maxItems":40,"type":"array","items":{"type":"string","pattern":"^[a-z0-9-]{1,80}$"}},"favoritesOnly":{"type":"boolean"},"surfaces":{"minItems":1,"maxItems":4,"type":"array","items":{"type":"string","enum":["clay","artificial_grass","carpet","hard"]}},"environments":{"minItems":1,"maxItems":2,"type":"array","items":{"type":"string","enum":["indoor","outdoor"]}},"lighting":{"type":"boolean"},"sort":{"type":"string","enum":["start_time","price"]},"limit":{"type":"integer","minimum":1,"maximum":50},"cursor":{"type":"string","minLength":1,"maxLength":2048}},"required":["metro","sport","dateFrom","timeFrom","timeTo","durationMinutes"],"additionalProperties":false},"ListFavoritesInput":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"cursor":{"type":"string","minLength":1,"maxLength":2048},"limit":{"type":"integer","minimum":1,"maximum":50}},"additionalProperties":false},"CatalogResponse":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"data":{"type":"object","properties":{"timezone":{"type":"string"},"metros":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"sports":{"type":"array","items":{"type":"string","enum":["tennis","padel","squash","badminton"]}},"venuesCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["id","name","sports","venuesCount"],"additionalProperties":false}},"sports":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","enum":["tennis","padel","squash","badminton"]},"name":{"type":"string"},"filters":{"type":"object","properties":{"surfaces":{"type":"boolean"},"environments":{"type":"boolean"},"lighting":{"type":"boolean"}},"required":["surfaces","environments","lighting"],"additionalProperties":false}},"required":["id","name","filters"],"additionalProperties":false}},"surfaces":{"type":"array","items":{"type":"string","enum":["clay","artificial_grass","carpet","hard"]}},"environments":{"type":"array","items":{"type":"string","enum":["indoor","outdoor"]}},"durationsMinutes":{"type":"array","items":{"anyOf":[{"type":"number","const":60},{"type":"number","const":90},{"type":"number","const":120}]}},"search":{"type":"object","properties":{"earliestTime":{"type":"string"},"latestTime":{"type":"string"},"timeStepMinutes":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"maxDaysPerQuery":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"horizonDays":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"maxVenuesPerQuery":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["earliestTime","latestTime","timeStepMinutes","maxDaysPerQuery","horizonDays","maxVenuesPerQuery"],"additionalProperties":false}},"required":["timezone","metros","sports","surfaces","environments","durationsMinutes","search"],"additionalProperties":false},"meta":{"type":"object","properties":{"requestId":{"type":"string"},"generatedAt":{"type":"string"},"timezone":{"type":"string"},"usage":{"type":"object","properties":{"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"used":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"remaining":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"resetsAt":{"type":"string"},"unitsConsumed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["limit","used","remaining","resetsAt","unitsConsumed"],"additionalProperties":false}},"required":["requestId","generatedAt","timezone"],"additionalProperties":false}},"required":["data","meta"],"additionalProperties":false},"VenuesResponse":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"slug":{"type":"string"},"name":{"type":"string"},"metro":{"type":"string"},"district":{"type":["string","null"]},"address":{"type":["string","null"]},"city":{"type":"string"},"location":{"anyOf":[{"type":"object","properties":{"latitude":{"type":"number"},"longitude":{"type":"number"}},"required":["latitude","longitude"],"additionalProperties":false},{"type":"null"}]},"sports":{"type":"array","items":{"type":"string","enum":["tennis","padel","squash","badminton"]}},"courtsCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"priceFromCzkPerHour":{"type":["number","null"]},"bookingUrl":{"type":["string","null"]},"bookingLinkType":{"anyOf":[{"type":"string","enum":["direct","venue"]},{"type":"null"}]},"url":{"type":"string"},"data":{"type":"object","properties":{"status":{"type":"string","enum":["live","stale","error","manual","pending","off_season","unknown"]},"updatedAt":{"type":["string","null"]}},"required":["status","updatedAt"],"additionalProperties":false}},"required":["slug","name","metro","district","address","city","location","sports","courtsCount","priceFromCzkPerHour","bookingUrl","bookingLinkType","url","data"],"additionalProperties":false}},"meta":{"type":"object","properties":{"requestId":{"type":"string"},"generatedAt":{"type":"string"},"timezone":{"type":"string"},"usage":{"type":"object","properties":{"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"used":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"remaining":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"resetsAt":{"type":"string"},"unitsConsumed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["limit","used","remaining","resetsAt","unitsConsumed"],"additionalProperties":false},"nextCursor":{"type":["string","null"]}},"required":["requestId","generatedAt","timezone","nextCursor"],"additionalProperties":false}},"required":["data","meta"],"additionalProperties":false},"VenueResponse":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"data":{"type":"object","properties":{"slug":{"type":"string"},"name":{"type":"string"},"metro":{"type":"string"},"district":{"type":["string","null"]},"address":{"type":["string","null"]},"city":{"type":"string"},"location":{"anyOf":[{"type":"object","properties":{"latitude":{"type":"number"},"longitude":{"type":"number"}},"required":["latitude","longitude"],"additionalProperties":false},{"type":"null"}]},"sports":{"type":"array","items":{"type":"string","enum":["tennis","padel","squash","badminton"]}},"courtsCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"priceFromCzkPerHour":{"type":["number","null"]},"bookingUrl":{"type":["string","null"]},"bookingLinkType":{"anyOf":[{"type":"string","enum":["direct","venue"]},{"type":"null"}]},"url":{"type":"string"},"data":{"type":"object","properties":{"status":{"type":"string","enum":["live","stale","error","manual","pending","off_season","unknown"]},"updatedAt":{"type":["string","null"]}},"required":["status","updatedAt"],"additionalProperties":false},"courts":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"sport":{"type":"string","enum":["tennis","padel","squash","badminton"]},"surface":{"type":"string","enum":["clay","synthetic_clay","artificial_grass","carpet","hard","unknown"]},"environment":{"type":"string","enum":["indoor","outdoor"]}},"required":["id","name","sport","surface","environment"],"additionalProperties":false}},"amenities":{"type":"array","items":{"type":"string"}},"seasons":{"type":"array","items":{"type":"object","properties":{"label":{"type":["string","null"]},"from":{"type":["string","null"]},"lastDay":{"type":["string","null"]}},"required":["label","from","lastDay"],"additionalProperties":false}},"priceListUrl":{"type":["string","null"]}},"required":["slug","name","metro","district","address","city","location","sports","courtsCount","priceFromCzkPerHour","bookingUrl","bookingLinkType","url","data","courts","amenities","seasons","priceListUrl"],"additionalProperties":false},"meta":{"type":"object","properties":{"requestId":{"type":"string"},"generatedAt":{"type":"string"},"timezone":{"type":"string"},"usage":{"type":"object","properties":{"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"used":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"remaining":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"resetsAt":{"type":"string"},"unitsConsumed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["limit","used","remaining","resetsAt","unitsConsumed"],"additionalProperties":false}},"required":["requestId","generatedAt","timezone"],"additionalProperties":false}},"required":["data","meta"],"additionalProperties":false},"AvailabilityResponse":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"venue":{"type":"object","properties":{"slug":{"type":"string"},"name":{"type":"string"}},"required":["slug","name"],"additionalProperties":false},"court":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"surface":{"type":"string","enum":["clay","synthetic_clay","artificial_grass","carpet","hard","unknown"]},"environment":{"type":"string","enum":["indoor","outdoor"]}},"required":["id","name","surface","environment"],"additionalProperties":false},"sport":{"type":"string","enum":["tennis","padel","squash","badminton"]},"date":{"type":"string"},"startsAt":{"type":"string"},"endsAt":{"type":"string"},"durationMinutes":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"price":{"type":"object","properties":{"totalCzk":{"type":["number","null"]},"perHourCzk":{"type":["number","null"]},"source":{"type":"string","enum":["provider","tariff","unknown"]}},"required":["totalCzk","perHourCzk","source"],"additionalProperties":false},"dataUpdatedAt":{"type":"string"},"dataStatus":{"type":"string","const":"live"},"venueUrl":{"type":"string"},"bookingUrl":{"type":["string","null"]},"bookingLinkType":{"anyOf":[{"type":"string","enum":["direct","venue"]},{"type":"null"}]}},"required":["venue","court","sport","date","startsAt","endsAt","durationMinutes","price","dataUpdatedAt","dataStatus","venueUrl","bookingUrl","bookingLinkType"],"additionalProperties":false}},"meta":{"type":"object","properties":{"requestId":{"type":"string"},"generatedAt":{"type":"string"},"timezone":{"type":"string"},"usage":{"type":"object","properties":{"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"used":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"remaining":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"resetsAt":{"type":"string"},"unitsConsumed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["limit","used","remaining","resetsAt","unitsConsumed"],"additionalProperties":false},"nextCursor":{"type":["string","null"]},"coverage":{"type":"object","properties":{"status":{"type":"string","enum":["complete","partial","unavailable","not_applicable"]},"days":{"type":"array","items":{"type":"object","properties":{"date":{"type":"string"},"status":{"type":"string","enum":["complete","partial","unavailable","not_applicable"]},"reason":{"type":"string","enum":["past","no_venues"]},"venues":{"type":"object","properties":{"complete":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"partial":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"unavailable":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"notApplicable":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["complete","partial","unavailable","notApplicable"],"additionalProperties":false},"excluded":{"type":"array","items":{"type":"object","properties":{"venueSlug":{"type":"string"},"status":{"type":"string","enum":["complete","partial","unavailable","not_applicable"]},"reason":{"type":"string","enum":["off_season","stale","error","manual","pending","unknown","no_data","filters_excluded","no_courts"]}},"required":["venueSlug","status","reason"],"additionalProperties":false}}},"required":["date","status","venues","excluded"],"additionalProperties":false}}},"required":["status","days"],"additionalProperties":false}},"required":["requestId","generatedAt","timezone","nextCursor","coverage"],"additionalProperties":false}},"required":["data","meta"],"additionalProperties":false},"FavoritesResponse":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"slug":{"type":"string"},"name":{"type":"string"},"metro":{"type":"string"},"district":{"type":["string","null"]},"address":{"type":["string","null"]},"city":{"type":"string"},"location":{"anyOf":[{"type":"object","properties":{"latitude":{"type":"number"},"longitude":{"type":"number"}},"required":["latitude","longitude"],"additionalProperties":false},{"type":"null"}]},"sports":{"type":"array","items":{"type":"string","enum":["tennis","padel","squash","badminton"]}},"courtsCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"priceFromCzkPerHour":{"type":["number","null"]},"bookingUrl":{"type":["string","null"]},"bookingLinkType":{"anyOf":[{"type":"string","enum":["direct","venue"]},{"type":"null"}]},"url":{"type":"string"},"data":{"type":"object","properties":{"status":{"type":"string","enum":["live","stale","error","manual","pending","off_season","unknown"]},"updatedAt":{"type":["string","null"]}},"required":["status","updatedAt"],"additionalProperties":false}},"required":["slug","name","metro","district","address","city","location","sports","courtsCount","priceFromCzkPerHour","bookingUrl","bookingLinkType","url","data"],"additionalProperties":false}},"meta":{"type":"object","properties":{"requestId":{"type":"string"},"generatedAt":{"type":"string"},"timezone":{"type":"string"},"usage":{"type":"object","properties":{"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"used":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"remaining":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"resetsAt":{"type":"string"},"unitsConsumed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["limit","used","remaining","resetsAt","unitsConsumed"],"additionalProperties":false},"nextCursor":{"type":["string","null"]}},"required":["requestId","generatedAt","timezone","nextCursor"],"additionalProperties":false}},"required":["data","meta"],"additionalProperties":false},"AccessResponse":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"data":{"type":"object","properties":{"scopes":{"type":"array","items":{"type":"string"}},"tokenExpiresAt":{"type":"string"},"quota":{"type":"object","properties":{"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"used":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"remaining":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"resetsAt":{"type":"string"}},"required":["limit","used","remaining","resetsAt"],"additionalProperties":false}},"required":["scopes","tokenExpiresAt","quota"],"additionalProperties":false},"meta":{"type":"object","properties":{"requestId":{"type":"string"},"generatedAt":{"type":"string"},"timezone":{"type":"string"},"usage":{"type":"object","properties":{"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"used":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"remaining":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"resetsAt":{"type":"string"},"unitsConsumed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["limit","used","remaining","resetsAt","unitsConsumed"],"additionalProperties":false}},"required":["requestId","generatedAt","timezone"],"additionalProperties":false}},"required":["data","meta"],"additionalProperties":false},"Error":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"requestId":{"type":"string"},"details":{}},"required":["code","message","requestId"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}