Változásnapló
A Data API és szerződésének minden változása, a legújabbal kezdve. A verziószámok a verziózási és megszüntetési szabályzatot követik.
A POST /webhooks és a POST /webhooks/{id}/test mostantól fiókonként egy közös, percenként 5 kéréses korlát alá esik, a csomag burst-korlátja mellett. Az e fölötti kérések Retry-After fejléccel ellátott 429 rate_limited választ kapnak. A tesztesemény mostantól egyszer megy ki, újrapróbálkozás nélkül; a többi kiszállítást továbbra is legfeljebb 3-szor kíséreljük meg, a kísérletek között növekvő várakozással. Ez visszaélés elleni korlát, és egyik csomag havi kvótáját és burst-korlátját sem változtatja meg. A verziózási és megszüntetési szabályzat ugyanazon a napon módosult, hogy az ilyen korlátok azonnal életbe léphessenek; addig egy csomagban meglévő bármely sebességkorlát csökkentése a hat hónapos megszüntetési ütemezést követte. Ezen a két végponton az X-RateLimit-* fejlécek a két korlát közül azt mutatják, amelyikben kevesebb kérés maradt.
A POST /webhooks már nem oldja fel az URL hosztnevét. Továbbra is 422 választ ad, ha az URL nem https-t használ, hitelesítő adatokat tartalmaz, vagy a hosztja nem nyilvános IP-cím. Az olyan hosztnév, amely nem oldható fel, vagy nem nyilvános címre mutat, eddig 422 választ kapott; mostantól 201 válasszal elfogadjuk, és beleszámít a fiókonkénti 5 végpontos korlátba. Az ilyen végpontra irányuló minden kiszállítás ezután újrapróbálkozás nélkül meghiúsul, az okot a GET /webhooks/{id}/deliveries válaszának error mezője mutatja, és 10 egymást követő sikertelen kiszállítás után a végpontot letiltjuk. Egy végpont létrehozása után küldjön rá teszteseményt a POST /webhooks/{id}/test hívással, és a kiszállítási naplóban ellenőrizze, hogy elérhető-e.
A GET /usage válaszában az endpoints[].endpoint mostantól a lekért konkrét útvonal helyett az útvonalsablont adja meg, vagyis api/v1/coins/bitcoin helyett api/v1/coins/{slug} szerepel, így minden végpont egy sort kap, nem pedig slugonként vagy azonosítónként egyet. Az aktuális számlázási időszakban korábban rögzített kérések megtartják az útvonalukat, ezért az időszak végéig mindkét forma megjelenhet.
A GET /exchanges/{slug} és a GET /exchanges/{slug}/trust-score a Data API indulása óta minden tőzsdénél 500 hibával hiúsult meg. Most már mindkettő válaszol; a paraméterek és a válaszmezők nem változtak, a rangsorolatlan tőzsdéknél pedig a score és a breakdown értéke null.
A közzétett OpenAPI-szerződés mostantól nullázhatóként jelöl meg minden olyan mezőt, amely null lehet, és a tört értékeket számként írja le (például az invested mezőt a GET /calculators/dca válaszában, valamint az indikátorértékeket); a közös logo, last_updated és a lapozási from/to mező minden végponton nullázható, az érmék name és price mezője pedig minden érmelista- és árvégponton. Emellett a DCA series mezőjét tömbként írja le, dokumentálja a GET /coins/{slug}/markets, a GET /coins/losers, a GET /global/history/{metric} és a GET /sentiment/altseason válaszait, a GET /sentiment/altseason végpont days paraméterénél az 1–365 tartományt dokumentálja (a 0 értéket a végpont mindig is elutasította; az aktuális értékhez hagyd el a paramétert), a hibasémában pedig felsorolja az endpoint_unavailable (503) és a http_error kódot. Sem a kérések, sem a válaszok nem változtak – csak a leírásuk.
A sikertelen hitelesítési kísérleteket korábban IP-címenként percenként 30-ra korlátoztuk, ezután az adott IP-cím mögötti minden kulcs 429 választ kapott. Mostantól egy kulcs egy IP-címről percenként 30-szor, egy IP-cím pedig 300-szor hiúsulhat meg, a nagyjából az elmúlt 15 percben sikeresen hitelesített kulcsokat nem blokkolja az IP-korlát, a kulcs nélküli kérés pedig 401 választ kap, és nem számít bele a korlátba. A blokkolt kérések Retry-After fejléccel ellátott 429 rate_limited választ kapnak.
Azok a GET és HEAD kérések, amelyek útvonala záró perjelet, dupla perjelet vagy kezdő /index.php részt tartalmaz, mostantól kiszolgálás helyett 301 átirányítást kapnak a tiszta URL-re – például a /api/v1/coins/ a /api/v1/coins címre. A többi metódust ez nem érinti.
GET /calculators/compound-interest egész tőkésítési időszakokra kerekítette a futamidőt, így az időszak közepén végződő futamidőt túl hosszúnak vagy túl rövidnek szimulálta: 6 hónap annually tőkésítéssel egy teljes évig futott (12 befizetés és egy teljes év kamata), 5 hónap pedig egyetlen időszakot sem futott (se befizetés, se kamat). Az egész időszakok most a korábbiak szerint futnak, az utolsó töredék időszak arányos kamatot hoz (egyszerű kamat a töredékre), és a futamidőn belüli minden befizetés beleszámít. Az eredmények nem változnak, ha a futamidő egész számú tőkésítési időszak; a paraméterek és a válaszmezők nem változnak.
Az API és a dokumentációja a rate paramétert kamatperiódusonkénti kamatlábként kezelte, míg a weboldal kalkulátora és útmutatója éves kamatlábat használt. A GET /calculators/compound-interest a rate paramétert teljes egészében minden kamatperiódusra alkalmazta, így a havi kamatozású 5% havi 5%-ként nőtt. A rate paraméter mostantól a névleges éves kamatláb: minden periódusra a rate paraméter és az évi periódusszám hányadosa jut (5% havi kamatozással havonta 5/12%), ahogy a meta.note mező is jelzi. A paraméterek és a válaszmezők nem változnak; az eredmények minden kamatozási gyakoriságnál változnak, kivéve az annually értéket. Ettől függetlenül, ha a contribution_frequency és a compound_frequency értéke egyaránt daily vagy egyaránt weekly, a befizetések a lebegőpontos kerekítés miatt már nem késnek, és nem is maradnak ki, így duration_unit=months esetén a total_contributions egy befizetéssel magasabb lehet. Ez egy meglévő paraméter jelentését változtatja meg: a korábbi eredmények visszaállításához szorozza meg a rate értékét az évenkénti tőkésítési időszakok számával.
Minden Fear & Greed érték mostantól a score mező mellett az index mezőt is tartalmazza: a 0–100-as Fear & Greed indexet pontosan úgy, ahogy a Bitculator mutatja (0–19 extrém félelem, 20–39 félelem, 40–59 semleges, 60–79 kapzsiság, 80–100 extrém kapzsiság) — megjelenítéshez ezt használja. A score mező változatlan: a −100…+100 közötti nyers összetett érték, amelyből az index mező származik. Érintett: GET /sentiment/fear-greed (a fő érték és az intervals minden eleme), a fear_greed mező a GET /global válaszban és a meta.fear_greed mező a GET /global/heatmap válaszban. Csak bővítés; egyetlen meglévő mező sem változott.
A GET /coins/{slug} 0 értékkel adta vissza a fully_diluted_valuation mezőt a maximális kínálat nélküli coinoknál (például Solana és Ethereum, amelyek kínálata nincs korlátozva). Most a teljes kínálatot használja helyette, és null, ha egyik sem ismert, ahogy az OpenAPI-szerződés már dokumentálta.
Azt a Fear & Greed értéket, amelyhez még nem volt pontszám, score: 0 formában adtuk vissza. Ez mostantól null a GET /sentiment/fear-greed végponton, és ugyanígy a fear_greed mező a GET /global válaszában, valamint a meta.fear_greed mező a GET /global/heatmap válaszában.
A marketcap és a dominance értéke null lehet olyan érménél, amelynek nincs forgalomban lévő kínálata, a trust score score és breakdown értéke pedig null a rangsorolatlan tőzsdéknél. A POST /alarms 422-t ad vissza, ha az érméhez nincs aktuális érték a választott metrikánál. A /coins/recently-added és a /wallets/timeline mostantól figyelembe veszi a sort paramétert. A /coins/gainers és a /coins/losers magára a változásra rendez (korábban gyakorlatilag piaci kapitalizációra), a vesztesek közül pedig kimaradnak a 0.00 értéken álló érmék. Növekvő rendezésnél a null értékek a végére kerülnek. A /prices a kétértelmű szimbólumot a legmagasabban rangsorolt aktív érmére oldja fel. Az OpenAPI-szerződés megjelöli a nullázható piaci mezőket, a 24 órás forgalmat pedig számként írja le.
A GET /insights, a GET /insights/{id} és a GET /coins/{slug}/insights minden elemzése mostantól tartalmazza a generated_by: "ai" mezőt, valamint a model mezőben az elemzést megíró modellt. Csak bővítés; egyetlen meglévő mező sem változott.
A Huobi tőzsde új neve HTX, a slugja pedig huobi helyett htx lett; az API nem követi a slug-átirányításokat, ezért a /exchanges/huobi mostantól 404 választ ad. A CoinEx inaktív lett, és már nem szerepel a válaszokban.
A change_24h és a change_7d mostantól null, ha egy érme változásait 15 perce nem számoltuk újra, így nem mutatnak elavult mozgást. Szeptember 18. óta ugyanez vonatkozik a change_rank_24h és a change_rank_7d mezőre is.
A közzétett szerződés mostantól médiatípus szintű példákat, egyetlen közös hibasémát, amelyre minden 4xx/5xx válasz hivatkozik, a 401-es, 429-es és 500-as válaszokat, amelyeket minden kulccsal hitelesített hívás visszaadhat, az X-RateLimit-* és X-Quota-* fejléceket minden sikeres válaszon, az alarm.triggered kiszállítást a POST /webhooks visszahívásaként, valamint kapcsolattartási, licenc- és feltételekre vonatkozó metaadatokat is tartalmaz. Sem a kérések, sem a válaszok nem változtak – csak a leírásuk.
Új: /apis.json, /.well-known/api-catalog (RFC 9727), /.well-known/security.txt (RFC 9116), egy JSON Schema csomag a közös válaszformákról, egy nyilvános állapotoldal JSON-párjával, ez a változásnapló, valamint a verziózási és megszüntetési szabályzat.
Az MCP-eszközhívások ettől a naptól nem számítanak bele a Data API-csomag havi kvótájába és burst-korlátjába; az MCP-szervernek azóta saját kulcsai és csomagjai vannak. A GET /usage válaszában a tokens[].kind értéke mostantól mcp is lehet, a kvótatúllépéskor adott 429 válasz üzenete pedig: „Your Data API plan has reached its monthly request limit.” (korábban a beágyazási csomagot említette).
Data API-kulcs létrehozásához vagy rotálásához a fejlesztői konzolban mostantól megerősített e-mail-cím szükséges; az e-mail-cím nélküli fiókok, például a tárcával bejelentkezők, mentesülnek ez alól. Percenként legfeljebb 10 kulcs hozható létre. A meglévő kulcsok továbbra is működnek.
A volume_usd mezőt a GET /tickers, a GET /pairs, a GET /pairs/{id}, a GET /coins/{slug}/markets és a GET /exchanges/{slug}/tickers végponton egész számként tároltuk, így a centek elvesztek, a 0,50 dollár alatti piacok pedig 0 értéket mutattak. A forgalmak mostantól két tizedesjegyet tartanak meg, és a belőlük képzett összegek már nem öröklik a kerekítést.
A GET /coins/{slug}/sparkline és a GET /exchanges/{slug}/sparkline change mezője a 30d és 365d közötti időszakokban tört szám volt (a 0,05 +5%-ot jelentett), a 24h és a 7d időszakban viszont százalék. Mostantól minden időszakban százalék (az 1.25 +1,25%-ot jelent), így a hosszabb időszakok értékei a korábbiak 100-szorosai, és a 0,5% alatti mozgások már nem kerekednek 0-ra.
Mindkét sparkline-végponton a low és a high egy másik időablakra épített összesítésből származott, és ellentmondhatott a points értékeinek – előfordult például, hogy a low magasabb volt a sor egyes árainál. Mostantól annak az időszaknak a valódi szélsőértékei, amelyből a points mintavételezése történik.
A GET /wallets, a /wallets/timeline, a /wallets/compare, a /wallets/{slug} és a /wallets/{slug}/assets mostantól a vaporware státuszú tárcákat is visszaadja, így a status ezt az értéket is felveheti.
Az elemzésekben szereplő források title és excerpt mezője már nem tartalmaz nyers HTML-entitásokat, például í.
Soha nem szerkesztett cikknél a GET /articles és a GET /articles/{slug} updated_at mezője a rekord bármilyen okból – például megtekintésszám vagy szavazat miatt – történt utolsó változását mutatta. Mostantól az utolsó szerkesztői módosítást mutatja, ennek hiányában a közzététel dátumát, és a POST /articles/{slug}/feedback már nem módosítja.
Az elemzések mostantól tartalmazzák a sentiment mezőt: bullish, bearish, sheepish, illetve null, ha nincs besorolva.
TypeScript-, Python-, PHP-, Go-, Rust-, Java-, C#- és C++-kliensek, mindegyik minden végpontot lefedve, ugyanazzal a transzportmaggal: Bearer hitelesítés, boríték kicsomagolása, X-Quota-* beolvasása, újrapróbálkozás 429 és 5xx esetén, tipizált hibák és lapozás.
A végpontok mostantól megkövetelhetnek egy csomagot. Bevezetéskor a GET /sentiment/indicators Pro csomagot igényelt, a GET /sentiment/bull-bear, a GET /sentiment/altseason, a GET /global, a GET /global/heatmap és a GET /global/history/{metric} pedig Starter csomagot. A csomagodon kívüli hívás 403 plan_required választ ad, amelyben a details.required_plan megnevezi a feloldáshoz szükséges csomagot, és nem fogyaszt kvótát.
A hat /liquidations végpontot minden csomagban kikapcsoltuk: 503 endpoint_unavailable választ adnak („This endpoint is temporarily unavailable.”), és nem fogyasztanak kvótát.
A Pro csomag havi kvótája 500 000 kérésről 250 000 kérésre csökkent.
Az általános GET /coins/{slug}/indicators/{family} végpontból 13 külön dokumentált végpont lett ugyanazokon az útvonalakon: rsi, stoch-rsi, sma, cci, mfi, williams-r, price-volatility, volume-volatility, macd, obv, adx, vwap és cmf. A meglévő hívások nem változnak; ismeretlen indikátornévre mostantól egyszerű 404 a válasz, az érvényes nevek listája nélkül.
Induláskor a Data API-hívások és a beágyazott widgetek kérései egyetlen közös, a beágyazási csomaghoz kötött havi keretből fogyasztottak. A Data API-nak mostantól saját Free, Starter és Pro csomagja, előfizetése és havi kvótája van, saját számlázási időszakkal: a Free csomagon ez az UTC szerinti naptári hónap, a fizetős csomagokon a megújítás napjához igazodik. A GET /ping és a GET /usage a Data API-csomagot adja vissza, a /usage pedig csak a Data API-hívásokat számolja. A szétválasztáskor a korlátok nem változtak.
A referencia a /{locale}/documentation címről a /{locale}/documentation/api/v1 címre, a Postman-gyűjtemény és az OpenAPI YAML pedig a /documentation.postman és a /documentation.openapi címről a /documentation/api/v1.postman és a /documentation/api/v1.openapi címre költözött. A régi útvonalakat átirányítás nélkül eltávolítottuk; a /api/v1/openapi.json nem változott.
Indulás: 73 művelet 15 csoportban – érmék, árak, piacok, tőzsdék, tárcák, globális adatok, hangulat, indikátorok, likvidálások, átváltás, kalkulátorok, szerkesztői tartalom, riasztások, webhookok és metaadatok. Bearer kulcsok a data-api jogosultsággal, a { data, meta } boríték, decimális sztringes pontosság, X-Quota-* fejlécek és aláírt webhookok. A Data API-hívások és a beágyazott widgetek kérései a beágyazási csomag alatt egyetlen havi kvótán osztoztak, a hosszabb indikátor-időablakokhoz pedig Starter csomag kellett.
A megszüntetéseket itt és e-mailben, minden kulcstulajdonosnak legalább hat hónappal az eltávolítás előtt bejelentjük – lásd a megszüntetési szabályzatot. A gépi olvasásra kész index a /apis.json címen a legújabb bejegyzés dátumát viseli modified bélyegként.