{"info":{"title":"ServiceBox — Nutrition API","version":"1.0.0","description":"Calories and nutrients per 100 g for about 7,800 foods — vegetables, fruits, grains, legumes, dairy, meat, fish, baked goods, drinks and more — searchable in Turkish and English: energy, protein, fat (saturated, trans, omega-3), carbohydrate, sugars, fibre, salt, 9 minerals and 13 vitamins, household portions with their weight, and a calculator for meals and recipes. Collections answer `{ items, next_cursor, total }`; page with `limit` (1–200, default 50) and `cursor` (pass back `next_cursor` with the same filters). Errors are RFC 9457 problems. Every answer has an ETag: send it back in `If-None-Match` for a `304` while the data is unchanged.\n\nSource: U.S. Department of Agriculture, Agricultural Research Service, FoodData Central, SR Legacy (public domain). Turkish names and portion descriptions are ServiceBox's translations. Informational only; not dietary or medical advice."},"paths":{"/v1/nutrition/foods":{"get":{"summary":"Search foods","responses":{"200":{"content":{"application/json":{"schema":{"type":"object","required":["items","next_cursor","total","meta"],"properties":{"meta":{"type":"object","properties":{"per":{"type":"string"},"note":{"type":"string"},"source":{"type":"string"}}},"items":{"type":"array","items":{"$ref":"#/components/schemas/NutritionFood"}},"total":{"type":"integer"},"next_cursor":{"type":["string","null"],"description":"Pass back as `cursor` for the next page; null on the last page."}}}}},"headers":{"ETag":{"schema":{"type":"string"}}},"description":"The foods."},"304":{"description":"Not modified."},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Invalid parameters."},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/PaymentRequired"},"429":{"$ref":"#/components/responses/TooManyRequests"},"502":{"$ref":"#/components/responses/BadGateway"},"504":{"$ref":"#/components/responses/GatewayTimeout"}},"parameters":[{"in":"query","name":"q","schema":{"type":"string"},"required":false,"description":"Words to find at the start of words of the Turkish or English names, Turkish letters optional."},{"in":"query","name":"category","schema":{"type":"string"},"required":false,"description":"A category id from /nutrition/categories, e.g. vegetables."},{"in":"query","name":"limit","schema":{"type":"integer","default":50,"maximum":200,"minimum":1},"required":false,"description":"Items per page, 1–200."},{"in":"query","name":"cursor","schema":{"type":"string"},"required":false,"description":"The `next_cursor` of the previous page, with the same filters."},{"in":"header","name":"If-None-Match","schema":{"type":"string"},"required":false,"description":"An ETag from a previous answer; 304 while unchanged."}],"description":"About 7,800 foods with calories, protein, fat, carbohydrate, sugars, fibre and salt per 100 g. Search with `q` in Turkish or English (Turkish letters optional: `domates`, `tomato`, `tavuk gogsu`, `beyaz peynir`); the everyday food comes first (raw before prepared). Narrow with `category`. Use when the user asks how many calories or how much protein, fat or carbohydrate a food has, or to find a food's id for /nutrition/foods/{id} or /nutrition/calculate.","operationId":"searchFoods","x-sbx-credits":1}},"/v1/nutrition/calculate":{"get":{"summary":"Calculate a meal or recipe","responses":{"200":{"content":{"application/json":{"schema":{"type":"object","required":["items","next_cursor","total","meta"],"properties":{"meta":{"type":"object","properties":{"note":{"type":"string"},"grams":{"type":"number"},"source":{"type":"string"},"totals":{"type":"object","additionalProperties":{"type":"number"}},"partial":{"type":"array","items":{"type":"string"}}}},"items":{"type":"array","items":{"$ref":"#/components/schemas/NutritionItem"}},"total":{"type":"integer"},"next_cursor":{"type":["string","null"],"description":"Pass back as `cursor` for the next page; null on the last page."}}}}},"headers":{"ETag":{"schema":{"type":"string"}}},"description":"The items and totals."},"304":{"description":"Not modified."},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Invalid parameters."},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/PaymentRequired"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Not found."},"429":{"$ref":"#/components/responses/TooManyRequests"},"502":{"$ref":"#/components/responses/BadGateway"},"504":{"$ref":"#/components/responses/GatewayTimeout"}},"parameters":[{"in":"query","name":"items","schema":{"type":"string"},"required":true,"description":"e.g. `domates:150,beyaz peynir:50,zeytinyağı:10g` or `170457:150`."},{"in":"header","name":"If-None-Match","schema":{"type":"string"},"required":false,"description":"An ETag from a previous answer; 304 while unchanged."}],"description":"The nutrients of a meal or recipe: `items` lists `<food>:<grams>` pairs, comma-separated (up to 30). A food is an id or a name (the best match is used and named in the answer, so check it); grams as `150`, `150g` or `1.5kg`. Answers each item's amounts and `meta.totals`; `meta.partial` lists nutrients some item had no value for (their totals add the known ones). Use when the user asks for the calories or macros of a dish, a recipe or a day's meals.","operationId":"calculateMeal","x-sbx-credits":1}},"/v1/nutrition/nutrients":{"get":{"summary":"List nutrients","responses":{"200":{"content":{"application/json":{"schema":{"type":"object","required":["items","next_cursor","total"],"properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Nutrient"}},"total":{"type":"integer"},"next_cursor":{"type":["string","null"],"description":"Pass back as `cursor` for the next page; null on the last page."}}}}},"headers":{"ETag":{"schema":{"type":"string"}}},"description":"The nutrients."},"304":{"description":"Not modified."},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/PaymentRequired"},"429":{"$ref":"#/components/responses/TooManyRequests"},"502":{"$ref":"#/components/responses/BadGateway"},"504":{"$ref":"#/components/responses/GatewayTimeout"}},"parameters":[{"in":"header","name":"If-None-Match","schema":{"type":"string"},"required":false,"description":"An ETag from a previous answer; 304 while unchanged."}],"description":"The nutrients served — key, English and Turkish name, unit and group — and which of them lists carry. Free.","operationId":"listNutrients","x-sbx-credits":0}},"/v1/nutrition/categories":{"get":{"summary":"List food categories","responses":{"200":{"content":{"application/json":{"schema":{"type":"object","required":["items","next_cursor","total"],"properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/NutritionCategory"}},"total":{"type":"integer"},"next_cursor":{"type":["string","null"],"description":"Pass back as `cursor` for the next page; null on the last page."}}}}},"headers":{"ETag":{"schema":{"type":"string"}}},"description":"The categories."},"304":{"description":"Not modified."},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/PaymentRequired"},"429":{"$ref":"#/components/responses/TooManyRequests"},"502":{"$ref":"#/components/responses/BadGateway"},"504":{"$ref":"#/components/responses/GatewayTimeout"}},"parameters":[{"in":"header","name":"If-None-Match","schema":{"type":"string"},"required":false,"description":"An ETag from a previous answer; 304 while unchanged."}],"description":"The 25 food categories (vegetables, fruits, legumes, dairy and eggs, meats, fish…) in English and Turkish with how many foods each has. Free.","operationId":"listFoodCategories","x-sbx-credits":0}},"/v1/nutrition/foods/{id}":{"get":{"summary":"Get a food","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NutritionFoodDetail"}}},"headers":{"ETag":{"schema":{"type":"string"}}},"description":"The food."},"304":{"description":"Not modified."},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Invalid parameters."},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/PaymentRequired"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Not found."},"429":{"$ref":"#/components/responses/TooManyRequests"},"502":{"$ref":"#/components/responses/BadGateway"},"504":{"$ref":"#/components/responses/GatewayTimeout"}},"parameters":[{"in":"path","name":"id","schema":{"type":"integer"},"required":true,"description":"A food id from /nutrition/foods, e.g. 170457."},{"in":"header","name":"If-None-Match","schema":{"type":"string"},"required":false,"description":"An ETag from a previous answer; 304 while unchanged."}],"description":"One food: every nutrient per 100 g (energy, macronutrients, fats incl. saturated, trans, cholesterol and omega-3, sugars, fibre, sodium and salt, 9 minerals, 13 vitamins, caffeine) and its household portions with their weight (e.g. 1 medium tomato = 123 g). Use after a search when the user wants vitamins, minerals or a portion's weight.","operationId":"getFood","x-sbx-credits":1}}},"openapi":"3.1.0","servers":[{"url":"https://api.servicebox.io"}],"security":[{"bearerAuth":[]},{"apiKeyQuery":[]}],"components":{"schemas":{"Bank":{"type":"object","required":["code","ibanBankCode","name"],"properties":{"code":{"type":"string","examples":["0010"]},"name":{"type":"string","examples":["T.C. ZİRAAT BANKASI A.Ş."]},"ibanBankCode":{"type":"string","examples":["00010"]}}},"City":{"type":"object","required":["id","name","asciiName","countryCode","subdivision","population","timezone","elevation","location","isCapital"],"properties":{"id":{"type":"string","examples":["745044"],"description":"GeoNames id."},"name":{"type":"string","examples":["İstanbul"]},"location":{"$ref":"#/components/schemas/Location"},"timezone":{"type":["string","null"],"examples":["Europe/Istanbul"]},"asciiName":{"type":"string","examples":["Istanbul"]},"elevation":{"type":["integer","null"],"description":"Metres."},"isCapital":{"type":"boolean"},"population":{"type":"integer"},"countryCode":{"type":"string","examples":["TR"]},"subdivision":{"type":["object","null"],"required":["id","name"],"properties":{"id":{"type":"string"},"name":{"type":"string"}}}}},"Fund":{"type":"object","required":["code","name","nameEn","type","category","founder","tradedOnTefas","riskLevel","currency","date","price","shares","investors","aum","marketPrice","returns","fees","active"],"properties":{"aum":{"type":["number","null"],"description":"Total fund value, TRY."},"code":{"type":"string","examples":["AAL"],"description":"TEFAS fund code."},"date":{"type":"string","format":"date","description":"The date of the latest price."},"fees":{"type":"object","properties":{"max":{"type":["number","null"]},"applied":{"type":["number","null"]},"expenseCap":{"type":["number","null"]}},"description":"Annual percentages. `applied`: the management fee charged (pension funds: the fund operating expense); `max`: the rate in the fund's by-laws; `expenseCap`: the maximum total expense ratio."},"name":{"type":"string","examples":["ATA PORTFÖY PARA PİYASASI (TL) FONU"],"description":"The official (Turkish) title."},"type":{"enum":["investment","pension","exchange-traded"],"type":"string","description":"`investment`: securities investment funds (incl. hedge/serbest funds); `pension`: private pension (BES) and auto-enrolment (OKS) funds; `exchange-traded`: ETFs."},"price":{"type":"number","description":"Unit share price, TRY."},"active":{"type":"boolean","description":"False when the fund's latest price is more than 7 days older than the newest of its type (closed, merged or no longer priced)."},"nameEn":{"type":"string","description":"TEFAS's English title; the Turkish one when it gives none."},"shares":{"type":["number","null"],"description":"Shares in circulation."},"founder":{"type":["object","null"],"required":["code","name"],"properties":{"code":{"type":"string","examples":["APY"]},"name":{"type":"string"}},"description":"The portfolio management or pension company."},"returns":{"type":"object","properties":{"1m":{"type":["number","null"]},"1y":{"type":["number","null"]},"3m":{"type":["number","null"]},"3y":{"type":["number","null"]},"5y":{"type":["number","null"]},"6m":{"type":["number","null"]},"ytd":{"type":["number","null"]}},"description":"Returns in percent over 1, 3 and 6 months, year to date, 1, 3 and 5 years, as TEFAS computes them; null when the fund is younger than the period."},"category":{"type":["object","null"],"required":["id","name","nameTr"],"properties":{"id":{"type":"string","examples":["para-piyasasi-semsiye-fonu"]},"name":{"type":"string","examples":["Money Market Umbrella Fund"]},"nameTr":{"type":"string","examples":["Para Piyasası Şemsiye Fonu"]}},"description":"The umbrella fund type (investment) or fund kind (pension, ETF), as TEFAS names it."},"currency":{"enum":["TRY"],"type":"string"},"investors":{"type":["integer","null"]},"riskLevel":{"type":["integer","null"],"maximum":7,"minimum":1,"description":"The fund's risk value, 1 (lowest) to 7."},"marketPrice":{"type":["number","null"],"description":"ETFs only: the Borsa İstanbul bulletin price, TRY."},"tradedOnTefas":{"type":["boolean","null"],"description":"Whether the fund can be bought and sold on the TEFAS platform; null for ETFs."}}},"FxRate":{"type":"object","required":["code","name","nameTr"],"properties":{"code":{"type":"string","examples":["USD"]},"name":{"type":"string","examples":["US Dollar"]},"rate":{"type":"number","description":"ECB: 1 EUR in this currency."},"unit":{"type":"integer","description":"TCMB: the rates are for this many units (JPY: 100)."},"nameTr":{"type":"string","examples":["ABD doları"]},"forexBuying":{"type":["number","null"]},"forexSelling":{"type":["number","null"]},"banknoteBuying":{"type":["number","null"]},"banknoteSelling":{"type":["number","null"]}},"description":"TCMB answers carry `unit` and the four TRY rates per `unit` units; ECB answers carry `rate` (1 EUR = rate)."},"Country":{"type":"object","required":["code","iso3","isoNumeric","name","nameTr","flag","continent","population","languages","neighbours","subdivisionCount"],"properties":{"tld":{"type":["string","null"],"examples":[".tr"]},"code":{"type":"string","examples":["TR"],"description":"ISO 3166-1 alpha-2."},"flag":{"type":"string","examples":["🇹🇷"]},"iso3":{"type":"string","examples":["TUR"]},"name":{"type":"string","examples":["Turkey"],"description":"English name."},"nameTr":{"type":"string","examples":["Türkiye"],"description":"Turkish name."},"areaKm2":{"type":["number","null"]},"capital":{"type":["string","null"],"examples":["Ankara"]},"currency":{"type":["object","null"],"required":["code","name","nameTr"],"properties":{"code":{"type":"string","examples":["TRY"]},"name":{"type":["string","null"]},"nameTr":{"type":["string","null"]}}},"continent":{"type":"object","required":["code","name"],"properties":{"code":{"enum":["AF","AN","AS","EU","NA","OC","SA"],"type":"string"},"name":{"type":"string"}}},"languages":{"type":"array","items":{"type":"string"},"examples":[["tr-TR","ku","diq","az","av"]]},"isoNumeric":{"type":"string","examples":["792"]},"neighbours":{"type":"array","items":{"type":"string"},"description":"ISO 3166-1 alpha-2 codes of bordering countries."},"population":{"type":"integer"},"phonePrefix":{"type":["string","null"],"examples":["+90"]},"postalCodeFormat":{"type":["string","null"],"examples":["#####"]},"subdivisionCount":{"type":"integer"}}},"FxPoint":{"type":"object","required":["date"],"properties":{"date":{"type":"string","format":"date"},"rate":{"type":"number"},"unit":{"type":"integer"},"forexBuying":{"type":["number","null"]},"forexSelling":{"type":["number","null"]},"banknoteBuying":{"type":["number","null"]},"banknoteSelling":{"type":["number","null"]}}},"Problem":{"type":"object","required":["type","title","status"],"properties":{"type":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"status":{"type":"integer"}}},"Coverage":{"type":"object","required":["dataVersion","places","ipAddresses"],"properties":{"places":{"type":"object","required":["source","licence","postalCodeCountries"],"properties":{"source":{"type":"string"},"licence":{"type":"string"},"postalCodeCountries":{"type":"array","items":{"type":"string"}}}},"dataVersion":{"type":"string","examples":["20260927"],"description":"The data snapshot, `YYYYMMDD`."},"ipAddresses":{"type":"object","required":["source","licence","level"],"properties":{"level":{"enum":["country"],"type":"string"},"source":{"type":"string"},"licence":{"type":"string"}}}}},"District":{"type":"object","required":["id","name","asciiName","countryCode","subdivision"],"properties":{"id":{"type":"string","examples":["TR.34.7732454"],"description":"Stable id, `<country>.<subdivision code>.<GeoNames id>`."},"name":{"type":"string","examples":["Avcılar"]},"asciiName":{"type":"string","examples":["Avcilar"]},"countryCode":{"type":"string","examples":["TR"]},"subdivision":{"type":"object","required":["id","name"],"properties":{"id":{"type":"string"},"name":{"type":"string"}}}}},"IpLookup":{"type":"object","required":["ip","version","country"],"properties":{"ip":{"type":"string","examples":["88.255.1.1"],"description":"The address, normalized (IPv4-mapped IPv6 as IPv4, IPv6 compressed)."},"country":{"type":["object","null"],"required":["code","name","nameTr"],"properties":{"code":{"type":"string"},"name":{"type":"string"},"nameTr":{"type":"string"}},"description":"Null for reserved, private or unassigned addresses."},"version":{"enum":[4,6],"type":"integer"}}},"Location":{"type":"object","required":["lat","lon"],"properties":{"lat":{"type":"number"},"lon":{"type":"number"}}},"Nutrient":{"type":"object","required":["key","name","nameTr","unit","group","inList"],"properties":{"key":{"type":"string","examples":["energyKcal"]},"name":{"type":"string"},"unit":{"enum":["kcal","kJ","g","mg","µg"],"type":"string"},"group":{"type":"string"},"inList":{"type":"boolean","description":"Whether lists carry it (one food carries every nutrient)."},"nameTr":{"type":"string"}}},"Timezone":{"type":"object","required":["id","cityCount"],"properties":{"id":{"type":"string","examples":["Europe/Istanbul"],"description":"IANA timezone name."},"cityCount":{"type":"integer"}}},"Commodity":{"type":"object","required":["code","name","nameTr","category","unit","unitTr","currency","frequency","source","from","to"],"properties":{"to":{"type":["string","null"],"description":"The latest date or month held."},"code":{"type":"string","examples":["brent"]},"from":{"type":["string","null"],"description":"The first date (daily) or month (monthly) held."},"name":{"type":"string","examples":["Crude oil, Brent (Europe spot FOB)"]},"unit":{"type":"string","examples":["USD/bbl"]},"nameTr":{"type":"string","examples":["Ham petrol, Brent (Avrupa spot FOB)"]},"source":{"enum":["eia","worldbank"],"type":"string"},"unitTr":{"type":"string","examples":["USD/varil"]},"category":{"enum":["energy","precious-metals","base-metals","agriculture","fertilizers","raw-materials"],"type":"string"},"currency":{"enum":["USD"],"type":"string"},"frequency":{"enum":["daily","monthly"],"type":"string"}}},"Condition":{"type":["object","null"],"required":["code","name","nameTr","daylight"],"properties":{"code":{"type":"string","examples":["partlycloudy"]},"name":{"type":"string"},"nameTr":{"type":"string"},"daylight":{"type":["boolean","null"]}}},"Continent":{"type":"object","required":["code","name","countryCount"],"properties":{"code":{"enum":["AF","AN","AS","EU","NA","OC","SA"],"type":"string"},"name":{"type":"string"},"countryCount":{"type":"integer"}}},"FundPrice":{"type":"object","required":["date","price","shares","investors","aum","marketPrice"],"properties":{"aum":{"type":["number","null"]},"date":{"type":"string","format":"date"},"price":{"type":"number"},"shares":{"type":["number","null"]},"investors":{"type":["integer","null"]},"marketPrice":{"type":["number","null"]}}},"GoldPoint":{"type":"object","required":["date","intrinsicValue"],"properties":{"date":{"type":"string","format":"date"},"intrinsicValue":{"type":"number"}}},"GoldPrice":{"type":"object","required":["id","name","nameTr","fineGrams","intrinsicValue"],"properties":{"id":{"type":"string","examples":["gram-24k"]},"name":{"type":"string"},"nameTr":{"type":"string"},"fineGrams":{"type":"number"},"intrinsicValue":{"type":"number","description":"The value of the fine gold it contains, in `meta.currency`, 2 decimals. No workmanship or dealer spread: a dealer's price for a coin is higher."}}},"IbanCheck":{"type":"object","required":["iban","formatted","valid","reasons","country","bank"],"properties":{"bank":{"type":["object","null"],"required":["code","name"],"properties":{"code":{"type":"string"},"name":{"type":"string"}},"description":"Turkish IBANs: the TCMB payment-systems participant its bank code names; null when unknown."},"iban":{"type":"string","examples":["TR330006100519786457841326"],"description":"Electronic format: no spaces, upper case."},"valid":{"type":"boolean"},"country":{"type":["object","null"],"required":["code","name","nameTr"],"properties":{"code":{"type":"string"},"name":{"type":"string"},"nameTr":{"type":"string"}}},"reasons":{"type":"array","items":{"enum":["format","unknown_country","length","checksum","tr_reserved_digit"],"type":"string"},"description":"Why it is not valid; empty when valid."},"formatted":{"type":"string","examples":["TR33 0006 1005 1978 6457 8413 26"],"description":"Print format, groups of four."}}},"PrayerDay":{"type":"object","required":["date","fajr","sunrise","dhuhr","asr","maghrib","isha"],"properties":{"asr":{"type":["string","null"],"format":"date-time"},"date":{"type":"string","format":"date","examples":["2026-09-27"]},"fajr":{"type":["string","null"],"format":"date-time","examples":["2026-09-27T05:25:00+03:00"]},"isha":{"type":["string","null"],"format":"date-time"},"dhuhr":{"type":["string","null"],"format":"date-time"},"maghrib":{"type":["string","null"],"format":"date-time"},"sunrise":{"type":["string","null"],"format":"date-time"}},"description":"One day's times, ISO 8601 with the place's UTC offset that day, to the minute. In Turkish: fajr = İmsak, sunrise = Güneş, dhuhr = Öğle, asr = İkindi, maghrib = Akşam, isha = Yatsı. A time is null on a day the sun does not rise or set there (polar day or night)."},"BankFxBank":{"type":"object","required":["id","name","nameTr","url","channel","currencies","observedAt","sourceUpdatedAt","stale"],"properties":{"id":{"type":"string","examples":["isbank"]},"url":{"type":"string","format":"uri","description":"The bank's public rates page, where the rates are read."},"name":{"type":"string"},"stale":{"type":"boolean","description":"True when the last successful read is more than 30 minutes old."},"nameTr":{"type":"string"},"channel":{"enum":["digital","branch","indicative"],"type":"string","description":"`digital`: internet and mobile banking rates; `branch`: branch counter rates; `indicative`: rates the bank publishes as a guide, its own channels quote the binding rate."},"currencies":{"type":"integer","description":"Currencies the bank shows."},"observedAt":{"type":["string","null"],"format":"date-time","description":"The last successful read."},"sourceUpdatedAt":{"type":["string","null"],"format":"date-time","description":"The time the bank's page gives for its rates, when it gives one."}}},"BankFxRate":{"type":"object","required":["bank","bankName","channel","code","name","nameTr","unit","buying","selling","spread","spreadPct","changedAt","observedAt","stale"],"properties":{"bank":{"type":"string"},"code":{"type":"string","description":"ISO 4217."},"name":{"type":"string"},"unit":{"type":"integer","description":"The rates are TRY per this many units."},"stale":{"type":"boolean"},"buying":{"type":"number","description":"TRY the bank pays for one unit (you sell at this rate)."},"nameTr":{"type":"string"},"spread":{"type":"number","description":"selling − buying."},"channel":{"enum":["digital","branch","indicative"],"type":"string"},"selling":{"type":"number","description":"TRY the bank charges for one unit (you buy at this rate)."},"bankName":{"type":"string"},"changedAt":{"type":"string","format":"date-time","description":"When the bank's rate last moved (first seen at these values)."},"spreadPct":{"type":"number","description":"The spread as a percentage of the buying rate."},"observedAt":{"type":["string","null"],"format":"date-time","description":"The last successful read of this bank."}}},"FundDetail":{"allOf":[{"$ref":"#/components/schemas/Fund"},{"type":"object","required":["allocation","links","source","disclaimer"],"properties":{"links":{"type":"object","properties":{"tefas":{"type":"string","format":"uri"}}},"source":{"type":"string"},"allocation":{"type":"object","required":["date","items"],"properties":{"date":{"type":["string","null"],"format":"date"},"items":{"type":"array","items":{"type":"object","required":["asset","name","nameTr","share"],"properties":{"name":{"type":"string","examples":["Stock"]},"asset":{"type":"string","examples":["stocks"]},"share":{"type":"number","description":"% of the portfolio."},"nameTr":{"type":"string","examples":["Hisse Senedi"]}}},"description":"Asset classes with a non-zero share, largest first."}}},"disclaimer":{"type":"string"}}}]},"FxCurrency":{"type":"object","required":["code","name","nameTr","tcmb","ecb"],"properties":{"ecb":{"type":["object","null"],"properties":{"to":{"type":"string","format":"date"},"from":{"type":"string","format":"date"}}},"code":{"type":"string"},"name":{"type":"string"},"tcmb":{"type":["object","null"],"properties":{"to":{"type":"string","format":"date"},"from":{"type":"string","format":"date"}}},"nameTr":{"type":"string"}}},"HistoryDay":{"type":"object","required":["date","temperatureMean","temperatureMax","temperatureMin","precipitation","humidity","windSpeed"],"properties":{"date":{"type":"string","format":"date"},"humidity":{"type":["number","null"]},"windSpeed":{"type":["number","null"],"description":"m/s at 2 m"},"precipitation":{"type":["number","null"],"description":"mm per day"},"temperatureMax":{"type":["number","null"]},"temperatureMin":{"type":["number","null"]},"temperatureMean":{"type":["number","null"]}}},"NewsSource":{"type":"object","required":["id","name","nameTr","language","homepage","licence","articles","latestAt"],"properties":{"id":{"type":"string"},"name":{"type":"string"},"nameTr":{"type":"string"},"licence":{"type":"string"},"articles":{"type":"integer"},"homepage":{"type":"string"},"language":{"type":"string"},"latestAt":{"type":["string","null"]}}},"PhoneCheck":{"type":"object","required":["input","valid","reasons","e164","national","type"],"properties":{"e164":{"type":["string","null"],"examples":["+905321234567"]},"type":{"enum":["mobile","landline","toll_free","shared_cost","single_number","premium",null],"type":["string","null"]},"input":{"type":"string"},"valid":{"type":"boolean"},"reasons":{"type":"array","items":{"enum":["format","not_turkish","length","unknown_range"],"type":"string"}},"national":{"type":["string","null"],"examples":["0532 123 45 67"]}}},"SupplyFlow":{"type":"object","required":["buyerProvince","supplierProvince","contractCount","amount","currency"],"properties":{"amount":{"type":["number","null"]},"currency":{"enum":["TRY"],"type":"string"},"buyerProvince":{"$ref":"#/components/schemas/ProcurementProvince"},"contractCount":{"type":["integer","null"]},"supplierProvince":{"$ref":"#/components/schemas/ProcurementProvince"}}},"TaxIdCheck":{"type":"object","required":["id","valid","reasons"],"properties":{"id":{"type":"string"},"valid":{"type":"boolean","description":"The check digit holds: a possible number, not proof that the taxpayer exists."},"reasons":{"type":"array","items":{"enum":["not_digits","length","checksum"],"type":"string"}}}},"BankFxPoint":{"type":"object","required":["at","buying","selling"],"properties":{"at":{"type":"string","format":"date-time","description":"When the new rate was first seen."},"buying":{"type":"number"},"selling":{"type":"number"}}},"CryptoAsset":{"type":"object","required":["id","slug","symbol","name","rank"],"properties":{"id":{"type":"integer","description":"CoinMarketCap id."},"name":{"type":"string","examples":["Bitcoin"]},"rank":{"type":"integer","description":"By market cap."},"slug":{"type":"string","examples":["bitcoin"]},"symbol":{"type":"string","examples":["BTC"]}}},"FundFounder":{"type":"object","required":["code","name","funds","aum","types"],"properties":{"aum":{"type":["number","null"],"description":"Their total value, TRY."},"code":{"type":"string"},"name":{"type":"string"},"funds":{"type":"integer","description":"Active funds."},"types":{"type":"array","items":{"type":"string"}}}},"GoldProduct":{"type":"object","required":["id","name","nameTr","grossGrams","karat","fineness","fineGrams"],"properties":{"id":{"type":"string","examples":["ceyrek"]},"name":{"type":"string","examples":["Quarter coin (çeyrek)"]},"karat":{"type":"integer"},"nameTr":{"type":"string","examples":["Çeyrek altın"]},"fineness":{"type":"number","description":"Fine-gold share: 22 karat = 22/24."},"fineGrams":{"type":"number","description":"Grams of fine gold."},"grossGrams":{"type":"number","description":"Weight, grams (Darphane specification for the coins)."}}},"HistoryHour":{"type":"object","required":["time","temperature","precipitation","humidity","windSpeed"],"properties":{"time":{"type":"string","format":"date-time"},"humidity":{"type":["number","null"]},"windSpeed":{"type":["number","null"]},"temperature":{"type":["number","null"]},"precipitation":{"type":["number","null"]}}},"NewsArticle":{"type":"object","required":["id","source","sourceName","url","publishedAt","language","originalTitle","titleTr","titleEn","summaryTr","summaryEn","category","tags","companies","countries","sentiment","importance","confident","model","summarizedAt"],"properties":{"id":{"type":"string","examples":["sec-1a2b3c4d5e6f7a8b"]},"url":{"type":"string","description":"The original document."},"tags":{"type":"array","items":{"type":"string"}},"model":{"type":"string","description":"The model that wrote the summary."},"source":{"enum":["fed","ecb","sec","resmi-gazete"],"type":"string"},"section":{"type":["string","null"],"description":"The source's own section (e.g. a Resmî Gazete heading, a Fed release type)."},"titleEn":{"type":"string"},"titleTr":{"type":"string"},"category":{"enum":["monetary-policy","macro-data","regulation","banking","capital-markets","corporate","earnings","m-and-a","management","debt","fiscal","trade","energy","other"],"type":"string"},"language":{"enum":["en","tr"],"type":"string","description":"The original document's language."},"companies":{"type":"array","items":{"type":"object","required":["name","ticker"],"properties":{"name":{"type":"string"},"ticker":{"type":["string","null"],"description":"Only for the SEC filer (from SEC's own list), never guessed."}}}},"confident":{"type":"boolean","description":"false when the document was unclear or a number in the summary could not be found in it: check the source."},"countries":{"type":"array","items":{"type":"string"},"description":"ISO 3166-1 alpha-2."},"sentiment":{"enum":["positive","negative","neutral","mixed"],"type":"string"},"summaryEn":{"type":"string"},"summaryTr":{"type":"string","description":"2–4 sentences, from the document only."},"importance":{"type":"integer","maximum":5,"minimum":1,"description":"1 routine … 5 market-moving."},"sourceName":{"type":"string"},"filingItems":{"type":["array","null"],"items":{"type":"string"},"description":"8-K items, e.g. \"2.02 Results of Operations and Financial Condition\"."},"publishedAt":{"type":"string","format":"date-time"},"summarizedAt":{"type":"string","format":"date-time"},"originalTitle":{"type":"string"}}},"PlaceLookup":{"type":"object","required":["location","country","subdivision","district","postalCode","nearestCity"],"properties":{"country":{"type":["object","null"],"required":["code","name","nameTr"],"properties":{"code":{"type":"string"},"name":{"type":"string"},"nameTr":{"type":"string"}},"description":"The nearest city's country; null when no city of 1,000+ inhabitants is within 100 km."},"district":{"type":["object","null"],"required":["id","name"],"properties":{"id":{"type":"string"},"name":{"type":"string"}},"description":"The nearest located postal place's district (Turkey), within 5 km."},"location":{"$ref":"#/components/schemas/Location"},"postalCode":{"type":["object","null"],"required":["postalCode","name","distanceKm"],"properties":{"name":{"type":"string"},"distanceKm":{"type":"number"},"postalCode":{"type":"string"}}},"nearestCity":{"type":["object","null"],"required":["id","name","population","distanceKm"],"properties":{"id":{"type":"string"},"name":{"type":"string"},"distanceKm":{"type":"number"},"population":{"type":"integer"}}},"subdivision":{"type":["object","null"],"required":["id","name"],"properties":{"id":{"type":"string"},"name":{"type":"string"}}}}},"PostalPlace":{"type":"object","required":["postalCode","name","countryCode","district","subdivision","location"],"properties":{"name":{"type":"string","examples":["Firuzköy"],"description":"The place the code serves; in Turkey a neighbourhood (mahalle) or village. Spelled as the postal source publishes it, which often writes ı as i."},"district":{"type":["object","null"],"required":["id","name"],"properties":{"id":{"type":"string"},"name":{"type":"string"}}},"location":{"anyOf":[{"$ref":"#/components/schemas/Location"},{"type":"null"}],"description":"The place's own point; null when the source only locates the district."},"postalCode":{"type":"string","examples":["34310"]},"countryCode":{"type":"string","examples":["TR"]},"subdivision":{"type":["object","null"],"required":["id","name"],"properties":{"id":{"type":"string"},"name":{"type":"string"}}}}},"Subdivision":{"type":"object","required":["id","code","countryCode","name","asciiName"],"properties":{"id":{"type":"string","examples":["TR.34"],"description":"Stable id, `<country>.<code>`. Not an ISO 3166-2 code."},"code":{"type":"string","examples":["34"]},"name":{"type":"string","examples":["İstanbul"]},"asciiName":{"type":"string","examples":["Istanbul"]},"countryCode":{"type":"string","examples":["TR"]}}},"CryptoGlobal":{"type":"object","required":["quote","totalMarketCap","totalVolume24h","btcDominance","ethDominance","lastUpdated","source","conversion"],"properties":{"quote":{"type":"string"},"source":{"type":"string"},"conversion":{"type":["object","null"]},"lastUpdated":{"type":["string","null"],"format":"date-time"},"btcDominance":{"type":["number","null"]},"ethDominance":{"type":["number","null"]},"defiMarketCap":{"type":["number","null"]},"totalMarketCap":{"type":["number","null"]},"totalVolume24h":{"type":["number","null"]},"activeExchanges":{"type":["integer","null"]},"stablecoinMarketCap":{"type":["number","null"]},"derivativesVolume24h":{"type":["number","null"]},"activeCryptocurrencies":{"type":["integer","null"]},"marketCapChangePercent24h":{"type":["number","null"]}}},"CryptoTicker":{"type":"object","required":["id","slug","symbol","name","rank","quote","price","marketCap","fullyDilutedMarketCap","volume24h","volumeChangePercent24h","changePercent1h","changePercent24h","changePercent7d","changePercent30d","dominance","circulatingSupply","totalSupply","maxSupply","lastUpdated"],"properties":{"id":{"type":"integer"},"name":{"type":"string"},"rank":{"type":"integer"},"slug":{"type":"string"},"price":{"type":["number","null"]},"quote":{"enum":["USD","EUR","TRY"],"type":"string"},"symbol":{"type":"string"},"dominance":{"type":["number","null"],"description":"Share of the total market cap, percent."},"marketCap":{"type":["number","null"]},"maxSupply":{"type":["number","null"]},"volume24h":{"type":["number","null"]},"lastUpdated":{"type":"string","format":"date-time"},"totalSupply":{"type":["number","null"]},"changePercent1h":{"type":["number","null"]},"changePercent7d":{"type":["number","null"]},"changePercent24h":{"type":["number","null"]},"changePercent30d":{"type":["number","null"]},"circulatingSupply":{"type":["number","null"]},"fullyDilutedMarketCap":{"type":["number","null"]},"volumeChangePercent24h":{"type":["number","null"]}}},"FundCategory":{"type":"object","required":["type","id","name","nameTr","funds"],"properties":{"id":{"type":"string"},"name":{"type":"string"},"type":{"enum":["investment","pension","exchange-traded"],"type":"string"},"funds":{"type":"integer","description":"Active funds in the category."},"nameTr":{"type":"string"}}},"FxConversion":{"type":"object","required":["from","to","amount","result","rate","date","source","rateType"],"properties":{"to":{"type":"string"},"date":{"type":"string","format":"date","description":"The bulletin used."},"from":{"type":"string"},"rate":{"type":"number","description":"1 `from` in `to`."},"amount":{"type":"number"},"result":{"type":"number"},"source":{"enum":["tcmb","ecb"],"type":"string"},"rateType":{"enum":["mid","buying","selling","reference"],"type":"string"}}},"PrayerMethod":{"type":"object","required":["id","name","fajrAngle","ishaAngle","ishaIntervalMinutes"],"properties":{"id":{"type":"string","examples":["turkey"]},"name":{"type":"string"},"fajrAngle":{"type":"number"},"ishaAngle":{"type":["number","null"]},"ishaIntervalMinutes":{"type":["integer","null"],"description":"Yatsı a fixed time after Akşam (Umm al-Qura, Qatar), instead of an angle."}}},"TopAuthority":{"type":"object","required":["rank","name","contractCount","purchaseCount","amount","currency"],"properties":{"name":{"type":"string","examples":["DSİ 6. BÖLGE MÜDÜRLÜĞÜ"],"description":"The authority's name as recorded in EKAP."},"rank":{"type":"integer","maximum":10,"minimum":1},"amount":{"type":["number","null"]},"currency":{"enum":["TRY"],"type":"string"},"contractCount":{"type":["integer","null"],"description":"Tender contracts (method `tender`); null for `direct`."},"purchaseCount":{"type":["integer","null"],"description":"Direct purchases (method `direct`); null for `tender`."}}},"DailyForecast":{"type":"object","required":["date","temperatureMax","temperatureMin","precipitation","windSpeedMax","condition"],"properties":{"date":{"type":"string","format":"date"},"condition":{"$ref":"#/components/schemas/Condition"},"windSpeedMax":{"type":["number","null"]},"precipitation":{"type":"number","description":"mm over the day"},"temperatureMax":{"type":["number","null"]},"temperatureMin":{"type":["number","null"]}}},"FuturesMarket":{"type":"object","required":["code","name","nameTr","exchange","category","contractUnit","contractUnitTr","from","to"],"properties":{"to":{"type":["string","null"],"description":"The latest report held."},"code":{"type":"string","examples":["wheat-srw"]},"from":{"type":["string","null"],"description":"The first report held."},"name":{"type":"string","examples":["Wheat, soft red winter"]},"nameTr":{"type":"string","examples":["Buğday, yumuşak kırmızı kışlık (SRW)"]},"category":{"enum":["grains","oilseeds","softs","livestock","base-metals","precious-metals","energy","forest-products"],"type":"string"},"exchange":{"type":"string","examples":["CBOT"]},"contractUnit":{"type":"string","examples":["5,000 bushels"]},"contractUnitTr":{"type":"string","examples":["5.000 buşel"]}}},"MonthlyNormal":{"type":"object","required":["month","temperatureMean","temperatureHighest","temperatureLowest","precipitation","humidity","windSpeed"],"properties":{"month":{"type":"integer","maximum":12,"minimum":1},"humidity":{"type":["number","null"]},"windSpeed":{"type":["number","null"]},"precipitation":{"type":["number","null"],"description":"mm over the month"},"temperatureMean":{"type":["number","null"],"description":"Mean temperature of the month over 2001–2020, °C."},"temperatureLowest":{"type":["number","null"],"description":"Lowest hourly temperature of that month over 2001–2020 (an extreme, not an average low), °C."},"temperatureHighest":{"type":["number","null"],"description":"Highest hourly temperature of that month over 2001–2020 (an extreme, not an average high), °C."}}},"NutritionFood":{"type":"object","required":["id","name","nameTr","commonName","commonNameTr","category","per100g"],"properties":{"id":{"type":"integer","examples":[170457],"description":"USDA FoodData Central id."},"name":{"type":"string","examples":["Tomatoes, red, ripe, raw, year round average"],"description":"USDA's description (English)."},"nameTr":{"type":["string","null"],"examples":["Domates, kırmızı, olgun, çiğ, yıllık ortalama"],"description":"Turkish description."},"per100g":{"type":"object","examples":[{"fat":0.2,"salt":0.0125,"fiber":1.2,"sugars":2.63,"protein":0.88,"energyKcal":18,"carbohydrate":3.89}],"description":"Amounts per 100 g: energyKcal, protein, fat, carbohydrate, sugars, fiber and salt in lists; every nutrient of /nutrition/nutrients for one food. A nutrient that was not measured is absent.","additionalProperties":{"type":"number"}},"category":{"type":"object","required":["id","name","nameTr"],"properties":{"id":{"type":"string"},"name":{"type":"string"},"nameTr":{"type":"string"}}},"commonName":{"type":["string","null"],"examples":["tomato"],"description":"Everyday English name."},"commonNameTr":{"type":["string","null"],"examples":["domates"],"description":"Everyday Turkish name."}}},"NutritionItem":{"type":"object","required":["query","grams","food","nutrients"],"properties":{"food":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"nameTr":{"type":["string","null"]}}},"grams":{"type":"number"},"query":{"type":"string"},"nutrients":{"type":"object","description":"Amounts in this item's grams.","additionalProperties":{"type":"number"}}}},"TopContractor":{"type":"object","required":["rank","name","province","contractCount","purchaseCount","amount","currency"],"properties":{"name":{"type":"string","description":"The contractor's legal name as recorded in EKAP (a joint venture lists its partners). No tax numbers."},"rank":{"type":"integer","maximum":10,"minimum":1},"amount":{"type":["number","null"],"description":"Contract value won; for `headquartered`, the firm's total public-contract revenue."},"currency":{"enum":["TRY"],"type":"string"},"province":{"anyOf":[{"$ref":"#/components/schemas/ProcurementProvince"},{"type":"null"}],"description":"The contractor's own province: known for `tender` and `headquartered`, null for `direct`."},"contractCount":{"type":["integer","null"]},"purchaseCount":{"type":["integer","null"]}}},"CommodityPoint":{"type":"object","required":["date","value"],"properties":{"date":{"type":"string","description":"YYYY-MM-DD (daily) or YYYY-MM (monthly)."},"value":{"type":"number"}}},"CurrentWeather":{"type":"object","required":["time","temperature","feelsLike","humidity","pressure","cloudCover","windSpeed","windDirection","condition","location","timezone","city","updatedAt","source"],"properties":{"city":{"type":["object","null"],"properties":{"id":{"type":"string"},"name":{"type":"string"},"countryCode":{"type":"string"}}},"time":{"type":"string","format":"date-time"},"source":{"type":"string"},"dewPoint":{"type":["number","null"],"description":"°C"},"humidity":{"type":["number","null"],"description":"%"},"location":{"$ref":"#/components/schemas/Location"},"pressure":{"type":["number","null"],"description":"hPa, at sea level"},"timezone":{"type":"string"},"windGust":{"type":["number","null"],"description":"m/s"},"condition":{"$ref":"#/components/schemas/Condition"},"feelsLike":{"type":["number","null"],"description":"°C"},"updatedAt":{"type":"string","format":"date-time","description":"When MET's model run was issued."},"windSpeed":{"type":["number","null"],"description":"m/s"},"cloudCover":{"type":["number","null"],"description":"%"},"temperature":{"type":["number","null"],"description":"°C"},"windDirection":{"type":["number","null"],"description":"Degrees the wind comes from."},"uvIndexClearSky":{"type":["number","null"]},"precipitationNextHour":{"type":["number","null"],"description":"mm"}}},"HourlyForecast":{"type":"object","required":["time","temperature","precipitation","windSpeed","condition"],"properties":{"time":{"type":"string","format":"date-time"},"humidity":{"type":["number","null"]},"condition":{"$ref":"#/components/schemas/Condition"},"feelsLike":{"type":["number","null"]},"windSpeed":{"type":["number","null"]},"cloudCover":{"type":["number","null"]},"temperature":{"type":["number","null"]},"precipitation":{"type":["number","null"],"description":"mm in the hour"},"windDirection":{"type":["number","null"]},"precipitationProbability":{"type":["number","null"],"description":"%"}}},"ProvinceSector":{"type":"object","required":["province","sector","tenderCount","totalAmount","localAmount","outsideAmount","localPercent","currency"],"properties":{"sector":{"$ref":"#/components/schemas/ProcurementSubject"},"currency":{"enum":["TRY"],"type":"string"},"province":{"$ref":"#/components/schemas/ProcurementProvince"},"localAmount":{"type":["number","null"],"description":"Won by suppliers from the same province."},"tenderCount":{"type":["integer","null"]},"totalAmount":{"type":["number","null"]},"localPercent":{"type":["number","null"]},"outsideAmount":{"type":["number","null"],"description":"Won by suppliers from other provinces."}}},"CommodityLatest":{"type":"object","required":["code","name","nameTr","category","unit","unitTr","currency","frequency","source","date","value","previousDate","previousValue","change","changePercent"],"properties":{"code":{"type":"string"},"date":{"type":"string","description":"YYYY-MM-DD for daily series, YYYY-MM for monthly ones."},"name":{"type":"string"},"unit":{"type":"string"},"value":{"type":"number"},"change":{"type":["number","null"],"description":"`value` − `previousValue`."},"nameTr":{"type":"string"},"source":{"type":"string"},"unitTr":{"type":"string"},"category":{"type":"string"},"currency":{"type":"string"},"frequency":{"enum":["daily","monthly"],"type":"string"},"previousDate":{"type":["string","null"]},"changePercent":{"type":["number","null"],"description":"Percent, 2 decimals."},"previousValue":{"type":["number","null"]}}},"DegreeDaysMonth":{"type":"object","required":["month","heatingDegreeDays","coolingDegreeDays","daysMissing"],"properties":{"month":{"type":"string","examples":["2025-01"]},"daysMissing":{"type":"integer"},"coolingDegreeDays":{"type":"number"},"heatingDegreeDays":{"type":"number"}}},"NationalIdCheck":{"type":"object","required":["id","valid","reasons","kind"],"properties":{"id":{"type":"string"},"kind":{"enum":["citizen","foreign",null],"type":["string","null"],"description":"`foreign` for a YKN (starts with 99)."},"valid":{"type":"boolean","description":"The checksum holds: a possible number, not proof that the person exists."},"reasons":{"type":"array","items":{"enum":["not_digits","length","leading_zero","checksum"],"type":"string"}}}},"CompetitionIndex":{"type":"object","required":["dimension","subject","period","tenderCount","singleBidPercent","singleLot","averageLotCount","averageDiscountPercent","coveragePercent"],"properties":{"period":{"type":"string","examples":["2024"],"description":"A year, or `all` for every year pooled (not an average of the years)."},"subject":{"$ref":"#/components/schemas/ProcurementSubject"},"dimension":{"enum":["overall","province","sector","procedure","authority-type"],"type":"string"},"singleLot":{"type":["object","null"],"properties":{"tenderCount":{"type":["integer","null"]},"singleBidPercent":{"type":["number","null"]}},"description":"The same for single-lot tenders only."},"tenderCount":{"type":["integer","null"]},"averageLotCount":{"type":["number","null"]},"coveragePercent":{"type":["number","null"],"description":"Share of tenders whose result details were available, percent."},"singleBidPercent":{"type":["number","null"],"description":"Share of tenders with a single bid, percent."},"averageDiscountPercent":{"type":["number","null"],"description":"Average discount of the winning bid against the estimated cost (tenzilat), percent."}},"description":"How contested tenders were: the share won with a single valid bid and the average discount against the authority's estimated cost."},"CryptoPricePoint":{"type":"object","required":["time","price","marketCap","volume24h"],"properties":{"time":{"type":"string","format":"date-time"},"price":{"type":["number","null"]},"marketCap":{"type":["number","null"]},"volume24h":{"type":["number","null"]}}},"FuturesPositions":{"type":"object","required":["code","name","nameTr","exchange","category","contractUnit","contractUnitTr","date","openInterest","producerMerchant","swapDealers","managedMoney","otherReportables","nonReportables","previousDate","changes"],"properties":{"code":{"type":"string"},"date":{"type":"string","format":"date"},"name":{"type":"string"},"nameTr":{"type":"string"},"changes":{"type":["object","null"],"properties":{"openInterest":{"type":"integer"},"swapDealersNet":{"type":"integer"},"managedMoneyNet":{"type":"integer"},"nonReportablesNet":{"type":"integer"},"otherReportablesNet":{"type":"integer"},"producerMerchantNet":{"type":"integer"}}},"category":{"type":"string"},"exchange":{"type":"string"},"swapDealers":{"type":"object","required":["long","short","spread","net"],"properties":{"net":{"type":"integer","description":"long − short."},"long":{"type":"integer"},"short":{"type":"integer"},"spread":{"type":"integer"}}},"contractUnit":{"type":"string"},"managedMoney":{"type":"object","required":["long","short","spread","net"],"properties":{"net":{"type":"integer","description":"long − short."},"long":{"type":"integer"},"short":{"type":"integer"},"spread":{"type":"integer"}}},"openInterest":{"type":"integer"},"previousDate":{"type":["string","null"],"description":"The report the changes compare with (a week earlier)."},"contractUnitTr":{"type":"string"},"nonReportables":{"type":"object","required":["long","short","net"],"properties":{"net":{"type":"integer","description":"long − short."},"long":{"type":"integer"},"short":{"type":"integer"}}},"otherReportables":{"type":"object","required":["long","short","spread","net"],"properties":{"net":{"type":"integer","description":"long − short."},"long":{"type":"integer"},"short":{"type":"integer"},"spread":{"type":"integer"}}},"producerMerchant":{"type":"object","required":["long","short","net"],"properties":{"net":{"type":"integer","description":"long − short."},"long":{"type":"integer"},"short":{"type":"integer"}}}},"description":"One market's Commitments of Traders report, in contracts: positions as of `date` (a Tuesday)."},"HistoryParameter":{"type":"object","required":["id","unit","description"],"properties":{"id":{"type":"string"},"unit":{"type":"string"},"description":{"type":"string"}}},"LocalizationIndex":{"type":"object","required":["dimension","subject","period","contractCount","localCountPercent","localAmountPercent","coveragePercent"],"properties":{"period":{"type":"string"},"subject":{"$ref":"#/components/schemas/ProcurementSubject"},"dimension":{"enum":["overall","province","sector"],"type":"string"},"contractCount":{"type":["integer","null"]},"coveragePercent":{"type":["number","null"]},"localCountPercent":{"type":["number","null"],"description":"By number of contracts, percent."},"localAmountPercent":{"type":["number","null"],"description":"By contract value, percent."}},"description":"How much public buying stays in the province: contracts won by suppliers from the buying authority's own province."},"NutritionCategory":{"type":"object","required":["id","name","nameTr","foods"],"properties":{"id":{"type":"string","examples":["vegetables"]},"name":{"type":"string"},"foods":{"type":"integer"},"nameTr":{"type":"string"}}},"ConcentrationIndex":{"type":"object","required":["dimension","subject","period","contractCount","firmCount","cr1Percent","cr4Percent","cr10Percent","hhi"],"properties":{"hhi":{"type":["number","null"]},"period":{"type":"string"},"subject":{"$ref":"#/components/schemas/ProcurementSubject"},"dimension":{"enum":["overall","province","sector"],"type":"string"},"firmCount":{"type":["integer","null"]},"cr1Percent":{"type":["number","null"]},"cr4Percent":{"type":["number","null"]},"cr10Percent":{"type":["number","null"]},"contractCount":{"type":["integer","null"]}},"description":"How concentrated the winners are: the largest 1, 4 and 10 contractors' share of contract value, and the Herfindahl–Hirschman index (0–10,000)."},"ProcurementDataset":{"type":"object","required":["id","name","version","rowCount","citation","loadedAt"],"properties":{"id":{"type":"string","examples":["veri_rekabet_endeksi"]},"name":{"type":["string","null"],"examples":["Rekabet Endeksi"]},"version":{"type":["string","null"],"examples":["v2026-W40"]},"citation":{"type":["string","null"],"description":"The citation the source asks for."},"loadedAt":{"type":["string","null"],"format":"date-time"},"rowCount":{"type":"integer"}}},"ProcurementSubject":{"type":"object","required":["id","name","nameEn"],"properties":{"id":{"type":"string","examples":["34"]},"name":{"type":"string","examples":["İstanbul"],"description":"Turkish."},"nameEn":{"type":["string","null"],"description":"English; null where we have no translation (rare tender procedures)."}},"description":"What a row is about: a province (`id` is its licence-plate code, `01`–`81`), a sector, an authority type or a tender procedure; `all` for the whole country; `unspecified` where the source records none."},"NutritionFoodDetail":{"allOf":[{"$ref":"#/components/schemas/NutritionFood"},{"type":"object","properties":{"note":{"type":"string"},"source":{"type":"string"},"usdaNdb":{"type":["string","null"]},"portions":{"type":"array","items":{"type":"object","required":["amount","unit","grams"],"properties":{"unit":{"type":"string","examples":["medium whole (2-3/5\" dia)"]},"grams":{"type":"number","examples":[123]},"amount":{"type":"number"},"unitTr":{"type":["string","null"],"examples":["orta boy, bütün (yaklaşık 6,5 cm çap)"]}}},"description":"Household measures and their weight."},"sourceUrl":{"type":"string"},"synonymsTr":{"type":"array","items":{"type":"string"}}}}]},"ProcurementProvince":{"type":"object","required":["id","name"],"properties":{"id":{"type":"string","examples":["06"],"description":"Licence-plate code, `01`–`81`, or `unspecified`."},"name":{"type":"string","examples":["Ankara"]}}},"FuturesPositionsPoint":{"type":"object","required":["date","openInterest","producerMerchant","swapDealers","managedMoney","otherReportables","nonReportables"],"properties":{"date":{"type":"string","format":"date"},"swapDealers":{"type":"object","required":["long","short","spread","net"],"properties":{"net":{"type":"integer","description":"long − short."},"long":{"type":"integer"},"short":{"type":"integer"},"spread":{"type":"integer"}}},"managedMoney":{"type":"object","required":["long","short","spread","net"],"properties":{"net":{"type":"integer","description":"long − short."},"long":{"type":"integer"},"short":{"type":"integer"},"spread":{"type":"integer"}}},"openInterest":{"type":"integer"},"nonReportables":{"type":"object","required":["long","short","net"],"properties":{"net":{"type":"integer","description":"long − short."},"long":{"type":"integer"},"short":{"type":"integer"}}},"otherReportables":{"type":"object","required":["long","short","spread","net"],"properties":{"net":{"type":"integer","description":"long − short."},"long":{"type":"integer"},"short":{"type":"integer"},"spread":{"type":"integer"}}},"producerMerchant":{"type":"object","required":["long","short","net"],"properties":{"net":{"type":"integer","description":"long − short."},"long":{"type":"integer"},"short":{"type":"integer"}}}}},"DirectProcurementIndex":{"type":"object","required":["dimension","subject","period","purchaseCount","medianAmount","meanAmount","totalAmount","p95Amount","p99Amount","maxAmount","maxSharePercent","currency"],"properties":{"period":{"type":"string"},"subject":{"$ref":"#/components/schemas/ProcurementSubject"},"currency":{"enum":["TRY"],"type":"string"},"dimension":{"enum":["overall","province","sector","authority-type"],"type":"string"},"maxAmount":{"type":["number","null"]},"p95Amount":{"type":["number","null"]},"p99Amount":{"type":["number","null"]},"meanAmount":{"type":["number","null"]},"totalAmount":{"type":["number","null"]},"medianAmount":{"type":["number","null"]},"purchaseCount":{"type":["integer","null"]},"maxSharePercent":{"type":["number","null"],"description":"The largest purchase's share of the total, percent."}},"description":"Direct procurement (doğrudan temin, 4734 article 22): purchase counts and amount distribution, nominal TRY."}},"responses":{"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 credential","status":502}},"upstream_error":{"value":{"type":"https://servicebox.io/problems/upstream_error","title":"Bad Gateway","detail":"The upstream failed (500)","status":502}}}}},"description":"`upstream_error`: the data source failed. `upstream_auth`: the data source refused ServiceBox's own credential; not your key."},"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":"Upstream request timed out","status":504}}},"description":"The 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."}},"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer"},"apiKeyQuery":{"in":"query","name":"apikey","type":"apiKey"}}}}