Factuarea APIDevelopers
Contracte

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óRutaEfecte
ArxivarPOST /v1/contacts/{contact}/archiveEl contacte continua sent consultable amb is_archived: true, conserva tots els seus documents i torna amb PUT /v1/contacts/{contact}/restore. Idempotent.
Arxivar en lotPOST /v1/contacts/bulk/archiveEl mateix efecte, fins a 500 ids, amb èxit parcial.
EliminarDELETE /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 lotPOST /v1/contacts/bulk-deleteEl 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_id queden alliberats, de manera que la mateixa identitat es pot tornar a donar d’alta com un contacte diferent.
  • Eliminar un id desconegut, d’una altra empresa o ja eliminat retorna 404 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

ToolCanvi
delete_contactElimina (esborrat lògic). Abans arxivava. Retorna { id, object: "contact", deleted: true }.
bulk_delete_contactsNova. Elimina fins a 500 contactes amb èxit parcial.
archive_contactNova. Arxiva un contacte i el retorna.
bulk_archive_contactsSense canvis.
restore_contactSense 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ó

  1. Tota crida amb la intenció «aparta aquest contacte» passa de DELETE /v1/contacts/{contact} a POST /v1/contacts/{contact}/archive, i de POST /v1/contacts/bulk-delete a POST /v1/contacts/bulk/archive.
  2. Els reintents o el tractament d’errors que ramificaven per subcode: contact_has_commercial_references sobren: arxivar ja no falla per aquest motiu.
  3. Si feies servir PUT /v1/contacts/{contact}/restore per desfer un DELETE, 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.
  4. Consultar un contacte que has eliminat retorna 404: tracta aquest codi com «ja no existeix», no com una fallada passatgera.

Llegeix Contactes.

Nous endpoints1

EndpointDescripció
POST/v1/contacts/{contact}/archiveArxivar un contacte

Endpoints actualitzats3

EndpointDescripció
DEL/v1/contacts/{contact}Eliminar un contacte
POST/v1/contacts/bulk-deleteEliminar contactes en lot
POST/v1/contacts/bulk/archiveArxivar contactes en lot

En aquesta pàgina

Et donem un cop de mà?Contactar amb suport