{"info":{"title":"ServiceBox — Elektrikli Araç Şarj API","version":"1.0.0","description":"Electric-vehicle charging stations across Turkey: socket types, power, prices per kWh in Turkish lira and availability, searchable by city, district, brand, socket type, price range or location, plus mobile charging units. Station search needs at least one narrowing filter; a search without one is refused with a `400` before the source is called, and is not charged. Answers follow the ServiceBox response style: collections answer `{ items, next_cursor, total }` (plus `meta` for query context); every sarj list comes whole in one answer, so `next_cursor` is always null. Single results (a station, the day's price range) are bare objects. Every answer carries `X-SBX-Response-Style: 1`. The source's own request quota is tight: a `429` may come from it; retry after `Retry-After`. Only the city list is confirmed against the live source; the other shapes are provisional until the shape check at registration (docs/launch.md §8). Responses carry an ETag; send it back in If-None-Match on the same URL to revalidate cheaply."},"paths":{"/v1/ev-charging/brands":{"get":{"tags":["Reference"],"summary":"List network brands","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrandList"},"example":{"items":[{"id":"1","name":"Example Network","registrationNo":"ŞH/0-0/0"}],"total":1,"next_cursor":null}}},"headers":{"ETag":{"$ref":"#/components/headers/ETag"}},"description":"Charging-network brands."},"304":{"$ref":"#/components/responses/NotModified"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/PaymentRequired"},"429":{"$ref":"#/components/responses/TooManyRequests"},"502":{"$ref":"#/components/responses/BadGateway"},"503":{"$ref":"#/components/responses/ServiceUnavailable"},"504":{"$ref":"#/components/responses/GatewayTimeout"}},"parameters":[{"$ref":"#/components/parameters/IfNoneMatch"}],"description":"Charging-network brands as `{ id, name, registrationNo }`. Not paginated. Provisional — confirmed by the shape check at registration (docs/launch.md §8).","operationId":"listBrands","x-sbx-credits":0}},"/v1/ev-charging/cities":{"get":{"tags":["Reference"],"summary":"List cities","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CityList"},"example":{"items":[{"id":"6","name":"ANKARA","cityCode":6}],"total":81,"next_cursor":null}}},"headers":{"ETag":{"$ref":"#/components/headers/ETag"}},"description":"Provinces."},"304":{"$ref":"#/components/responses/NotModified"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/PaymentRequired"},"429":{"$ref":"#/components/responses/TooManyRequests"},"502":{"$ref":"#/components/responses/BadGateway"},"503":{"$ref":"#/components/responses/ServiceUnavailable"},"504":{"$ref":"#/components/responses/GatewayTimeout"}},"parameters":[{"$ref":"#/components/parameters/IfNoneMatch"}],"description":"All provinces with their ids and official codes. Not paginated: the whole list in one answer.","operationId":"listCities","x-sbx-credits":0}},"/v1/ev-charging/stations":{"get":{"tags":["Stations"],"summary":"Search charging stations","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StationSearchResult"},"example":{"meta":{"filter":{"cities":["6"],"socketTypes":["DC_CCS"]}},"items":[{"id":"14585526","name":"Example Charging Station","brand":"Example Network","address":"Example Mah. No:1 Çankaya/Ankara","location":{"lat":39.9208,"lon":32.8541}}],"total":1,"next_cursor":null}}},"headers":{"ETag":{"$ref":"#/components/headers/ETag"}},"description":"Matching stations."},"304":{"$ref":"#/components/responses/NotModified"},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/PaymentRequired"},"422":{"$ref":"#/components/responses/UnprocessableContent"},"429":{"$ref":"#/components/responses/TooManyRequests"},"502":{"$ref":"#/components/responses/BadGateway"},"503":{"$ref":"#/components/responses/ServiceUnavailable"},"504":{"$ref":"#/components/responses/GatewayTimeout"}},"parameters":[{"in":"query","name":"text","schema":{"type":"string"},"description":"Free-text search over station name and address."},{"in":"query","name":"socketTypes","schema":{"type":"string","example":"DC_CCS"},"description":"Comma-separated socket types: `AC_TYPE2`, `DC_CCS`, `DC_CHADEMO`."},{"in":"query","name":"available","schema":{"type":"boolean"},"description":"Boolean filter. Only together with another filter."},{"in":"query","name":"compatibleStations","schema":{"type":"boolean"},"description":"Boolean filter. Only together with another filter."},{"in":"query","name":"networkOperators","schema":{"type":"string"},"description":"Comma-separated network operator ids."},{"in":"query","name":"networkOperatorBrands","schema":{"type":"string"},"description":"Comma-separated brand ids (`id` from `/v1/ev-charging/brands`)."},{"in":"query","name":"cities","schema":{"type":"string","example":"Ankara"},"description":"Comma-separated city ids or names."},{"in":"query","name":"districts","schema":{"type":"string"},"description":"Comma-separated district ids; district names require `cities`."},{"in":"query","name":"green","schema":{"type":"boolean"},"description":"Boolean filter. Only together with another filter."},{"in":"query","name":"latitude","schema":{"type":"number","maximum":90,"minimum":-90},"description":"Latitude of a coordinate search (WGS84), with `longitude`."},{"in":"query","name":"longitude","schema":{"type":"number","maximum":180,"minimum":-180},"description":"Longitude of a coordinate search (WGS84), with `latitude`."},{"in":"query","name":"distance","schema":{"type":"number","default":10},"description":"Radius of a coordinate search, in kilometres."},{"in":"query","name":"startPrice","schema":{"type":"number"},"description":"Lowest price in TL/kWh. Goes together with `endPrice`."},{"in":"query","name":"endPrice","schema":{"type":"number"},"description":"Highest price in TL/kWh. Goes together with `startPrice`."},{"$ref":"#/components/parameters/IfNoneMatch"}],"description":"Stations matching the filters, with the applied filters in `meta.filter`. Not paginated: every match comes in one answer. At least one narrowing filter is required: `text`, `socketTypes`, `networkOperators`, `networkOperatorBrands`, `cities`, `districts` (as ids; district names need `cities`), numeric `latitude` with `longitude`, or numeric `startPrice` with `endPrice`. `available`, `compatibleStations` and `green` do not narrow enough on their own: combine them with another filter. `startPrice` and `endPrice` go together. A search without a narrowing filter, or with only one of the prices, is answered `400` by ServiceBox without calling the source, and is not charged. A coordinate search uses `latitude`, `longitude` and `distance` (kilometres, default 10). Provisional — confirmed by the shape check at registration (docs/launch.md §8).","operationId":"searchStations","x-sbx-credits":2}},"/v1/ev-charging/districts":{"get":{"tags":["Reference"],"summary":"List the districts of a city","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DistrictList"},"example":{"meta":{"city":{"id":"6","name":"ANKARA"}},"items":[{"id":"58","name":"AKYURT","cityId":"6","districtCode":"1872"}],"total":25,"next_cursor":null}}},"headers":{"ETag":{"$ref":"#/components/headers/ETag"}},"description":"The districts of the city."},"304":{"$ref":"#/components/responses/NotModified"},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/PaymentRequired"},"429":{"$ref":"#/components/responses/TooManyRequests"},"502":{"$ref":"#/components/responses/BadGateway"},"503":{"$ref":"#/components/responses/ServiceUnavailable"},"504":{"$ref":"#/components/responses/GatewayTimeout"}},"parameters":[{"$ref":"#/components/parameters/City"},{"$ref":"#/components/parameters/IfNoneMatch"}],"description":"The districts of one city, with the city in `meta.city`. Not paginated. Provisional — confirmed by the shape check at registration (docs/launch.md §8).","operationId":"listDistricts","x-sbx-credits":0}},"/v1/ev-charging/mobile-units":{"get":{"tags":["Stations"],"summary":"List mobile charging units","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MobileStationList"},"example":{"meta":{"filter":{"cities":["İSTANBUL"]}},"items":[{"id":"14804101","name":"Example Mobile Unit İstanbul-1","brand":"Example Network","phone":"+908500000000","cities":["İSTANBUL"]}],"total":1,"next_cursor":null}}},"headers":{"ETag":{"$ref":"#/components/headers/ETag"}},"description":"Mobile charging units."},"304":{"$ref":"#/components/responses/NotModified"},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/PaymentRequired"},"429":{"$ref":"#/components/responses/TooManyRequests"},"502":{"$ref":"#/components/responses/BadGateway"},"503":{"$ref":"#/components/responses/ServiceUnavailable"},"504":{"$ref":"#/components/responses/GatewayTimeout"}},"parameters":[{"in":"query","name":"cities","schema":{"type":"string","example":"İSTANBUL"},"required":true,"description":"Comma-separated city ids or names."},{"$ref":"#/components/parameters/IfNoneMatch"}],"description":"Mobile charging units serving one or more cities, with the applied filter in `meta.filter`. Not paginated. Provisional — confirmed by the shape check at registration (docs/launch.md §8).","operationId":"listMobileStations","x-sbx-credits":1}},"/v1/ev-charging/stations/{id}":{"get":{"tags":["Stations"],"summary":"Get a charging station","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StationDetail"},"example":{"id":"14585526","name":"Example Charging Station","brand":"Example Network","green":true,"phone":"+903120000000","cityId":"6","address":"Example Mah. No:1 Çankaya/Ankara","sockets":[{"id":"1","type":"DC_CCS","powerKw":120,"currency":"TRY","pricePerKwh":12.49,"availability":[{"to":"23:59","from":"00:00","available":true}],"priceWindows":[{"to":"08:00","from":"00:00","pricePerKwh":9.99}]}],"location":{"lat":39.9208,"lon":32.8541},"operator":{"id":"12","name":"Example Operator"},"districtId":"61","serviceType":"PUBLIC","paymentTypes":["CREDIT_CARD","APP"]}}},"headers":{"ETag":{"$ref":"#/components/headers/ETag"}},"description":"The station."},"304":{"$ref":"#/components/responses/NotModified"},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/PaymentRequired"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/UnprocessableContent"},"429":{"$ref":"#/components/responses/TooManyRequests"},"502":{"$ref":"#/components/responses/BadGateway"},"503":{"$ref":"#/components/responses/ServiceUnavailable"},"504":{"$ref":"#/components/responses/GatewayTimeout"}},"parameters":[{"in":"path","name":"id","schema":{"type":"string","pattern":"^\\d+$"},"required":true,"description":"Station id (`id` from a station search)."},{"$ref":"#/components/parameters/Date"},{"$ref":"#/components/parameters/IfNoneMatch"}],"description":"Full station detail as a bare object: location, E.164 phone, operator, and sockets with connector type, power in kW, price per kWh, price windows and availability windows, plus payment types. An unknown id is a `404 not_found`. Provisional — confirmed by the shape check at registration (docs/launch.md §8).","operationId":"getStation","x-sbx-credits":1}},"/v1/ev-charging/stations/price-range":{"get":{"tags":["Stations"],"summary":"Get the day's price range","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PriceRange"},"example":{"date":"2026-09-22","currency":"TRY","maxPricePerKwh":16.49,"minPricePerKwh":0}}},"headers":{"ETag":{"$ref":"#/components/headers/ETag"}},"description":"The price range."},"304":{"$ref":"#/components/responses/NotModified"},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/PaymentRequired"},"429":{"$ref":"#/components/responses/TooManyRequests"},"502":{"$ref":"#/components/responses/BadGateway"},"503":{"$ref":"#/components/responses/ServiceUnavailable"},"504":{"$ref":"#/components/responses/GatewayTimeout"}},"parameters":[{"$ref":"#/components/parameters/Date"},{"$ref":"#/components/parameters/IfNoneMatch"}],"description":"The lowest and highest charging price per kWh for a date, as a bare object. `0` is free charging, a real price. Provisional — confirmed by the shape check at registration (docs/launch.md §8).","operationId":"getPriceRange","x-sbx-credits":1}}},"openapi":"3.1.0","servers":[{"url":"https://api.servicebox.io"}],"security":[{"bearerAuth":[]},{"apiKeyQuery":[]}],"components":{"headers":{"ETag":{"schema":{"type":"string"},"description":"Opaque entity tag of this representation. Send it back in `If-None-Match` on the same URL to revalidate."}},"schemas":{"City":{"type":"object","required":["id","name","cityCode"],"properties":{"id":{"type":"string","description":"City id, as a string. `city`/`cities` accept it."},"name":{"type":"string","description":"Name, uppercase."},"cityCode":{"type":"integer","description":"Official province (plate) code."}},"description":"A city (province)."},"Brand":{"type":"object","required":["id","name","registrationNo"],"properties":{"id":{"type":"string","description":"Brand id, as a string. `networkOperatorBrands` accepts it."},"name":{"type":"string","description":"Brand name."},"registrationNo":{"type":["string","null"],"description":"Registration number, or null."}},"description":"A charging-network brand. Provisional — confirmed by the shape check at registration (docs/launch.md §8)."},"Socket":{"type":"object","required":["id","type","powerKw","pricePerKwh","currency","priceWindows","availability"],"properties":{"id":{"type":["string","null"],"description":"Socket id, or null."},"type":{"type":"string","description":"Connector type, e.g. `AC_TYPE2`, `DC_CCS`, `DC_CHADEMO`."},"powerKw":{"type":["number","null"],"description":"Power in kW, or null."},"currency":{"type":"string","const":"TRY","description":"Currency of every price."},"pricePerKwh":{"type":["number","null"],"description":"Current price per kWh in `currency`, or null. `0` is free charging."},"availability":{"type":"array","items":{"$ref":"#/components/schemas/AvailabilityWindow"},"description":"Availability by time of day for the requested date; empty when none is given."},"priceWindows":{"type":"array","items":{"$ref":"#/components/schemas/PriceWindow"},"description":"Prices by time of day for the requested date; empty when none are given."}},"description":"A charging socket. Provisional — confirmed by the shape check at registration (docs/launch.md §8): the upstream does not document its socket keys; unknown ones are dropped."},"Problem":{"type":"object","required":["type","title","status","detail"],"properties":{"type":{"type":"string","format":"uri","description":"A URI identifying the problem type."},"title":{"type":"string","description":"Short, human-readable summary of the problem type."},"detail":{"type":"string","description":"Human-readable explanation specific to this occurrence."},"status":{"type":"integer","description":"HTTP status code."},"upstream_status":{"type":"integer","description":"The upstream's HTTP status, on problems caused by an upstream answer."}},"description":"RFC 9457 problem detail."},"CityList":{"type":"object","required":["items","next_cursor","total"],"properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/City"}},"total":{"type":"integer","description":"How many cities there are."},"next_cursor":{"type":["string","null"],"description":"Always null: the whole list comes in one answer."}}},"District":{"type":"object","required":["id","name","cityId","districtCode"],"properties":{"id":{"type":"string","description":"District id, as a string. `districts` accepts it."},"name":{"type":"string","description":"Name, uppercase."},"cityId":{"type":"string","description":"Id of the district's city."},"districtCode":{"type":"string","description":"Official district code, as a string."}},"description":"A district. Provisional — confirmed by the shape check at registration (docs/launch.md §8)."},"Location":{"type":["object","null"],"required":["lat","lon"],"properties":{"lat":{"type":"number","description":"Latitude, WGS 84."},"lon":{"type":"number","description":"Longitude, WGS 84."}},"description":"Coordinates (WGS 84), or null when the upstream gives none (or unusable ones). The upstream may send them as numeric strings; they are always published as numbers."},"BrandList":{"type":"object","required":["items","next_cursor","total"],"properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Brand"}},"total":{"type":"integer","description":"How many brands there are."},"next_cursor":{"type":["string","null"],"description":"Always null: the whole list comes in one answer."}},"description":"Charging-network brands. Provisional — confirmed by the shape check at registration (docs/launch.md §8). The upstream envelope (`{ count?, data[] }` or a bare array) is not documented."},"PriceRange":{"type":"object","required":["date","minPricePerKwh","maxPricePerKwh","currency"],"properties":{"date":{"type":"string","format":"date","description":"The priced day, `YYYY-MM-DD`."},"currency":{"type":"string","const":"TRY","description":"Currency of both prices."},"maxPricePerKwh":{"type":"number","description":"Highest price per kWh in `currency` that day."},"minPricePerKwh":{"type":"number","description":"Lowest price per kWh in `currency` that day. `0` is free charging, a real price."}},"description":"The day's charging price range. Provisional — confirmed by the shape check at registration (docs/launch.md §8)."},"FilterValue":{"oneOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"array","items":{"type":"string"}}],"description":"An applied filter value: a string, a number, a boolean or a list of strings."},"PriceWindow":{"type":"object","required":["from","to","pricePerKwh"],"properties":{"to":{"type":"string","description":"End of the window, local time (`HH:mm`)."},"from":{"type":"string","description":"Start of the window, local time (`HH:mm`)."},"pricePerKwh":{"type":"number","description":"Price per kWh in the socket's `currency` within the window."}},"description":"A time window with its own price. Provisional — confirmed by the shape check at registration (docs/launch.md §8)."},"DistrictList":{"type":"object","required":["items","next_cursor","total","meta"],"properties":{"meta":{"type":"object","required":["city"],"properties":{"city":{"type":"object","required":["id","name"],"properties":{"id":{"type":"string","description":"City id."},"name":{"type":"string","description":"City name, uppercase."}},"description":"The city whose districts these are."}}},"items":{"type":"array","items":{"$ref":"#/components/schemas/District"}},"total":{"type":"integer","description":"How many districts the city has."},"next_cursor":{"type":["string","null"],"description":"Always null: the whole list comes in one answer."}},"description":"The districts of one city. Provisional — confirmed by the shape check at registration (docs/launch.md §8)."},"AppliedFilter":{"type":"object","properties":{"text":{"$ref":"#/components/schemas/FilterValue"},"green":{"$ref":"#/components/schemas/FilterValue"},"cities":{"$ref":"#/components/schemas/FilterValue"},"distance":{"$ref":"#/components/schemas/FilterValue"},"endPrice":{"$ref":"#/components/schemas/FilterValue"},"latitude":{"$ref":"#/components/schemas/FilterValue"},"available":{"$ref":"#/components/schemas/FilterValue"},"districts":{"$ref":"#/components/schemas/FilterValue"},"longitude":{"$ref":"#/components/schemas/FilterValue"},"startPrice":{"$ref":"#/components/schemas/FilterValue"},"socketTypes":{"$ref":"#/components/schemas/FilterValue"},"networkOperators":{"$ref":"#/components/schemas/FilterValue"},"compatibleStations":{"$ref":"#/components/schemas/FilterValue"},"networkOperatorBrands":{"$ref":"#/components/schemas/FilterValue"}},"description":"The filters the search applied, as the source resolved them (city names become ids). Only these keys are published; any other is dropped. Provisional — confirmed by the shape check at registration (docs/launch.md §8).","additionalProperties":false},"MobileStation":{"type":"object","required":["id","name","brand","phone","cities"],"properties":{"id":{"type":"string","description":"Unit id, as a string."},"name":{"type":"string","description":"Unit name."},"brand":{"type":["string","null"],"description":"Network brand, or null."},"phone":{"type":["string","null"],"description":"Phone to book the unit in E.164 (`+90…`), or null."},"cities":{"type":"array","items":{"type":"string"},"description":"Cities the unit serves."}},"description":"A mobile charging unit. Provisional — confirmed by the shape check at registration (docs/launch.md §8)."},"StationDetail":{"type":"object","required":["id","name","address","location","phone","brand","operator","cityId","districtId","serviceType","green","sockets","paymentTypes"],"properties":{"id":{"type":"string","description":"Station id, as a string."},"name":{"type":"string","description":"Station name."},"brand":{"type":["string","null"],"description":"Network brand, or null."},"green":{"type":["boolean","null"],"description":"Whether the station charges with green energy, or null."},"phone":{"type":["string","null"],"description":"Phone in E.164 (`+90…`), or null."},"cityId":{"type":["string","null"],"description":"City id, or null."},"address":{"type":["string","null"],"description":"Address, or null."},"sockets":{"type":"array","items":{"$ref":"#/components/schemas/Socket"},"description":"The station's sockets."},"location":{"$ref":"#/components/schemas/Location"},"operator":{"oneOf":[{"type":"object","required":["id","name"],"properties":{"id":{"type":["string","null"],"description":"Operator id, or null."},"name":{"type":["string","null"],"description":"Operator name, or null."}}},{"type":"null"}],"description":"The network operator, or null when the upstream names none."},"districtId":{"type":["string","null"],"description":"District id, or null."},"serviceType":{"type":["string","null"],"description":"Service type as the source states it, e.g. `PUBLIC`, or null."},"paymentTypes":{"type":"array","items":{"type":"string"},"description":"Accepted payment types, e.g. `CREDIT_CARD`, `APP`. Provisional — confirmed by the shape check at registration (docs/launch.md §8)."}},"description":"Full station detail. Provisional — confirmed by the shape check at registration (docs/launch.md §8). The upstream's licence and station status fields are not published."},"StationSummary":{"type":"object","required":["id","name","address","brand","location"],"properties":{"id":{"type":"string","description":"Station id, as a string. `/v1/ev-charging/stations/{id}` takes it."},"name":{"type":"string","description":"Station name."},"brand":{"type":["string","null"],"description":"Network brand, or null."},"address":{"type":["string","null"],"description":"Address, or null."},"location":{"$ref":"#/components/schemas/Location"}},"description":"A station found by a search. Provisional — confirmed by the shape check at registration (docs/launch.md §8)."},"MobileStationList":{"type":"object","required":["items","next_cursor","total","meta"],"properties":{"meta":{"type":"object","required":["filter"],"properties":{"filter":{"$ref":"#/components/schemas/AppliedFilter"}},"description":"Query context."},"items":{"type":"array","items":{"$ref":"#/components/schemas/MobileStation"}},"total":{"type":"integer","description":"How many units serve the cities."},"next_cursor":{"type":["string","null"],"description":"Always null: the whole list comes in one answer."}},"description":"Mobile charging units. Not paged. Provisional — confirmed by the shape check at registration (docs/launch.md §8)."},"AvailabilityWindow":{"type":"object","required":["from","to","available"],"properties":{"to":{"type":"string","description":"End of the window, local time (`HH:mm`)."},"from":{"type":"string","description":"Start of the window, local time (`HH:mm`)."},"available":{"type":["boolean","null"],"description":"Whether the socket is available in the window, or null when unknown."}},"description":"A time window of availability. Provisional — confirmed by the shape check at registration (docs/launch.md §8)."},"StationSearchResult":{"type":"object","required":["items","next_cursor","total","meta"],"properties":{"meta":{"type":"object","required":["filter"],"properties":{"filter":{"$ref":"#/components/schemas/AppliedFilter"}},"description":"Query context."},"items":{"type":"array","items":{"$ref":"#/components/schemas/StationSummary"}},"total":{"type":"integer","description":"How many stations match."},"next_cursor":{"type":["string","null"],"description":"Always null: the whole list comes in one answer."}},"description":"Stations matching the filters. Not paged: every match comes in one answer. Provisional — confirmed by the shape check at registration (docs/launch.md §8)."}},"responses":{"NotFound":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"},"example":{"type":"https://servicebox.io/problems/not_found","title":"Not Found","detail":"Station not found","status":404,"upstream_status":404}}},"description":"`not_found`: no station has this id. An id that is not a number is answered `404` by ServiceBox without calling the source, and is not charged."},"BadGateway":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"},"examples":{"upstream_auth":{"value":{"type":"https://servicebox.io/problems/upstream_auth","title":"Bad Gateway","detail":"The upstream refused ServiceBox's own credential; this is not about your API key. Retry later.","status":502,"upstream_status":401}},"upstream_error":{"value":{"type":"https://servicebox.io/problems/upstream_error","title":"Bad Gateway","detail":"The upstream failed (500)","status":502,"upstream_status":500}},"upstream_shape":{"value":{"type":"https://servicebox.io/problems/upstream_shape","title":"Bad Gateway","detail":"The upstream's answer did not match its documented shape; you were not charged. Retry later.","status":502}}}}},"description":"`upstream_error`: the upstream data source failed. `upstream_auth`: the upstream refused ServiceBox's own credential; not your key. `upstream_shape`: the upstream's answer did not match its documented shape; you were not charged."},"BadRequest":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"},"example":{"type":"https://servicebox.io/problems/bad_request","title":"Bad Request","detail":"city is required","status":400,"upstream_status":400}}},"description":"Missing, malformed or unknown query input: an unknown city, a missing `city`/`cities`, or a station search without a narrowing filter (answered by ServiceBox without calling the source, and not charged)."},"NotModified":{"headers":{"ETag":{"$ref":"#/components/headers/ETag"}},"description":"The representation has not changed since the ETag in `If-None-Match`. No body."},"Unauthorized":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"},"example":{"type":"https://servicebox.io/problems/unauthorized","title":"Unauthorized","detail":"Missing or invalid API key/bearer token","status":401}}},"description":"Missing or invalid credentials."},"GatewayTimeout":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"},"example":{"type":"https://servicebox.io/problems/upstream_timeout","title":"Gateway Timeout","detail":"The upstream did not answer within 5000 ms","status":504}}},"description":"The upstream data source timed out."},"PaymentRequired":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"},"example":{"type":"https://servicebox.io/problems/payment_required","title":"Payment Required","detail":"Insufficient credits for this request","status":402}}},"description":"Insufficient credits."},"TooManyRequests":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"},"example":{"type":"https://servicebox.io/problems/rate_limited","title":"Too Many Requests","detail":"Rate limit exceeded, retry after backing off","status":429}}},"description":"Rate limit exceeded: yours, or the data source's own request quota, which is tight. Retry after `Retry-After` seconds."},"ServiceUnavailable":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"},"example":{"type":"https://servicebox.io/problems/service_unavailable","title":"Service Unavailable","detail":"The upstream is unavailable","status":503}}},"description":"The upstream is temporarily unavailable."},"UnprocessableContent":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"},"example":{"type":"https://servicebox.io/problems/upstream_error","title":"Unprocessable Content","detail":"The requested query could not be fulfilled","status":422,"upstream_status":422}}},"description":"The query could not be fulfilled."}},"parameters":{"City":{"in":"query","name":"city","schema":{"type":"string"},"required":true,"description":"City id or name, case- and Turkish-character-insensitive."},"Date":{"in":"query","name":"date","schema":{"type":"string","format":"date","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"description":"Day to price, `YYYY-MM-DD`. Defaults to today in Europe/Istanbul. Anything but a real calendar date is a `400`, answered without calling the source and not charged."},"IfNoneMatch":{"in":"header","name":"If-None-Match","schema":{"type":"string"},"description":"ETag from a previous response to the same URL. When it still matches, the answer is 304 with no body."}},"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer"},"apiKeyQuery":{"in":"query","name":"apikey","type":"apiKey"}}}}