- Part 1, el concepte. Llegeix-la primer. v3 és un redisseny, no un canvi de nom: si mapes endpoints antics un a un, lluitaràs contra l’API. Deu minuts aquí t’estalviaran dies més tard.
- Part 2, l’API. Mapatge endpoint per endpoint, exemples de peticions, màquines d’estat i una llista de verificació de migració.
api.deprecation per rebre avisos de retirada.
Continguts. Part 1: 1.1 per què existeix v3, 1.2 model d’objectes, 1.3 preparació per capability, 1.4 bucle de tasques, 1.5 moviment de diners, 1.6 màquines d’estat, 1.7 convencions, 1.8 ruta daurada. Part 2: 2.1 customers, 2.2 capabilities, 2.3 tasks i submissions, 2.4 accounts, 2.5 recipients i destinations, 2.6 quotes i transfers, 2.7 webhooks, 2.8 sandbox, 2.9 endpoints heretats, 2.10 ordre de migració, 2.11 llista d’entrebancs.
Part 1, el concepte
1.1 Per què existeix v3
v1 i v2 van desenvolupar quatre maneres solapades de deixar un customer llest per a pagaments:/rails, /banks, /accounts/applications i la superfície empresarial rail-applications, cadascuna amb el seu propi vocabulari d’estats. La recollida de documents (/documents, importacions de KYC, tokens SDK de verificació) estava desconnectada d’allò que realment desbloquejava. v3 ho condensa tot en sis recursos: el customer més cinc coses que posseeix:
1.2 El model d’objectes
Dues regles estructurals per interioritzar:- Les capabilities regulen tot. Les accounts es proveeixen sota una capability
ready; les quotes es cotitzen contra una capability. L’onboarding equival a portar les capabilities que necessites aready. - Les tasks s’adjunten a qualsevol lloc. Una capability, una account o una transfer en curs poden portar
openTaskIds. Allà on les vegis, el bucle és el mateix: llegir la task, enviar respostes, esperar la revisió, rellegir el recurs pare.
1.3 La preparació és per capability, no per customer
v1 embolicava la preparació de/rails amb una barrera de KYC a nivell de customer. En v3 no hi ha estat de customer: un customer pot ser plenament utilitzable en stablecoin_transfers mentre la seva capability sepa encara té tasks obertes. Les capabilities de compte agrupat solen passar a ready més ràpid que les nominatives, així que comença a operar en allò que sigui ready en lloc d’esperar-ho tot.
Si el teu codi v1 o v2 controla insígnies de UI basant-se en l’estat de verificació del customer, reescriu-lo:
- “Pot operar en X?” es converteix en capability X amb
status == "ready". - “Ha de fer alguna cosa?” es converteix en qualsevol task amb estat
action_required(la capability normalment mostrarestrictedambstatusReason.resolution: "complete_tasks"). - “Estem esperant Swipelux?” es converteix en tasks
in_review, capabilitypending.
1.4 El bucle de tasques
Tot el que feia l’antiga superfície de documents i KYC ara és aquest únic bucle: Propietats clau:- Una task porta
requirements[], les peticions individuals. Cadascuna té unrequirementIdper task, unakeyestable que nomena la petició (per exemple prova de domicili, deduplica la teva UI per ella) i unarequesttipada que descriu exactament quina entrada es desitja (text, data, selecció, document, atestació, etc.). - Enviar està subjecte a revisió: mai muta directament l’estat de la capability o l’account, l’acceptació sí. Una excepció: les respostes
profilees propaguen al perfil del customer en enviar-se (2.3). Després d’enviar, consulta la task o el recurs pare. taskRevision(eco delrevisionde la task) és un mecanisme de concurrència: si la task ha canviat des que la vas llegir, rellegeix-la i reconstrueix les teves respostes.absenceés una resposta de primer nivell (“no tinc això perquè…”), fes-la servir en lloc de deixar requirements sense resposta.
1.5 Moviment de diners
Un sol flux per a payins, payouts i moviments de stablecoin. No hi ha entrada de direcció, mai declares payin contra payout. Les formes de moneda d’entrada i de sortida deriven undirection de només lectura a la quote i a la transfer: fiat_to_stablecoin (payin), stablecoin_to_fiat (payout) o stablecoin_move.
1.6 Una màquina d’estat per recurs
Cada recurs amb estat té el seu propi enum, i cada estat no exitós porta una raó estructurada. Accounts, applications i transfers comparteixen la forma{ code, message, actor, retryable }: accounts i applications l’exposen com a statusReason, transfers com a stateDetail. actor indica qui ha d’actuar (customer, developer, provider, network, swipelux), retryable indica si reintentar pot ajudar. Les capabilities fan servir { code, resolution, message }, on resolution (complete_tasks, wait, contact_support, none) indica què fa avançar la capability. Els valors de code formen un catàleg obert i només additiu: fes branching per resolution (o actor més retryable), i tolera codis que no hagis vist mai.
Els estats que aquesta guia no recorre (
rejected, suspended, disabled, failed, canceled) són terminals o gestionats per suport; les definicions per recurs són a l’especificació.
Transfer, en detall:
1.7 Convencions
Regles d’idempotència que convé interioritzar abans d’escriure codi:
- Reutilitzar una clau amb un cos diferent produeix
409 idempotency_conflictmentre la clau es retingui (almenys 7 dies), així que mai planifiquis reutilitzar una clau. Genera un UUID nou per operació lògica i persisteix-lo amb el teu job. - La repetició també cobreix els errors: si la petició original va acabar en un 4xx terminal, la mateixa clau més el cos retornen la mateixa resposta de problema.
- Dues peticions concurrents amb la mateixa clau: una guanya, l’altra rep
409. Reintenta la perdedora després de l’estabilització de la guanyadora; la repetició retorna la resposta original.
1.8 La ruta daurada
Part 2, l’API
2.1 Customers
Creació, discriminada per
type (valors il·lustratius, noms de camp segons l’especificació):
- La creació és progressiva:
{ "type": "individual" }per si sol és una creació vàlida. Les dades que falten mai invaliden el customer, apareixen més tard com a tasks d’intake a les capabilities que les necessitin. - Les empreses porten
businessmés dades de registre. El CRUD d’accionistes de v1 es mapa a related parties, ampliat per cobrir directors, executius i propietaris: crea’ls en línia en crear el customer (cada un rep un id establerp_) o gestiona’ls pels endpoints dedicats de related-parties. - No hi ha camp
statusal customer, vegeu 1.3. - Els customers existents es conserven: els customers creats en v1 o v2 són adreçables pel mateix id als endpoints v3. La lectura v3 és una vista sanejada, els valors heretats que no superen la validació v3 tornen absents. Després de la teva primera escriptura v3, aquesta vista es torna permanent: els valors absents no tornen per si sols. Enriqueix aviat, planifica una passada única que
PATCHel perfil complet des dels teus propis registres abans de confiar en les lectures v3. Elmetadatade v1 és un espai de noms separat i no es conserva, torna-ho a establir en v3. externalIdés de primer nivell i únic entre els teus customers en v3, per entorn (409 duplicate_external_id). Arxivar un customer no allibera el seuexternalId, neteja’l amb PATCH abans de DELETE si penses reutilitzar-lo.DELETEés un arxivat en cascada (sense restauració; els ids no es reutilitzen mai). Es bloqueja amb409 customer_has_active_resourcesmésblockingResources[]mentre existeixi qualsevol account no arxivada o transfer en curs.- Regles de fusió de PATCH:
nullexplícit neteja un camp anul·lable, els arrays es reemplacen per complet (excepte related parties en línia, que fan upsert per id), les claus demetadataes fusionen. Els esquemes complets i els filtres de llista són a l’especificació OpenAPI.
2.2 /rails, /banks, applications esdevenen Capabilities
- Una capability equival a
method(ach,wire,rtp,pix,sepa,swift,spei,pse,transfers_3_0,faster_payments,sepa_instant,uaefts,card,stablecoin_transfers, etc.) mésaccountType(pooledonamed,nullper a mètodes no bancaris) mésdirections(payinopayout). ElcapabilityIdpúblic és la parella qualificada (sepa_pooled,ach_named) o el mètode simple per acardistablecoin_transfers. - Cada sol·licitud de capability genera una application, el registre per intent sota
.../capabilities/{capabilityId}/applications(més/{applicationId}/history), amb els seus propis estats (1.6) istatusReason. És la traça d’auditoria d’una sol·licitud; en el dia a dia, consulta la mateixa capability. capabilities/supportedretorna disponibilitat (available,betaodisabled), elegibilitat i institucions ofertes. La selecció de banc passa en el moment de la sol·licitud a través de l’array opcionalinstitutions, no hi ha un recurs/banksseparat. Ometre’l (o enviar[]) selecciona totes les institucions per defecte;isDefault: trueés un flag específic de customer i capability, no global. Una llista no buida sobreescriu els valors per defecte, i una capability bancària sense un valor per defecte aplicable retorna422 capability_institutions_required. Els ids d’institució són opacs, tolera els nous.stablecoin_transferss’atorga automàticament en crear el customer i neixready(per la qual cosa mai se sol·licita ni es cancel·la).cardés només per a individuals.openTaskIdsa la capability és el teu punter de “què faig a continuació”. Obert equival aaction_requiredoin_review, i el rollup inclou tasks compartides a nivell de customer accessibles a través de dependències actives.cancelnomés funciona des dependingorestrictedi sense recursos bloquejants, altrament409 capability_not_cancelable, el cos del problema del qual llistablockingResources. Tornar a sol·licitar després de cancel·lar és una nova creació amb una nova clau d’idempotència.- Consulta el GET. L’estat de la capability s’actualitza en llegir-lo; consulta
GET .../capabilities/{capabilityId}o subscriu-te acapability.status_changed, no facis cache. - Sol·licitar un mètode pot fer disponibles mètodes relacionats alhora, tracta les capabilities com un conjunt que rellegeixes, no com una única fila que segueixes.
- Fes servir
tasks-previewper mostrar les peticions d’onboarding abans de comprometre’t amb una sol·licitud. - La verificació no és única: poden aparèixer noves tasks en una capability ja
ready(reverificació periòdica o dirigida per esdeveniments). Mantén el bucle de tasks actiu durant tot el cicle de vida del customer, no només durant l’onboarding.
2.3 Documents i KYC esdevenen Tasks i Submissions
Nota sobre el nom. Aquests endpoints es van publicar breument com a
requirements i fulfillments. Des del 2026-08-02 els noms públics són tasks i submissions. El canvi de nom va cobrir només els recursos i les rutes d’endpoint, l’array requirements[] dins d’una task i el seu requirementId conserven aquests noms.GET /v3/customers/{customerId}/tasks, respon amb POST .../tasks/{taskId}/submissions.
Al voltant d’aquest bucle:
- Emmagatzematge d’arxius en brut:
POST/GET/DELETE /v3/customers/{customerId}/documents(més/{documentId}), puja una vegada amb la teva clau API i després referencia els ids de document a les respostes de submission. Això reemplaça tots els intakes d’upload-token i direct-upload. - Lectures totalment noves:
GET /v3/tasks(safata d’entrada del comerç),GET /v3/transfers/{transferId}/tasks,GET .../tasks/{taskId}/history,GET .../tasks/{taskId}/submissions(més/{submissionId}).
- Tipus de resposta:
profile,text,date,single_select,multi_select,boolean,attestation,document,resource_reference,absence. L’objecterequestde cada requirement et diu quin tipus espera. - Una submission ha de respondre cada requirement accionable de la ronda actual, amb el
taskRevisionexacte que has llegit. Les submissions parcials són rebutjades. - Les respostes
profilees propaguen: actualitzen el perfil del customer per la via de validació normal i reavaluen de seguida cada capability que referencia la mateixa feina d’intake. Les tasks d’intake germanes els requirements de les quals estan tots satisfets es tanquen automàticament. - Els requirements poden formar grups alternatius (
alternativeKey): envia exactament un del grup. changes_requestedincrementaremediationRoundi portareviewFeedback. Rellegeix la task, envia de nou amb una nova clau d’idempotència.- Les URLs de verificació allotjada apareixen només al detall de task per customer (
GET /v3/customers/{customerId}/tasks/{taskId}) i només mentre la sessió sigui accionable; les llistes iGET /v3/tasks/{taskId}estan deliberadament sense URLs. - Els termes de servei també són una task:
openTaskIdspot incloure una task ambcategory: "terms_of_service"la pàgina d’acceptació allotjada de la qual s’enllaça de la mateixa manera (només detall per customer). Les submissions genèriques no poden acceptar termes, i l’aprovació de KYC mai implica l’acceptació de termes. - Les tasks tenen àmbit per capability, així que la “mateixa” petició (per exemple prova de domicili) pot aparèixer una vegada per capability. Deduplica a la teva UI per la
keydel requirement. - No hi ha capa de traducció: publicar a
/v1/documentsno desbloquejarà les capabilities de v3. Un cop un customer és a v3, canalitza totes les peticions a través de tasks.
2.4 Accounts i wallets
Creació, discriminada per
origin més type. Els comptes bancaris emesos prenen un únic method; els comptes bancaris externs prenen en canvi un array methods (enviar method allà és rebutjat):
countryals comptes bancaris emesos és opcional (per defecte segons el mètode); als comptes bancaris externs proporciona’l explícitament. Els comptes de wallet no porten país en absolut.settlement.accountIdés obligatori als comptes bancaris emesos: identifica el compte de wallet emès que rep els fons liquidats dels dipòsits fets al compte bancari.- Els comptes emesos exposen
details(IBAN o routing més account o address),routingversionat (les coordenades de dipòsit poden rotar, mostra sempre l’última lectura),fees,balances. - Xarxes:
polygon,ethereum,base,arbitrum,optimism,bsc,avalanche. - La barrera de capability s’aplica només als comptes emesos: crear-ne un contra una capability no llesta falla amb un error codificat per capability, sol·licita primer la capability (2.2). Els comptes externs no necessiten capability (ni aprovació del customer); només obtenen validació de l’esquema de la petició i de les dades bancàries.
- Els comptes bancaris emesos neixen
provisioningambdetails: null. Consulta el compte o escoltaaccount.status_changedfins aready. DELETEarxiva, mai elimina de forma dura. Els comptes referenciats per transfers en curs retornen409 account_has_active_transfers. Reintenta després que aquestes transfers arribin a un estat terminal.- Nou a v3: Rules, instruccions permanents en un compte de wallet emès (
POST/GET /v3/customers/{customerId}/rules,GET/PATCH/DELETE .../rules/{ruleId}) que escombren automàticament els fons entrants cap a un altre compte o una destinació de wallet. Sense equivalent a v1 o v2.
2.5 Recipients i destinations
v2 no tenia el concepte de recipient. Si ets a v2 i pagues a tercers, aquesta és superfície nova, no un canvi de nom.
- Recipient equival a qui:
individual(nom i cognom) obusiness(nom d’empresa), ambrelationshipobligatori (employee,contractor,vendor,subsidiary,merchant,customer,landlord,family,other). Recipients i destinations són només per a tercers. Un payout a un mateix no fa servir cap recipient: apunta a un dels propis comptesacc_del customer com adestinationIdde la quote (2.6). - Destination equival a on: tipada per mètode,
sepa(iban, bic opcional),achowire(routing més account),swift(coordenades completes més intermediari opcional),spei(clabe),pse,transfers_3_0(cbu), etc., més destinacions de wallet. Cada destination té el seu propi estat. Escoltadestination.status_changed. - Les destinations fiat requereixen l’
addresscomplet del recipient (carrer, ciutat, codi postal, país) abans de la creació. Les peces que falten fallen amb422 recipient_address_required. Les destinations de wallet ometen l’adreça però requereixenownershipde nivell superior (self_custodied, ocustodialamb el nom d’un custodi). - La precisió del nom del beneficiari importa: els bancs receptors comproven el nom legal del compte. Envia el nom legal exacte i el cognom o el nom d’empresa, no un àlies de visualització.
- Els esquemes de camps de destination per mètode són a l’especificació OpenAPI.
2.6 Quotes i transfers
destinationIdaccepta un idacc_(compte del propi customer) odst_(destination de recipient). Les quotes finançades amb fiat (payins) han d’apuntar a un compteacc_, un objectiudst_sempre significa un payout (422 quote_direction_invalidaltrament).externalIda quotes i transfers és una referència de correlació no única (repetida a les lectures, filtrable a les llistes). La regla d’unicitat per entorn (2.1) s’aplica només a l’externalIddel customer.- Executa una quote exactament una vegada, abans de
expiresAt. Una quote expirada falla amb409 quote_expired, una segona execució amb409 quote_already_executed(el problema porta eltransferIdexistent). - La cancel·lació de transfers encara no està suportada:
POST .../cancelretorna409 transfer_not_cancelableen tots els estats. Les transferscanceledd’avui provenen de l’expiració de la finestra de finançament en un payin sense finançar, no d’aquest endpoint. - Els payins comencen
awaiting_funds: mostraGET .../instructionsal pagador, coordenades bancàries més codi de referència o memo per a fiat, adreça de dipòsit per a cripto. El codi de referència és com s’aparellarà el dipòsit. Mostra’l sempre. statemésstateDetailper a subestats llegibles per màquina;action_requiredsignifica que hi ha una task de compliment adjunta (openTaskIds,GET .../tasks), respon via submissions.- Els dipòsits entrants detectats als comptes emesos apareixen com a transfers amb
origin: "inbound_deposit"(davant de"quoted"). - Les referències de xarxa de pagament es consoliden sota
references:transactionHash,traceNumber,imad,uetr,explorerUrl,returnedTransferId.
Dues advertències de migració:
- Les transfers no creuen versions. Les transfers creades a v1 o v2 no són llegibles des de v3. La llista les omet i
GET /v3/transfers/{transferId}respon 404. Migra primer la creació, mantingues la ruta de lectura v1 fins que aquestes transfers assoleixin estats terminals, i després elimina-la. - Sense intercanvis de tokens.
stablecoin_moverequereix la mateixa moneda d’entrada i de sortida: USDC a USDT falla amb422 recipient_destination_invalidportant un error de campcurrency_mismatch. Mateixa xarxa a totes dues bandes, sense ponts, i els moviments entre wallets només suporten actualment el lliurament sense comissions: una quote la comissió de plataforma o de developer de la qual sigui diferent de zero falla amb422 amount_not_deliverable.
2.7 Webhooks
Catàleg d’esdeveniments:
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.
GET /v3/webhooks/portalretorna una URL de portal de gestió allotjat per a registres de lliurament, reintents i repetició manual.transfer.createdes lliura actualment amb la forma del payload heretat de v1 (l’envolvent de v3 s’activa quan els webhooks v1 es retirin). Tracta’l purament com una pista i fes GET a la transfer; no construeixis contra el seu cos.- Els esdeveniments són pistes: en rebre’ls, fes GET al recurs i actua sobre la lectura. Mai construeixis estat a partir dels payloads o l’ordre dels esdeveniments. El lliurament és almenys una vegada i pot retardar-se o reordenar-se. Deduplica per id d’esdeveniment, i recupera esdeveniments perduts amb el filtre inclusiu
updatedAfterde cada llistat. - Subscriu-te a
api.deprecation, el canal automatitzat per a les retirades de versió. - Sense esdeveniment
task.*avui: després d’enviar, consulta la task o el seu recurs pare.
2.8 Sandbox
Mateixa URL base; la clau API de sandbox selecciona l’entorn.
El sandbox de v3 simula el bucle de revisió d’extrem a extrem: crea una task, envia contra ella,
review a accepted o rejected, observa com es desbloqueja la capability. Assaja la teva UX de remediació abans de producció. Tant les tasks creades en sandbox com les tasks d’intake habituals que apareixen a les capabilities sol·licitades es revisen així; com a producció, no es disparen webhooks de task, consulta (2.7).
2.9 Endpoints heretats sense reemplaçament a v3
Aquests no tenen reemplaçament a v3. La majoria continuen a v1 sense canvis (mantingues les teves crides existents); dos es retiren directament (vegeu Disposició):
Qualsevol altre endpoint públic de v1 o v2 apareix en alguna taula de mapatge anterior.
2.10 Ordre de migració suggerit
Cada pas es pot publicar de forma independent; v1 o v2 i v3 conviuen contra la mateixa base de customers. Assaja cada pas contra la teva clau de sandbox (2.8) abans de repetir-lo en producció.1
Fontaneria
Idempotency-Key en totes les peticions amb efectes (POST, PATCH, PUT, DELETE; endpoints de sandbox exempts); diners com a cadenes; ajudants de paginació per cursor.2
Webhooks
Registra endpoints v3 per esdeveniment, incloent-hi
api.deprecation. La configuració d’endpoint únic de v1 és una superfície separada, deixa-la al seu lloc; ambdues conviuen fins al drenatge del pas 9.3
Enriquiment del perfil
PATCH /v3/customers/{id} amb el perfil complet que posseeixes (v1 recollia menys del que v3 exposa) i torna a establir metadata. Fes d’això deliberadament la primera escriptura v3 per customer: omple la vista sanejada abans que aquesta vista es torni permanent (2.1).4
Lectures
Apunta les lectures de customer, capability i account a v3; reescriu la lògica d’estat de customer segons 1.3. Només després del pas 3, les lectures sense enriquir tornen amb els camps legacy-invàlids absents.
5
Escriptures d'onboarding
Crea via
POST /v3/customers; sol·licita capabilities en lloc de /rails, /banks o applications; construeix el bucle de tasks (la major feina de UI totalment nova, tasks-preview ajuda a mostrar les peticions per endavant). A partir d’aquest punt, deixa de publicar /v1/documents per a customers dirigits per v3, no desbloquegen capabilities (2.3).6
Comptes
Emet via v3; mou les importacions a
origin: external.7
Payouts
Recipients més destinations, després quote i transfer.
8
Payins
Quote, transfer, instruccions; continua mostrant el codi de referència.
9
Drenatge
Les transfers no creuen versions (2.6). Mantingues la ruta de lectura de v1 o v2 i l’endpoint de webhook v1 per a les transfers creades allà, fes doble lectura fins que assoleixin estats terminals, després elimina el client antic i la configuració del webhook v1.
2.11 Llista d’entrebancs
- UUID nou per operació lògica, persistit amb el teu job i reutilitzat en el reintent; mai reutilitzis una clau amb un cos canviat (
409 idempotency_conflict). Els endpoints de sandbox estan exempts de la capçalera. - Enriqueix els customers existents (
PATCHel perfil complet, torna a establirmetadata, no es conserva) abans de qualsevol altra escriptura v3, la primera escriptura v3 torna permanent la vista sanejada. -
externalIdés únic per entorn i no s’allibera en arxivar, neteja’l ambPATCHabans deDELETEsi penses reutilitzar-lo. - No existeix camp
statusal customer, deriva la preparació per capability. -
action_requirediin_reviewsignifiquen tots dos una task oberta. - Les submissions estan subjectes a revisió (enviar no equival a desbloquejat) i han de respondre cada requirement accionable amb el
taskRevisionexacte. En cas de discrepància, rellegeix i reconstrueix. - No existeix webhook
task.*, consulta la task (o el seu pare) després de cada enviament. - Reintent
changes_requestedequival a rellegir la task, respostes noves, clau d’idempotència nova. - Publicar a
/v1/documentsmai desbloqueja una capability v3, un cop un customer és a tasks, canalitza tota petició a través de tasks. - Poden aparèixer noves tasks en una capability ja
ready, mantingues el bucle de tasks actiu després de l’onboarding, no només durant aquest. -
cancelde capability només funciona des dependingorestrictedsense recursos bloquejants (409 capability_not_cancelable); tornar a sol·licitar després de cancel·lar és una creació nova amb una nova clau d’idempotència. - La capability ha d’estar
readyabans d’emetre comptes sota ella o cotitzar contra ella. - La quote té l’import exactament en un costat; sense camp de direcció; s’executa exactament una vegada abans de
expiresAt(409 quote_expiredo409 quote_already_executed). - Els moviments de stablecoin són només mateixa moneda i mateixa xarxa (USDC a USDT falla
422); wallet a wallet només suporta lliurament sense comissions. -
DELETEarxiva, mai elimina de forma dura. El delete d’account es bloqueja per transfers en curs (409 account_has_active_transfers); el delete de customer a més per qualsevol account no arxivada (409 customer_has_active_resources,blockingResources[]els anomena). - Les transfers de v1 o v2 són invisibles a les lectures de v3 (la llista les omet, GET respon 404), fes doble lectura fins a drenar-les, després elimina les rutes antigues.
- El
routingde dipòsit i les instruccions poden rotar, mostra sempre l’últim GET i mostra sempre el codi de referència. - Els webhooks són pistes; el GET és la veritat, deduplica per id d’esdeveniment, recupera esdeveniments perduts amb
updatedAfter.