Eliminar i arxivar contactes
Canvi que trenca: DELETE /v1/contacts/{id} i POST /v1/contacts/bulk-delete eliminen en lloc d’arxivar, i l’eliminació no es pot desfer des de l’API. Arxivar passa a POST /v1/contacts/{id}/archive, està sempre permès i continua sent reversible. Es publica l’esdeveniment webhook contact.deleted i desapareix el subcode contact_has_commercial_references.
Donar de baixa un contacte volia dir una sola cosa: DELETE /v1/contacts/{contact}
l’arxivava, i l’arxivament es rebutjava amb 422 tan bon punt algun dels seus
rols tenia al darrere factures, contractes o ofertes de proveïdor. No hi havia
manera de fer desaparèixer un contacte, ni d’apartar-ne un que s’hagués fet
servir alguna vegada.
Ara existeixen totes dues operacions, totes dues estan sempre permeses i cap destrueix l’historial fiscal.
Dues baixes, dues rutes
| Operació | Ruta | Efecte |
|---|---|---|
| Arxivar | POST /v1/contacts/{contact}/archive | El contacte continua sent consultable amb is_archived: true, conserva tots els seus documents i torna amb PUT /v1/contacts/{contact}/restore. Idempotent. |
| Arxivar en lot | POST /v1/contacts/bulk/archive | El mateix efecte, fins a 500 ids, amb èxit parcial. |
| Eliminar | DELETE /v1/contacts/{contact} | Esborrat lògic: el contacte desapareix de totes les superfícies de lectura i el seu detall retorna 404 contact_not_found. Els documents es conserven. Irreversible des de l’API. |
| Eliminar en lot | POST /v1/contacts/bulk-delete | El mateix efecte, fins a 500 ids, amb èxit parcial. |
Les quatre requereixen contacts:delete. PUT /v1/contacts/{contact}/restore
només desarxiva; no recupera un contacte eliminat.
Canvi que trenca: DELETE i bulk-delete ara eliminen
Si la teva integració cridava DELETE /v1/contacts/{contact} o
POST /v1/contacts/bulk-delete per arxivar un contacte, ara l’elimina i no
ho podràs desfer des de l’API. Porta aquestes crides a
POST /v1/contacts/{contact}/archive i POST /v1/contacts/bulk/archive.
DELETE /v1/contacts/{contact} retorna 200 amb l’acusament de l’eliminació en
lloc del contacte:
{
"data": {
"id": "01931b3e-7c4a-7f2e-9a8b-3c5d6e7f8a01",
"object": "contact",
"deleted": true
}
}Què fa una eliminació, i què no:
- El contacte desapareix del llistat, la cerca, les opcions i els selectors, les estadístiques, l’exportació, les activitats, la deduplicació d’importacions i la resolució d’àlies legacy, i ja no es pot fer servir en documents nous.
- La seva fila, els seus rols, els perfils direccionals, els comptes bancaris, els àlies legacy i totes les factures, pressupostos, albarans o factures de compra que el referencien es conserven intactes, i aquests documents continuen mostrant les seves dades de client o de proveïdor.
- El seu NIF i el seu
external_idqueden alliberats, de manera que la mateixa identitat es pot tornar a donar d’alta com un contacte diferent. - Eliminar un
iddesconegut, d’una altra empresa o ja eliminat retorna404 contact_not_found.
Arxivar ja no es bloqueja mai
El 422 business_rule_violation amb
subcode: contact_has_commercial_references es retira: cap operació ja no
l’emet. Un contacte amb factures de compra, contractes o ofertes de proveïdor es
pot arxivar, i arxivar-ne un de ja arxivat retorna 200 i conserva el primer
archived_at.
Esdeveniment nou: contact.deleted
Subscriu-te a contact.deleted a POST /v1/webhook-endpoints per assabentar-te
que un contacte ha sortit de l’aplicació. A diferència de contact.archived i
contact.restored, no porta snapshot: ja no queda res per llegir.
{
"id": "01931b3e-7c4a-7f2e-9a8b-3c5d6e7f8a01",
"object": "contact",
"deleted": true
}contact.archived i contact.restored no canvien.
MCP
| Tool | Canvi |
|---|---|
delete_contact | Elimina (esborrat lògic). Abans arxivava. Retorna { id, object: "contact", deleted: true }. |
bulk_delete_contacts | Nova. Elimina fins a 500 contactes amb èxit parcial. |
archive_contact | Nova. Arxiva un contacte i el retorna. |
bulk_archive_contacts | Sense canvis. |
restore_contact | Sense canvis: només desarxiva. |
Totes cinc requereixen contacts:delete i són destructive; delete_contact i
bulk_delete_contacts consten a més com a irreversibles, de manera que un
assistent les confirma abans d’executar-les. Consulta el
catàleg d’eines MCP.
Migració
- Tota crida amb la intenció «aparta aquest contacte» passa de
DELETE /v1/contacts/{contact}aPOST /v1/contacts/{contact}/archive, i dePOST /v1/contacts/bulk-deleteaPOST /v1/contacts/bulk/archive. - Els reintents o el tractament d’errors que ramificaven per
subcode: contact_has_commercial_referencessobren: arxivar ja no falla per aquest motiu. - Si feies servir
PUT /v1/contacts/{contact}/restoreper desfer unDELETE, arxiva-ho en comptes d’això. Restaurar un contacte eliminat és una operació de suport sobre la base de dades, no una crida de l’API. - Consultar un contacte que has eliminat retorna
404: tracta aquest codi com «ja no existeix», no com una fallada passatgera.
Llegeix Contactes.
Nous endpoints1
| Endpoint | Descripció |
|---|---|
POST/v1/contacts/{contact}/archive | Arxivar un contacte |
Endpoints actualitzats3
| Endpoint | Descripció |
|---|---|
DEL/v1/contacts/{contact} | Eliminar un contacte |
POST/v1/contacts/bulk-delete | Eliminar contactes en lot |
POST/v1/contacts/bulk/archive | Arxivar contactes en lot |