Les operacions recents passen a l'eix
Les operacions publicades des del 21 de setembre —projectes i tasques, l'escàner de despeses, notificacions, usuaris, la representació VeriFactu, emetre sense enviar i l'edició de sèries— viuen sota /v1/companies/{company}, i vuit actualitzacions parcials passen de PUT a PATCH.
5 d'octubre de 2026 — les operacions que han arribat a l'API des del 21 de setembre es van publicar en rutes planes, abans que existís l'eix d'empresa. Ara viuen on viu qualsevol altre recurs d'empresa, sota /v1/companies/{company}/…: les operacions de les taules de sota. És la mateixa migració que la finestra de l'eix, aplicada al que ha vingut després, i no necessita un segon pas.
- Sense àlies pla. Una crida a la ruta antiga respon el
404estàndard d'una ruta que no existeix. Fes servir la ruta de la columna Ara. - Res més canvia per defecte. Els noms de ruta (
public-api.v1.*), els scopes, els cossos i les respostes continuen com es van publicar, tret del que indiquen les seccions següents: vuit verbs, unes poques rutes que canvien més que el prefix, un grapat d'estats d'error i una versió de payload de webhook. - L'empresa surt de la credencial. El segment
{company}es valida contra l'àmbit de la credencial:403company_inactivesi el NIF està inactiu i404profile_not_foundsi queda fora de l'àmbit, no existeix o és de l'altre entorn. Els tres404són iguals a propòsit. Locationporta l'eix. Les altes dePOST …/tasks,…/tasks/{task}/duplicate,…/projects,…/task-labelsiPOST …/verifactu/representationresponen/v1/companies/{company}/<recurs>/<id>.
Adapta't una vegada. Canvia la ruta, envia PATCH on ho indica la taula i llegeix els estats nous, i el teu client està llest. No hi ha mode de compatibilitat per a les rutes ni els verbs antics.
Verbs: PUT passa a PATCH
Les actualitzacions parcials de les famílies noves segueixen la convenció de la resta de l'API: PATCH canvia només els camps que envies. PUT es queda on el recurs sencer es reemplaça per disseny.
| Operació | Abans | Ara |
|---|---|---|
public-api.v1.projects.update | PUT /v1/projects/{project} | PATCH /v1/companies/{company}/projects/{project} |
public-api.v1.projects.columns.update | PUT /v1/projects/{project}/columns/{column} | PATCH /v1/companies/{company}/projects/{project}/columns/{column} |
public-api.v1.projects.custom_fields.update | PUT /v1/projects/{project}/custom-fields/{field} | PATCH /v1/companies/{company}/projects/{project}/custom-fields/{field} |
public-api.v1.task_labels.update | PUT /v1/task-labels/{label} | PATCH /v1/companies/{company}/task-labels/{label} |
public-api.v1.tasks.update | PUT /v1/tasks/{task} | PATCH /v1/companies/{company}/tasks/{task} |
public-api.v1.tasks.time_entries.update | PUT /v1/tasks/{task}/time-entries/{time_entry} | PATCH /v1/companies/{company}/tasks/{task}/time-entries/{time_entry} |
public-api.v1.purchase_scans.review | PUT /v1/purchase_scans/{purchase_scan}/review | PATCH /v1/companies/{company}/purchase-scans/{purchase_scan}/review |
public-api.v1.series.update | PUT /v1/series/{series} | PATCH /v1/companies/{company}/series/{series} |
Continuen en PUT, perquè reemplacen el recurs sencer: projects.columns.reorder, tasks.comments.update i tasks.custom_fields.set. Un PUT a una de les vuit rutes migrades respon 405.
Editar una sèrie conserva el mateix cos parcial i les mateixes guardes fiscals (BR-SER-020, BR-SER-021, 422 amb el seu subcode). A …/series/{series}, el 405 series_immutable porta ara Allow: GET, PATCH i el seu missatge remet a PATCH /v1/companies/{company}/series/{id} i a POST …/archive; PUT i DELETE responen 405. La tool MCP update_series és la mateixa tool, descrita com un PATCH parcial; els seus arguments no canvien.
Rutes que canvien més que el prefix
| Operació | Abans | Ara |
|---|---|---|
public-api.v1.purchase_invoices.expense_categories | GET /v1/purchase_invoices/expense_categories | GET /v1/companies/{company}/purchase-invoices/expense-categories |
public-api.v1.users.list | GET /v1/users | GET /v1/companies/{company}/users |
public-api.v1.users.me | GET /v1/users/me | GET /v1/companies/{company}/users/me |
public-api.v1.contacts.imports.show | GET /v1/contacts/imports/{id} | GET /v1/companies/{company}/contacts/imports/{id} |
public-api.v1.purchase_scans.list | GET /v1/purchase_scans | GET /v1/companies/{company}/purchase-scans |
public-api.v1.purchase_scans.duplicate_resolution | POST /v1/purchase_scans/{purchase_scan}/duplicate_resolution | POST /v1/companies/{company}/purchase-scans/{purchase_scan}/duplicate-resolution |
public-api.v1.purchase_scan_emails.list | GET /v1/purchase_scan_emails | GET /v1/companies/{company}/purchase-scan-emails |
Dues conseqüències visibles: el source_url de les respostes de l'escàner i l'error_report_url de les importacions de contactes porten ara l'eix. El límit de pujada de 101 MB de l'escàner s'aplica a POST /v1/companies/<uuid>/purchase-scans.
Codis i estats d'error
| Cas | Abans | Ara |
|---|---|---|
idempotency_key_reused: un Idempotency-Key reenviat amb un altre cos | 409, type: idempotency_error | 422, mateix code i type. Val per a totes les operacions que documentaven el 409: tasques i projectes, l'escàner de despeses (també una pujada amb un altre fitxer), el cobrament desatès amb la seva capçalera i el lot de les hores d'un projecte |
Un cobrament reenviat per external_id amb un altre tipus o total | 409 amb code: idempotency_key_reused, subcode: unattended_replay_mismatch | code: unattended_replay_mismatch, mateix 409, type, subcode i param: external_id. Un codi, un estat: idempotency_key_reused queda només per a la capçalera (422) |
La capçalera X-Active-Profile | Acceptada per les famílies noves | 400 parameter_unknown, subcodi retired_active_profile_header: l'empresa viatja a la ruta |
{company} fora de l'àmbit de la credencial, inexistent o de l'altre entorn | No existia: l'empresa sortia de la credencial | 404 profile_not_found; 403 company_inactive si està inactiva |
api_key_creator_not_member (escàner) | Pertinença per fila de pivot | Mateix codi; la pertinença la decideix l'accés del creador al NIF |
El 409 idempotency_key_in_use (la clau és en curs) no canvia.
Les operacions planes /v1/clients i /v1/suppliers i les tools MCP *_client i *_supplier continuen retirades; els contactes les substitueixen sota /v1/companies/{company}/contacts. Els noms de tool search_clients, find_client_by_tax_id, create_client i bulk_create_clients continuen resolent a les tools de contactes fins al 15 de novembre de 2026, marcats amb _meta["io.factuarea/deprecation"].
Versió de payload dels webhooks
Les versions de payload són ara 2026-05-22, 2026-10-01 i 2026-10-05 (la més recent). 2026-10-01 és la que va introduir el vocabulari issued de les factures; 2026-10-05 afegeix imports com a cadena decimal i paid_recorded_at i paid_date. Un endpoint fixat a 2026-10-01 o 2026-05-22 no canvia: continua rebent imports numèrics, paid_at i paid_on. Un endpoint creat sense api_version explícit queda a 2026-05-22, tret que la petició que el crea faci servir la versió REST 2026-10-01: llavors pren la més recent (2026-10-05). Pots moure un endpoint existent amb PATCH i api_version. La versió de petició Factuarea-Version: 2026-10-01 manté la seva data i el seu efecte. Consulta Versions de payload dels webhooks.
MCP
Les tools no porten argument d'empresa: l'empresa surt del token o de la sessió. Les tools de projectes i tasques, notificacions, usuaris, agenda, l'escàner, la representació VeriFactu, issue_invoice, list_purchase_invoice_expense_categories i les importacions de contactes (get_contact_import, download_contact_import_errors) emmirallen una a una les rutes de les taules de sota. Un error de domini de tools/call és ara un resultat amb isError: true, el missatge del domini i _meta["com.factuarea/error"] (code, subcode, param, amb el mateix estat que la REST API).
Altres canvis de contracte
- Plantilles d'importació de contactes.
GET /v1/companies/{company}/contacts/import/templateacceptaformat:csv(per defecte, separat per;) oxlsx, un llibre amb els fulls Dades, Instruccions, Exemples i Valors permesos. Tots dos surten dels mateixos descriptors de columna que l'importador. - Informes d'importació. El recurs d'importació (
GET …/contacts/imports/{id}i la resposta dePOST …/contacts/import) afegeixupdated_count,warnings_count,outcome_kind,skip_reasons,first_diagnosticsioutcomes_truncated, i cada fila d'outcomesporta unreason.outcome_kind: nothing_changedvol dir que la importació ha acabat sense crear ni actualitzar res: no la presentis com un èxit. El codi noumapping_header_not_foundel retornencontacts.importicontacts.preview_import. - Documents de venda. Les factures (i els seus esdeveniments) publiquen
origin(nativeohistorical_import); els pressupostos i les proformes publiquenreferenceioperation_regime. - Importació de tasques.
POST …/projects/{project}/tasks/importi la tool MCPimport_project_tasksaccepten unidempotency_keyopcional i informenwarnings_totaliwarnings_truncated. - Escriptures de l'escàner sense accés. En les escriptures de l'escàner de despeses (
POST …/purchase-scans,…/retry,PATCH …/review,…/duplicate-resolution,…/convert,DELETE …/{purchase_scan},…/restore), una clau el creador de la qual no té accés a l'empresa respon ara404profile_not_founden lloc de403api_key_creator_not_member. El403es manté a la descàrrega de l'original (GET …/source) i a les tools MCP d'escriptura. - Imports de cobrament a l'activitat. A
GET …/invoices/{invoice}/activities(i la toolget_invoice_activities),metadata.amountdels esdevenimentspayment.payment_createdipayment.payment_reversedés ara una cadena de dos decimals ("50.50"), no un nombre en euros.
Totes les operacions, per família
Projectes i tasques
Tasques, projectes, etiquetes, temporitzadors i l'agenda (75).
| Operació | Abans | Ara |
|---|---|---|
public-api.v1.agenda.list | GET /v1/agenda | GET /v1/companies/{company}/agenda |
public-api.v1.projects.archive | POST /v1/projects/{project}/archive | POST /v1/companies/{company}/projects/{project}/archive |
public-api.v1.projects.columns.create | POST /v1/projects/{project}/columns | POST /v1/companies/{company}/projects/{project}/columns |
public-api.v1.projects.columns.delete | DELETE /v1/projects/{project}/columns/{column} | DELETE /v1/companies/{company}/projects/{project}/columns/{column} |
public-api.v1.projects.columns.list | GET /v1/projects/{project}/columns | GET /v1/companies/{company}/projects/{project}/columns |
public-api.v1.projects.columns.reorder | PUT /v1/projects/{project}/columns/reorder | PUT /v1/companies/{company}/projects/{project}/columns/reorder |
public-api.v1.projects.columns.update | PUT /v1/projects/{project}/columns/{column} | PATCH /v1/companies/{company}/projects/{project}/columns/{column} |
public-api.v1.projects.create | POST /v1/projects | POST /v1/companies/{company}/projects |
public-api.v1.projects.custom_fields.create | POST /v1/projects/{project}/custom-fields | POST /v1/companies/{company}/projects/{project}/custom-fields |
public-api.v1.projects.custom_fields.delete | DELETE /v1/projects/{project}/custom-fields/{field} | DELETE /v1/companies/{company}/projects/{project}/custom-fields/{field} |
public-api.v1.projects.custom_fields.list | GET /v1/projects/{project}/custom-fields | GET /v1/companies/{company}/projects/{project}/custom-fields |
public-api.v1.projects.custom_fields.update | PUT /v1/projects/{project}/custom-fields/{field} | PATCH /v1/companies/{company}/projects/{project}/custom-fields/{field} |
public-api.v1.projects.delete | DELETE /v1/projects/{project} | DELETE /v1/companies/{company}/projects/{project} |
public-api.v1.projects.find_by_key | POST /v1/projects/find-by-key | POST /v1/companies/{company}/projects/find-by-key |
public-api.v1.projects.list | GET /v1/projects | GET /v1/companies/{company}/projects |
public-api.v1.projects.show | GET /v1/projects/{project} | GET /v1/companies/{company}/projects/{project} |
public-api.v1.projects.tasks.export | GET /v1/projects/{project}/tasks/export | GET /v1/companies/{company}/projects/{project}/tasks/export |
public-api.v1.projects.tasks.import | POST /v1/projects/{project}/tasks/import | POST /v1/companies/{company}/projects/{project}/tasks/import |
public-api.v1.projects.time_invoices.create | POST /v1/projects/{project}/time-invoices | POST /v1/companies/{company}/projects/{project}/time-invoices |
public-api.v1.projects.time_invoices.preview | POST /v1/projects/{project}/time-invoices/preview | POST /v1/companies/{company}/projects/{project}/time-invoices/preview |
public-api.v1.projects.time_summary.show | GET /v1/projects/{project}/time-summary | GET /v1/companies/{company}/projects/{project}/time-summary |
public-api.v1.projects.unarchive | POST /v1/projects/{project}/unarchive | POST /v1/companies/{company}/projects/{project}/unarchive |
public-api.v1.projects.update | PUT /v1/projects/{project} | PATCH /v1/companies/{company}/projects/{project} |
public-api.v1.task_labels.create | POST /v1/task-labels | POST /v1/companies/{company}/task-labels |
public-api.v1.task_labels.delete | DELETE /v1/task-labels/{label} | DELETE /v1/companies/{company}/task-labels/{label} |
public-api.v1.task_labels.list | GET /v1/task-labels | GET /v1/companies/{company}/task-labels |
public-api.v1.task_labels.show | GET /v1/task-labels/{label} | GET /v1/companies/{company}/task-labels/{label} |
public-api.v1.task_labels.update | PUT /v1/task-labels/{label} | PATCH /v1/companies/{company}/task-labels/{label} |
public-api.v1.task_timers.current | GET /v1/task-timers/current | GET /v1/companies/{company}/task-timers/current |
public-api.v1.task_timers.stop | POST /v1/task-timers/stop | POST /v1/companies/{company}/task-timers/stop |
public-api.v1.tasks.activities.list | GET /v1/tasks/{task}/activities | GET /v1/companies/{company}/tasks/{task}/activities |
public-api.v1.tasks.assign | POST /v1/tasks/{task}/assign | POST /v1/companies/{company}/tasks/{task}/assign |
public-api.v1.tasks.attachments.create | POST /v1/tasks/{task}/attachments | POST /v1/companies/{company}/tasks/{task}/attachments |
public-api.v1.tasks.attachments.delete | DELETE /v1/tasks/{task}/attachments/{attachment} | DELETE /v1/companies/{company}/tasks/{task}/attachments/{attachment} |
public-api.v1.tasks.attachments.download | GET /v1/tasks/{task}/attachments/{attachment}/download | GET /v1/companies/{company}/tasks/{task}/attachments/{attachment}/download |
public-api.v1.tasks.attachments.list | GET /v1/tasks/{task}/attachments | GET /v1/companies/{company}/tasks/{task}/attachments |
public-api.v1.tasks.attachments.show | GET /v1/tasks/{task}/attachments/{attachment} | GET /v1/companies/{company}/tasks/{task}/attachments/{attachment} |
public-api.v1.tasks.bulk_delete | POST /v1/tasks/bulk-delete | POST /v1/companies/{company}/tasks/bulk-delete |
public-api.v1.tasks.bulk_status | POST /v1/tasks/bulk-status | POST /v1/companies/{company}/tasks/bulk-status |
public-api.v1.tasks.bulk_update | POST /v1/tasks/bulk-update | POST /v1/companies/{company}/tasks/bulk-update |
public-api.v1.tasks.comments.create | POST /v1/tasks/{task}/comments | POST /v1/companies/{company}/tasks/{task}/comments |
public-api.v1.tasks.comments.delete | DELETE /v1/tasks/{task}/comments/{comment} | DELETE /v1/companies/{company}/tasks/{task}/comments/{comment} |
public-api.v1.tasks.comments.list | GET /v1/tasks/{task}/comments | GET /v1/companies/{company}/tasks/{task}/comments |
public-api.v1.tasks.comments.update | PUT /v1/tasks/{task}/comments/{comment} | PUT /v1/companies/{company}/tasks/{task}/comments/{comment} |
public-api.v1.tasks.create | POST /v1/tasks | POST /v1/companies/{company}/tasks |
public-api.v1.tasks.custom_fields.set | PUT /v1/tasks/{task}/custom-fields/{field} | PUT /v1/companies/{company}/tasks/{task}/custom-fields/{field} |
public-api.v1.tasks.delete | DELETE /v1/tasks/{task} | DELETE /v1/companies/{company}/tasks/{task} |
public-api.v1.tasks.duplicate | POST /v1/tasks/{task}/duplicate | POST /v1/companies/{company}/tasks/{task}/duplicate |
public-api.v1.tasks.entity_links.create | POST /v1/tasks/{task}/entity-links | POST /v1/companies/{company}/tasks/{task}/entity-links |
public-api.v1.tasks.entity_links.delete | DELETE /v1/tasks/{task}/entity-links/{link} | DELETE /v1/companies/{company}/tasks/{task}/entity-links/{link} |
public-api.v1.tasks.entity_links.list | GET /v1/tasks/{task}/entity-links | GET /v1/companies/{company}/tasks/{task}/entity-links |
public-api.v1.tasks.external_links.create | POST /v1/tasks/{task}/external-links | POST /v1/companies/{company}/tasks/{task}/external-links |
public-api.v1.tasks.external_links.delete | DELETE /v1/tasks/{task}/external-links/{link} | DELETE /v1/companies/{company}/tasks/{task}/external-links/{link} |
public-api.v1.tasks.external_links.list | GET /v1/tasks/{task}/external-links | GET /v1/companies/{company}/tasks/{task}/external-links |
public-api.v1.tasks.find_by_key | POST /v1/tasks/find-by-key | POST /v1/companies/{company}/tasks/find-by-key |
public-api.v1.tasks.labels.assign | POST /v1/tasks/{task}/labels | POST /v1/companies/{company}/tasks/{task}/labels |
public-api.v1.tasks.labels.unassign | DELETE /v1/tasks/{task}/labels/{label} | DELETE /v1/companies/{company}/tasks/{task}/labels/{label} |
public-api.v1.tasks.linked | GET /v1/tasks/linked | GET /v1/companies/{company}/tasks/linked |
public-api.v1.tasks.move | POST /v1/tasks/{task}/move | POST /v1/companies/{company}/tasks/{task}/move |
public-api.v1.tasks.relations.create | POST /v1/tasks/{task}/relations | POST /v1/companies/{company}/tasks/{task}/relations |
public-api.v1.tasks.relations.delete | DELETE /v1/tasks/{task}/relations/{relation} | DELETE /v1/companies/{company}/tasks/{task}/relations/{relation} |
public-api.v1.tasks.relations.list | GET /v1/tasks/{task}/relations | GET /v1/companies/{company}/tasks/{task}/relations |
public-api.v1.tasks.reposition | POST /v1/tasks/{task}/reposition | POST /v1/companies/{company}/tasks/{task}/reposition |
public-api.v1.tasks.search | GET /v1/tasks | GET /v1/companies/{company}/tasks |
public-api.v1.tasks.show | GET /v1/tasks/{task} | GET /v1/companies/{company}/tasks/{task} |
public-api.v1.tasks.status | POST /v1/tasks/{task}/status | POST /v1/companies/{company}/tasks/{task}/status |
public-api.v1.tasks.time_entries.create | POST /v1/tasks/{task}/time-entries | POST /v1/companies/{company}/tasks/{task}/time-entries |
public-api.v1.tasks.time_entries.delete | DELETE /v1/tasks/{task}/time-entries/{time_entry} | DELETE /v1/companies/{company}/tasks/{task}/time-entries/{time_entry} |
public-api.v1.tasks.time_entries.list | GET /v1/tasks/{task}/time-entries | GET /v1/companies/{company}/tasks/{task}/time-entries |
public-api.v1.tasks.time_entries.show | GET /v1/tasks/{task}/time-entries/{time_entry} | GET /v1/companies/{company}/tasks/{task}/time-entries/{time_entry} |
public-api.v1.tasks.time_entries.update | PUT /v1/tasks/{task}/time-entries/{time_entry} | PATCH /v1/companies/{company}/tasks/{task}/time-entries/{time_entry} |
public-api.v1.tasks.timer.start | POST /v1/tasks/{task}/timer/start | POST /v1/companies/{company}/tasks/{task}/timer/start |
public-api.v1.tasks.unassign | POST /v1/tasks/{task}/unassign | POST /v1/companies/{company}/tasks/{task}/unassign |
public-api.v1.tasks.update | PUT /v1/tasks/{task} | PATCH /v1/companies/{company}/tasks/{task} |
public-api.v1.tasks.upload_links.create | POST /v1/tasks/{task}/upload-links | POST /v1/companies/{company}/tasks/{task}/upload-links |
Escàner de despeses
L'escàner de despeses i la seva bústia (12). Els segments van en kebab-case.
| Operació | Abans | Ara |
|---|---|---|
public-api.v1.purchase_scan_emails.list | GET /v1/purchase_scan_emails | GET /v1/companies/{company}/purchase-scan-emails |
public-api.v1.purchase_scans.archive | DELETE /v1/purchase_scans/{purchase_scan} | DELETE /v1/companies/{company}/purchase-scans/{purchase_scan} |
public-api.v1.purchase_scans.convert | POST /v1/purchase_scans/{purchase_scan}/convert | POST /v1/companies/{company}/purchase-scans/{purchase_scan}/convert |
public-api.v1.purchase_scans.create | POST /v1/purchase_scans | POST /v1/companies/{company}/purchase-scans |
public-api.v1.purchase_scans.duplicate_resolution | POST /v1/purchase_scans/{purchase_scan}/duplicate_resolution | POST /v1/companies/{company}/purchase-scans/{purchase_scan}/duplicate-resolution |
public-api.v1.purchase_scans.list | GET /v1/purchase_scans | GET /v1/companies/{company}/purchase-scans |
public-api.v1.purchase_scans.restore | POST /v1/purchase_scans/{purchase_scan}/restore | POST /v1/companies/{company}/purchase-scans/{purchase_scan}/restore |
public-api.v1.purchase_scans.retry | POST /v1/purchase_scans/{purchase_scan}/retry | POST /v1/companies/{company}/purchase-scans/{purchase_scan}/retry |
public-api.v1.purchase_scans.review | PUT /v1/purchase_scans/{purchase_scan}/review | PATCH /v1/companies/{company}/purchase-scans/{purchase_scan}/review |
public-api.v1.purchase_scans.show | GET /v1/purchase_scans/{purchase_scan} | GET /v1/companies/{company}/purchase-scans/{purchase_scan} |
public-api.v1.purchase_scans.source | GET /v1/purchase_scans/{purchase_scan}/source | GET /v1/companies/{company}/purchase-scans/{purchase_scan}/source |
public-api.v1.purchase_scans.stats | GET /v1/purchase_scans/stats | GET /v1/companies/{company}/purchase-scans/stats |
Notificacions
Les notificacions de qui posseeix la credencial (3).
| Operació | Abans | Ara |
|---|---|---|
public-api.v1.notifications.list | GET /v1/notifications | GET /v1/companies/{company}/notifications |
public-api.v1.notifications.mark_all_read | POST /v1/notifications/mark-all-read | POST /v1/companies/{company}/notifications/mark-all-read |
public-api.v1.notifications.read | POST /v1/notifications/{notification}/read | POST /v1/companies/{company}/notifications/{notification}/read |
VeriFactu: representació i registres bloquejats
Representació i reintent dels registres bloquejats (4).
| Operació | Abans | Ara |
|---|---|---|
public-api.v1.verifactu.records.retry_blocked | POST /v1/verifactu/records/retry-blocked | POST /v1/companies/{company}/verifactu/records/retry-blocked |
public-api.v1.verifactu.representation.register | POST /v1/verifactu/representation | POST /v1/companies/{company}/verifactu/representation |
public-api.v1.verifactu.representation.revoke | DELETE /v1/verifactu/representation | DELETE /v1/companies/{company}/verifactu/representation |
public-api.v1.verifactu.representation.show | GET /v1/verifactu/representation | GET /v1/companies/{company}/verifactu/representation |
Factures, importacions de contactes, usuaris, categories de despesa i sèries
(7)
| Operació | Abans | Ara |
|---|---|---|
public-api.v1.invoices.issue | POST /v1/invoices/{invoice}/issue | POST /v1/companies/{company}/invoices/{invoice}/issue |
public-api.v1.contacts.imports.show | GET /v1/contacts/imports/{id} | GET /v1/companies/{company}/contacts/imports/{id} |
public-api.v1.contacts.imports.errors | GET /v1/contacts/imports/{id}/errors.csv | GET /v1/companies/{company}/contacts/imports/{id}/errors.csv |
public-api.v1.users.list | GET /v1/users | GET /v1/companies/{company}/users |
public-api.v1.users.me | GET /v1/users/me | GET /v1/companies/{company}/users/me |
public-api.v1.purchase_invoices.expense_categories | GET /v1/purchase_invoices/expense_categories | GET /v1/companies/{company}/purchase-invoices/expense-categories |
public-api.v1.series.update | PUT /v1/series/{series} | PATCH /v1/companies/{company}/series/{series} |