- 1. rész, a koncepció. Ezt olvasd el először. A v3 nem átnevezés, hanem újratervezés: ha a régi végpontokat egy az egyben leképezed, hadakozni fogsz az API-val. Az itt eltöltött tíz perc napokat spórol később.
- 2. rész, az API. Végpontonkénti leképezés, kéréspéldák, állapotgépek és egy migrációs ellenőrzőlista.
api.deprecation webhook eseményre a kivezetési értesítésekhez.
Tartalom. 1. rész: 1.1 miért létezik a v3, 1.2 objektummodell, 1.3 képességenkénti készenlét, 1.4 feladathurok, 1.5 pénzmozgás, 1.6 állapotgépek, 1.7 konvenciók, 1.8 aranyút. 2. rész: 2.1 ügyfelek, 2.2 képességek, 2.3 feladatok és beadványok, 2.4 számlák, 2.5 címzettek és rendeltetési helyek, 2.6 árajánlatok és átutalások, 2.7 webhookok, 2.8 sandbox, 2.9 örökölt végpontok, 2.10 migrációs sorrend, 2.11 buktatók ellenőrzőlistája.
1. rész, a koncepció
1.1 Miért létezik a v3
A v1 és v2 négy egymással átfedő módot fejlesztett ki arra, hogy egy ügyfelet fizetésre kész állapotba hozzon:/rails, /banks, /accounts/applications és az üzleti rail-applications felület, mindegyik saját státuszszókészlettel. A dokumentumgyűjtés (/documents, KYC importok, verifikációs SDK tokenek) el volt választva attól, amit valójában feloldott. A v3 mindezt hat erőforrássá tömöríti: az ügyfél plusz öt dolog, amit birtokol:
1.2 Az objektummodell
Két strukturális szabály, amit érdemes elsajátítani:- A képességek mindent kapuznak. A számlák egy
readyképesség alatt kerülnek kiállításra; az árajánlatok egy képesség ellenében árazódnak. A regisztráció az, hogy a szükséges képességeketreadyállapotba juttatod. - A feladatok bárhová kapcsolódhatnak. Egy képesség, egy számla vagy egy futó átutalás is hordozhat
openTaskIdsmezőt. Bárhol is látod, a hurok ugyanaz: feladat olvasása, válaszok beküldése, felülvizsgálat kivárása, szülő újraolvasása.
1.3 A készenlét képességenkénti, nem ügyfélenkénti
A v1 összekeverte a/rails készenlétet egy ügyfélszintű KYC kapuval. A v3-ban nincs ügyfélstátusz: egy ügyfél teljesen használható lehet stablecoin_transfers-en, miközben a sepa képességének még nyitott feladatai vannak. A pooled-számlás képességek általában gyorsabban válnak ready-vé, mint a nevesítettek, így kezdj el tranzakciózni azon, ami ready, ne várj mindenre.
Ha a v1 vagy v2 kódod az ügyfél verifikációs státuszáról vezérli az UI jelvényeit, írd át:
- „Tud tranzakciózni X-en?” azzá válik, hogy X képesség
status == "ready". - „Tenniük kell valamit?” azzá válik, hogy van-e olyan feladat, amelynek státusza
action_required(a képesség jellemzőenrestricted-et mutat,statusReason.resolution: "complete_tasks"értékkel). - „A Swipeluxra várunk?” azzá válik, hogy feladatok
in_review, képességpendingállapotban.
1.4 A feladathurok
Mindazt, amit a régi dokumentum- és KYC-felület csinált, most ez az egyetlen hurok végzi: Kulcstulajdonságok:- Egy feladat
requirements[]tömböt hordoz, ezek az egyéni kérések. Mindegyiknek van egy feladatonkéntirequirementIdazonosítója, egy stabilkeymezője, amely megnevezi a kérést (például lakcímigazolás, ez alapján deduplikáld az UI-t), valamint egy típusosrequestmező, amely pontosan leírja a várt bemenetet (szöveg, dátum, választás, dokumentum, nyilatkozat stb.). - A beküldés felülvizsgálatköteles: soha nem módosítja közvetlenül a képesség vagy a számla állapotát, csak az elfogadás. Egy kivétel: a
profileválaszok beküldéskor átírják az ügyfélprofilt (2.3). Beküldés után pollozd a feladatot vagy a szülő erőforrást. - A
taskRevision(a feladatrevision-jének visszaküldése) egyidejűségi őr: ha a feladat megváltozott, mióta beolvastad, olvasd újra és építsd újra a válaszokat. - Az
absenceegy elsőrangú válasz („nem rendelkezem ezzel, mert…”), használd ezt ahelyett, hogy a követelményeket megválaszolatlanul hagynád.
1.5 Pénzmozgás
Egy folyamat a befizetésekre, kifizetésekre és stablecoin-mozgásokra. Nincs iránybemenet, soha nem deklarálod, hogy befizetés vs. kifizetés. A be- és kimeneti pénznem alakja egy csak olvashatódirection mezőt vezet le az árajánlaton és az átutaláson: fiat_to_stablecoin (befizetés), stablecoin_to_fiat (kifizetés) vagy stablecoin_move.
1.6 Erőforrásonként egy állapotgép
Minden státuszt hordozó erőforrásnak saját enumja van, és minden nem-boldog státusz strukturált okot hordoz. A számlák, igénylések és átutalások osztoznak a{ code, message, actor, retryable } alakon: a számlák és igénylések statusReason-ként, az átutalások stateDetail-ként teszik közzé. Az actor megmondja, kinek kell cselekednie (customer, developer, provider, network, swipelux), a retryable pedig, hogy segít-e az újrapróbálás. A képességek { code, resolution, message } formát használnak, ahol a resolution (complete_tasks, wait, contact_support, none) megmondja, mi viszi tovább a képességet. A code értékek nyílt, csak bővíthető katalógus: ágazz el resolution (vagy actor plusz retryable) alapján, és toleráld a soha nem látott kódokat.
Az útmutató nem járja végig ezeket az állapotokat (
rejected, suspended, disabled, failed, canceled), ezek terminálisak vagy támogatásvezéreltek; erőforrásonkénti definíciók a specifikációban.
A Transfer, kifejtve:
1.7 Konvenciók
Idempotencia-szabályok, amelyeket érdemes elsajátítani, mielőtt kódot írsz:
- Ugyanazon kulcs újrahasználata eltérő testtel
409 idempotency_conflict, ameddig a kulcsot megőrizzük (legalább 7 nap), ezért soha ne tervezz kulcs-újrahasználatot. Generálj friss UUID-t minden logikai művelethez, és tárold a feladattal együtt. - Az újrajátszás a hibákat is lefedi: ha az eredeti kérés terminális 4xx-szel végződött, ugyanaz a kulcs plusz test újra ugyanazt a problémaválaszt adja vissza.
- Két egyidejű kérés ugyanazzal a kulccsal: az egyik nyer, a másik
409-et kap. Az újrapróbálást a vesztes csak azután végezze el, hogy a nyertes lezárult; az újrajátszás az eredeti választ adja vissza.
1.8 Az aranyút
2. rész, az API
2.1 Ügyfelek
Létrehozás,
type szerinti diszkriminációval (illusztratív értékek, mezőnevek a specifikáció szerint):
- A létrehozás progresszív: önmagában a
{ "type": "individual" }is érvényes létrehozás. A hiányzó tények soha nem érvénytelenítik az ügyfelet, hanem később bevételi feladatokként jelennek meg az azokat igénylő képességeken. - Az üzleti ügyfelek
businessmezőt plusz regisztrációs adatokat hordoznak. A v1 részvényes-CRUD-ja kapcsolt felekre képeződik le, kiterjesztve az igazgatókra, tisztségviselőkre és tulajdonosokra: hozz létre őket inline az ügyfél létrehozásakor (mindegyik stabilrp_azonosítót kap), vagy kezeld őket a dedikált kapcsolt-fél végpontokon keresztül. - Nincs ügyfél
statusmező, lásd 1.3. - A meglévő ügyfelek átvihetők: a v1-en vagy v2-n létrehozott ügyfelek ugyanazzal az azonosítóval címezhetők a v3 végpontokon. A v3 olvasás egy szanitizált nézet, azok az örökölt értékek, amelyek nem felelnek meg a v3 validációnak, hiányzóként jönnek vissza. Az első v3 írás után ez a nézet állandósul: a hiányzó értékek nem térnek vissza maguktól. Ezért gazdagíts korán, tervezz egy egyszeri lépést, amely a saját nyilvántartásaidból
PATCH-el a teljes profilt, mielőtt v3 olvasásokra támaszkodnál. A v1metadatakülön névtér, és nem kerül átvitelre, állítsd be újra a v3-on. - Az
externalIdelsőrangú és egyedi az ügyfeleid között a v3-on, környezetenként (409 duplicate_external_id). Egy ügyfél archiválása nem szabadítja fel azexternalId-t, tisztítsd PATCH-csel a DELETE előtt, ha újra akarod használni. - A
DELETEegy archiválási kaszkád (nincs visszaállítás; az azonosítókat soha nem használjuk újra). Blokkolt409 customer_has_active_resourcespluszblockingResources[]üzenettel, amíg bármely nem archivált számla vagy folyamatban lévő átutalás létezik. - PATCH merge szabályok: az explicit
nulltöröl egy nullázható mezőt, a tömbök teljesen felülíródnak (kivéve az inline kapcsolt feleket, amelyek azonosító szerint upsert-elődnek), ametadatakulcsok merge-elődnek. A teljes sémák és listaszűrők az OpenAPI specifikációban vannak.
2.2 A /rails, /banks és igénylések Képességekké válnak
- Egy képesség egyenlő:
method(ach,wire,rtp,pix,sepa,swift,spei,pse,transfers_3_0,faster_payments,sepa_instant,uaefts,card,stablecoin_transfersstb.) pluszaccountType(pooledvagynamed,nullnem-banki módoknál) pluszdirections(payinvagypayout). A publikuscapabilityIda minősített pár (sepa_pooled,ach_named) vagy a puszta módszer acardésstablecoin_transfersesetén. - Minden képesség-igénylés egy application-t szül, a próbálkozásonkénti rekordot a
.../capabilities/{capabilityId}/applications(plusz/{applicationId}/history) alatt, saját státuszokkal (1.6) ésstatusReason-nel. Ez egy kérés audit-nyoma; a napi munkához pollozd magát a képességet. - A
capabilities/supportedvisszaadja az elérhetőséget (available,betavagydisabled), a jogosultságot és a kínált intézményeket. A bankválasztás a kérési időben történik az opcionálisinstitutionstömbön keresztül, nincs külön/bankserőforrás. A kihagyása (vagy[]küldése) minden alapértelmezett intézményt kiválaszt; azisDefault: trueegy ügyfél- és képesség-specifikus jelző, nem globális. Egy nem üres lista felülírja az alapértelmezéseket, és egy bank-alapú képesség, amelyre nem érvényes alapértelmezett,422 capability_institutions_requiredhibát ad. Az intézmény-azonosítók átlátszatlanok, toleráld az újakat. - A
stablecoin_transfersautomatikusan biztosított az ügyfél létrehozásakor ésreadyállapotban születik (tehát soha nem kérik, és nem törölhető). Acardcsak egyéni ügyfeleknél. - A képességen található
openTaskIdsa „mi a következő teendőm” mutatód. A nyitott azt jelenti:action_requiredvagyin_review, és a gyűjtés tartalmazza az aktív függőségeken keresztül elért közös ügyfélszintű feladatokat is. - A
cancelcsakpendingvagyrestrictedállapotból működik és blokkoló erőforrások nélkül, egyébként409 capability_not_cancelable, amelynek problématestje felsorolja ablockingResources-t. A törlés utáni újraigénylés egy friss létrehozás új idempotenciakulccsal. - Pollozd a GET-et. A képesség állapota olvasáskor frissül; pollozd a
GET .../capabilities/{capabilityId}-t, vagy iratkozz fel acapability.status_changed-re, ne cache-elj. - Egy módszer kérése egyszerre teheti elérhetővé a kapcsolódó módszereket, kezeld a képességeket olyan halmazként, amit újraolvasol, nem pedig egyetlen sorként, amit követsz.
- Használd a
tasks-preview-t, hogy megmutasd az onboarding-kéréseket, mielőtt elköteleződsz egy igénylés mellett. - A verifikáció nem egyszeri: új feladatok jelenhetnek meg egy már
readyképességen (periodikus vagy eseményvezérelt újraverifikáció). Tartsd bekötve a feladathurkot az ügyfél teljes életciklusára, ne csak az onboardingra.
2.3 A Dokumentumok és KYC Feladatokká és Beadványokká válnak
Elnevezési megjegyzés. Ezek a végpontok rövid ideig
requirements és fulfillments néven kerültek kiadásra. 2026-08-02 óta a publikus nevek tasks és submissions. Az átnevezés csak az erőforrásokat és a végpontútvonalakat érintette, a feladaton belüli requirements[] tömb és annak requirementId mezője megtartják ezeket a neveket.GET /v3/customers/{customerId}/tasks-t, válaszolj a POST .../tasks/{taskId}/submissions-szel.
A hurok körül:
- Nyers fájltárolás:
POST/GET/DELETE /v3/customers/{customerId}/documents(plusz/{documentId}), tölts fel egyszer az API-kulcsoddal, majd hivatkozz a dokumentum-azonosítókra a beküldési válaszokban. Ez felváltja az összes upload-token és direct-upload bevételt. - Új olvasások:
GET /v3/tasks(kereskedő-szintű bejövő láda),GET /v3/transfers/{transferId}/tasks,GET .../tasks/{taskId}/history,GET .../tasks/{taskId}/submissions(plusz/{submissionId}).
- Válasz-típusok:
profile,text,date,single_select,multi_select,boolean,attestation,document,resource_reference,absence. Minden követelményrequestobjektuma megmondja, milyen típust vár. - Egy beküldésnek meg kell válaszolnia az aktuális kör minden cselekvésre váró követelményét, azzal a pontos
taskRevision-nel, amit beolvastál. A részleges beküldéseket elutasítjuk. - A
profileválaszok átírnak: frissítik az ügyfélprofilt a normál validációs úton, és azonnal újraértékelnek minden képességet, amely ugyanarra a bevételi munkára hivatkozik. Azok a testvér-bevételi feladatok, amelyek követelményei mind teljesülnek, automatikusan lezárulnak. - A követelmények alternatív csoportokat alkothatnak (
alternativeKey): pontosan egyet küldj be a csoportból. - A
changes_requestednöveli aremediationRound-ot ésreviewFeedback-et hordoz. Olvasd újra a feladatot, küldj be újra friss idempotenciakulccsal. - A hosztolt verifikációs URL-ek csak az ügyfél-hatókörű feladatrészletben (
GET /v3/customers/{customerId}/tasks/{taskId}) jelennek meg, és csak amíg a munkamenet cselekvésre kész; a listák és aGET /v3/tasks/{taskId}szándékosan URL-mentesek. - A felhasználási feltételek is feladat: az
openTaskIdstartalmazhat egycategory: "terms_of_service"feladatot, amelynek hosztolt elfogadási oldala ugyanígy van linkelve (csak ügyfél-hatókörű részlet). Az általános beküldések nem fogadhatnak el feltételeket, és a KYC-jóváhagyás soha nem implikálja a feltételek elfogadását. - A feladatok képességenkénti hatókörűek, így „ugyanaz” a kérés (például lakcímigazolás) képességenként egyszer jelenhet meg. Deduplikálj az UI-ban a követelmény
keymezője alapján. - Nincs fordítási réteg: a
/v1/documents-re való posztolás nem oldja fel a v3 képességeket. Amint egy ügyfél v3-on van, vezess minden kérést feladatokon keresztül.
2.4 Számlák és tárcák
Létrehozás,
origin plusz type szerinti diszkriminációval. A kiállított bankszámlák egyetlen method-ot vesznek fel; az külső bankszámlák helyette egy methods tömböt (method küldése ott elutasításra kerül):
- A
countrykiállított bankszámlákon opcionális (metódusonként alapértelmezett); külső bankszámlákon add meg explicit módon. A tárca-számlákon egyáltalán nincs ország. - A
settlement.accountIdkötelező kiállított bankszámlákon: azt a kiállított tárca-számlát nevezi meg, amely megkapja a bankszámlára beérkező befizetésekből elszámolt pénzeszközöket. - A kiállított számlák közzéteszik:
details(IBAN vagy routing plusz számla vagy cím), verzionáltrouting(a befizetési koordináták forogva változhatnak, mindig a legfrissebb olvasást rendereld),fees,balances. - Hálózatok:
polygon,ethereum,base,arbitrum,optimism,bsc,avalanche. - A képesség-kapu csak a kiállított számlákra vonatkozik: egy nem-ready képesség elleni létrehozás képességkódos hibával elbukik, kérd meg először a képességet (2.2). A külső számláknak nincs szükségük képességre (és ügyfél-jóváhagyásra sem); csak kérés-séma és bankadat-validációt kapnak.
- A kiállított bankszámlák
provisioning-ban születnekdetails: null-lal. Pollozd a számlát vagy figyeld azaccount.status_changed-et, amígreadynem lesz. - A
DELETEarchivál, soha nem véglegesen töröl. A folyamatban lévő átutalások által hivatkozott számlák409 account_has_active_transfers-t adnak. Próbáld újra, miután azok az átutalások terminális állapotba kerülnek. - Új a v3-ban: Szabályok, állandó utasítások egy kiállított tárca-számlán (
POST/GET /v3/customers/{customerId}/rules,GET/PATCH/DELETE .../rules/{ruleId}), amelyek automatikusan átseperik a bejövő pénzeszközöket egy másik számlára vagy tárca-rendeltetésre. Nincs v1 vagy v2 megfelelője.
2.5 Címzettek és rendeltetési helyek
A v2-nek nem volt címzett-fogalma. Ha v2-n vagy és harmadik feleknek fizetsz ki, ez egy új felület, nem átnevezés.
- Recipient egyenlő azzal, hogy ki:
individual(kereszt- és vezetéknév) vagybusiness(cégnév), kötelezőrelationshipmezővel (employee,contractor,vendor,subsidiary,merchant,customer,landlord,family,other). A címzettek és rendeltetési helyek csak harmadik felekre vonatkoznak. Egy első felet érintő kifizetés egyáltalán nem használ címzettet: cél az ügyfél sajátacc_számláinak egyike, mint az árajánlatdestinationId-je (2.6). - Destination egyenlő azzal, hogy hova: módszerenként típusos,
sepa(iban, bic opcionális),achvagywire(routing plusz számla),swift(teljes koordináták plusz opcionális közvetítő),spei(clabe),pse,transfers_3_0(cbu) stb., plusz tárca-rendeltetések. Minden rendeltetésnek saját státusza van. Figyeld adestination.status_changed-et. - A fiat rendeltetések a címzett teljes
addressmezőjét (utca, város, irányítószám, ország) igénylik létrehozás előtt. A hiányzó részek422 recipient_address_requiredhibával buknak el. A tárca-rendeltetések átugorják a címet, de felső szintűownershipmezőt igényelnek (self_custodied, vagycustodialegy letétkezelő nevével). - A kedvezményezett-név pontossága számít: a fogadó bankok a számla jogi nevét egyeztetik. Küldd el a pontos jogi keresztnév plusz vezetéknevet vagy cégnevet, ne egy megjelenítési becenevet.
- A módszerenkénti rendeltetésmező-sémák az OpenAPI specifikációban vannak.
2.6 Árajánlatok és átutalások
- A
destinationIdegyacc_(ügyfél tulajdonában lévő számla) vagydst_(címzett rendeltetése) azonosítót vesz fel. A fiat-finanszírozású árajánlatoknak (befizetéseknek) egyacc_számlát kell megcélozniuk, egydst_cél mindig kifizetést jelent (egyébként422 quote_direction_invalid). - Az árajánlatokon és átutalásokon szereplő
externalIdegy nem-egyedi korrelációs hivatkozás (visszaküldve az olvasásokon, szűrhető a listákon). A környezetenkénti egyediségi szabály (2.1) csak az ügyfélexternalId-jére vonatkozik. - Egy árajánlatot pontosan egyszer hajts végre, az
expiresAtelőtt. Egy lejárt árajánlat409 quote_expiredhibával bukik el, egy második végrehajtás409 quote_already_executed-vel (a probléma hordozza a meglévőtransferId-t). - Az átutalás-visszavonás még nem támogatott: a
POST .../cancelminden állapotban409 transfer_not_cancelable-t ad vissza. A maicanceledátutalások a finanszírozási ablak lejártából származnak egy finanszírozatlan befizetésnél, nem ebből a végpontból. - A befizetések
awaiting_fundsállapotban kezdenek: rendereld aGET .../instructions-t a fizetőnek, banki koordinátákat plusz hivatkozási vagy közleménykódot fiat esetén, letéti címet kripto esetén. A hivatkozási kód az, ahogy a befizetést egyeztetjük. Mindig jelenítsd meg. statepluszstateDetaila gépileg olvasható alállapotokhoz; azaction_requiredazt jelenti, hogy egy megfelelőségi feladat van csatolva (openTaskIds,GET .../tasks), válaszolj beadványokon keresztül.- A kiállított számlákon észlelt bejövő befizetések átutalásokként jelennek meg
origin: "inbound_deposit"(szemben a"quoted"-val). - A fizetési hálózati hivatkozások a
referencesalá vannak konszolidálva:transactionHash,traceNumber,imad,uetr,explorerUrl,returnedTransferId.
Két migrációs figyelmeztetés:
- Az átutalások nem lépnek át verziók között. A v1-en vagy v2-n létrehozott átutalások nem olvashatók v3-ból. A lista kihagyja őket, és a
GET /v3/transfers/{transferId}404-et ad. Előbb a létrehozást vágd át, tartsd meg a v1 olvasási utat, amíg azok az átutalások terminális állapotba nem jutnak, majd dobd el. - Nincs token-csere. A
stablecoin_moveugyanazt a be- és kimeneti pénznemet igényli: USDC-ről USDT-re422 recipient_destination_invalid-del bukik,currency_mismatchmezőhibát hordozva. Mindkét oldalon ugyanaz a hálózat, nincs bridge-elés, és a tárca-tárca mozgások jelenleg csak nulla díjas kézbesítést támogatnak: egy olyan árajánlat, amelynek platform- vagy fejlesztői díja nem nulla,422 amount_not_deliverable-lel bukik.
2.7 Webhookok
Eseménykatalógus:
customer.created, customer.updated, customer.archived, capability.created, capability.status_changed, application.status_changed, recipient.status_changed, destination.status_changed, account.created, account.status_changed, account.details_changed, transfer.created, transfer.state_changed, api.deprecation.
- A
GET /v3/webhooks/portalegy hosztolt kezelőportál URL-t ad vissza a kézbesítési naplókhoz, újrapróbálkozásokhoz és kézi újrajátszáshoz. - A
transfer.createdjelenleg az örökölt v1 payload-alakban van kézbesítve (a v3 boríték aktiválódik, amikor a v1 webhookok lejárnak). Kezeld tisztán jelzésként, és GET-eld az átutalást; ne építs a testére. - Az események jelzések: fogadáskor GET-eld az erőforrást, és az olvasás alapján cselekedj. Soha ne építs állapotot esemény-payloadokra vagy sorrendre. A kézbesítés legalább egyszeri, késleltetett vagy átrendezett lehet. Deduplikálj esemény-azonosító alapján, és pótold a kihagyott eseményeket minden lista inkluzív
updatedAfterszűrőjével. - Iratkozz fel az
api.deprecation-re, ez a verziók kivezetésének gépi csatornája. - Ma nincs
task.*esemény: beküldés után pollozd a feladatot vagy a szülőjét.
2.8 Sandbox
Ugyanaz a base URL; a sandbox API-kulcs választja meg a környezetet.
A v3 sandbox végponttól végpontig szimulálja a felülvizsgálati hurkot: hozz létre egy feladatot, küldj be rá,
review-old accepted vagy rejected állapotra, figyeld a képesség feloldódását. Próbáld el a remediációs UX-et éles környezet előtt. Mind a sandboxban létrehozott feladatok, mind a kért képességeken megjelenő szokásos bevételi feladatok így felülvizsgálhatók; ahogy a produkcióban, itt sem tüzelnek feladat-webhookok, pollozz (2.7).
2.9 Örökölt végpontok v3 helyettesítés nélkül
Ezeknek nincs v3 helyettesítése. A legtöbb változatlanul v1-en marad (tartsd meg a meglévő hívásaidat); kettő teljesen kivezetésre kerül (lásd a rendelkezést):
Minden más publikus v1 vagy v2 végpont megjelenik egy fenti leképezési táblázatban.
2.10 Javasolt migrációs sorrend
Minden lépés függetlenül szállítható; a v1 vagy v2 és a v3 párhuzamosan fut ugyanazon ügyfélkör ellen. Próbálj el minden lépést a sandbox kulcsod ellen (2.8), mielőtt megismételnéd produkcióban.1
Csőhálózat
Idempotency-Key minden hatással bíró kérésen (POST, PATCH, PUT, DELETE; a sandbox végpontok mentesek); pénz stringként; kurzor-lapozási segédeszközök.2
Webhookok
Regisztrálj v3 végpontokat eseményenként, beleértve az
api.deprecation-t. A v1 egyetlen végpont-konfigurációja egy külön felület, hagyd a helyén; a kettő párhuzamosan fut a 9. lépésbeli leürítésig.3
Profil-gazdagítás
PATCH /v3/customers/{id} a teljes profillal, amit tartasz (a v1 kevesebbet gyűjtött, mint amennyit a v3 kitesz), és állítsd be újra a metadata-t. Szándékosan ez legyen az első v3 írás ügyfelenként: kitölti a szanitizált nézetet, mielőtt az állandósulna (2.1).4
Olvasások
Irányítsd a customer, capability és account olvasásokat v3-ra; írd át az ügyfél-státusz logikát az 1.3 szerint. Csak a 3. lépés után; a nem gazdagított olvasások örökölten-érvénytelen mezők nélkül jönnek vissza.
5
Onboarding írások
Létrehozás
POST /v3/customers-en keresztül; kérj képességeket a /rails, /banks vagy alkalmazások helyett; építsd fel a feladathurkot (a legnagyobb új UI-munka, a tasks-preview segít megmutatni a kéréseket előre). Ettől a ponttól hagyd abba a /v1/documents posztolását v3-vezérelt ügyfelek számára, azok nem oldják fel a képességeket (2.3).6
Számlák
Adj ki v3-on keresztül; az importokat mozgasd
origin: external-re.7
Kifizetések
Címzettek plusz rendeltetési helyek, majd árajánlat és átutalás.
8
Befizetések
Árajánlat, átutalás, utasítások; tartsd meg a hivatkozási kód renderelését.
9
Leürítés
Az átutalások nem lépnek át verziók között (2.6). Tartsd meg a v1 vagy v2 olvasási utat és a v1 webhook végpontot az ott létrehozott átutalásokhoz, dual-read-olj, amíg terminális állapotba nem érnek, majd dobd el a régi klienst és a v1 webhook konfigot.
2.11 Buktatók ellenőrzőlista
- Friss UUID logikai műveletenként, a feladattal együtt megőrizve és újrapróbálkozáskor újrahasználva; soha ne használj újra egy kulcsot megváltozott testtel (
409 idempotency_conflict). A sandbox végpontok mentesek a fejléc alól. - Gazdagítsd a meglévő ügyfeleket (
PATCHa teljes profillal, állítsd be újra ametadata-t, az nem kerül át) minden más v3 írás előtt, az első v3 írás állandóvá teszi a szanitizált nézetet. - Az
externalIdegyedi környezetenként és az archiválás nem szabadítja fel, tisztítsdPATCH-csel aDELETEelőtt, ha újrahasználást tervezel. - Nincs ügyfél
statusmező, származtasd a készenlétet képességenként. - Az
action_requiredés azin_reviewegyaránt nyitott feladatot jelent. - A beküldések felülvizsgálatkötelesek (a beküldés nem ugyanaz, mint a feloldás), és meg kell válaszolniuk minden cselekvésre váró követelményt a pontos
taskRevision-nel. Nem egyezés esetén olvasd újra és építsd újra. - Nincs
task.*webhook, pollozd a feladatot (vagy szülőjét) minden beküldés után. - A
changes_requestedújrapróbálkozás egyenlő: olvasd újra a feladatot, friss válaszok, friss idempotenciakulcs. - A
/v1/documents-re való posztolás soha nem old fel v3 képességet, amint egy ügyfél feladatokon van, minden kérést feladatokon keresztül vezess. - Új feladatok jelenhetnek meg egy már
readyképességen, tartsd bekötve a feladathurkot az onboarding után is, ne csak közben. - A képesség
cancelcsakpendingvagyrestrictedállapotból működik blokkoló erőforrások nélkül (409 capability_not_cancelable); a törlés utáni újraigénylés friss létrehozás friss idempotenciakulccsal. - A képességnek
ready-nek kell lennie, mielőtt alatta számlákat állítasz ki vagy ellene árajánlatot kérsz. - Az árajánlatnak pontosan egyik oldalon van összege; nincs irány mező; végrehajtsd pontosan egyszer az
expiresAtelőtt (409 quote_expiredvagy409 quote_already_executed). - A stablecoin-mozgások csak azonos pénznemű, azonos hálózatúak (USDC-ről USDT-re
422-vel bukik); a tárca-tárca csak nulla díjas kézbesítést támogat. - A
DELETEarchivál, soha nem véglegesen töröl. A számla-törlést blokkolják a folyamatban lévő átutalások (409 account_has_active_transfers); az ügyfél-törlést emellett bármely nem archivált számla is (409 customer_has_active_resources,blockingResources[]nevezi meg őket). - A v1 vagy v2 átutalások láthatatlanok a v3 olvasások számára (a lista kihagyja, a GET 404), dual-read-elj a leürítésig, majd dobd el a régi utakat.
- A befizetési
routingés utasítások forogva változhatnak, mindig a legfrissebb GET-et rendereld, és mindig mutasd meg a hivatkozási kódot. - A webhookok jelzések; a GET az igazság, deduplikálj esemény-azonosító alapján, pótold a kihagyott eseményeket
updatedAfter-rel.