Factuarea APIDevelopers
Contrato

Las operaciones recientes pasan al eje

Las operaciones publicadas desde el 21 de septiembre —proyectos y tareas, el escáner de gastos, notificaciones, usuarios, la representación VeriFactu, emitir sin enviar y la edición de series— viven bajo /v1/companies/{company}, y ocho actualizaciones parciales pasan de PUT a PATCH.

5 de octubre de 2026 — las operaciones que llegaron a la API desde el 21 de septiembre se publicaron en rutas planas, antes de que existiera el eje de empresa. Ahora viven donde vive cualquier otro recurso de empresa, bajo /v1/companies/{company}/…: las operaciones de las tablas de abajo. Es la misma migración que la ventana del eje, aplicada a lo que vino después, y no necesita un segundo paso.

  • Sin alias plano. Una llamada a la ruta antigua responde el 404 estándar de una ruta que no existe. Usa la ruta de la columna Ahora.
  • Nada más cambia por defecto. Los nombres de ruta (public-api.v1.*), los scopes, los cuerpos y las respuestas siguen como se publicaron, salvo lo que indican las secciones siguientes: ocho verbos, unas pocas rutas que cambian más que el prefijo, un puñado de estados de error y una versión de payload de webhook.
  • La empresa sale de la credencial. El segmento {company} se valida contra el ámbito de la credencial: 403 company_inactive si el NIF está inactivo y 404 profile_not_found si queda fuera del ámbito, no existe o es del otro entorno. Los tres 404 son iguales a propósito.
  • Location lleva el eje. Las altas de POST …/tasks, …/tasks/{task}/duplicate, …/projects, …/task-labels y POST …/verifactu/representation responden /v1/companies/{company}/<recurso>/<id>.

Adáptate una vez. Cambia la ruta, envía PATCH donde lo indica la tabla y lee los estados nuevos, y tu cliente está listo. No hay modo de compatibilidad para las rutas ni los verbos antiguos.

Verbos: PUT pasa a PATCH

Las actualizaciones parciales de las familias nuevas siguen la convención del resto de la API: PATCH cambia solo los campos que envías. PUT se queda donde el recurso entero se reemplaza por diseño.

OperaciónAntesAhora
public-api.v1.projects.updatePUT /v1/projects/{project}PATCH /v1/companies/{company}/projects/{project}
public-api.v1.projects.columns.updatePUT /v1/projects/{project}/columns/{column}PATCH /v1/companies/{company}/projects/{project}/columns/{column}
public-api.v1.projects.custom_fields.updatePUT /v1/projects/{project}/custom-fields/{field}PATCH /v1/companies/{company}/projects/{project}/custom-fields/{field}
public-api.v1.task_labels.updatePUT /v1/task-labels/{label}PATCH /v1/companies/{company}/task-labels/{label}
public-api.v1.tasks.updatePUT /v1/tasks/{task}PATCH /v1/companies/{company}/tasks/{task}
public-api.v1.tasks.time_entries.updatePUT /v1/tasks/{task}/time-entries/{time_entry}PATCH /v1/companies/{company}/tasks/{task}/time-entries/{time_entry}
public-api.v1.purchase_scans.reviewPUT /v1/purchase_scans/{purchase_scan}/reviewPATCH /v1/companies/{company}/purchase-scans/{purchase_scan}/review
public-api.v1.series.updatePUT /v1/series/{series}PATCH /v1/companies/{company}/series/{series}

Siguen en PUT, porque reemplazan el recurso entero: projects.columns.reorder, tasks.comments.update y tasks.custom_fields.set. Un PUT a una de las ocho rutas migradas responde 405.

Editar una serie conserva el mismo cuerpo parcial y las mismas guardas fiscales (BR-SER-020, BR-SER-021, 422 con su subcode). En …/series/{series}, el 405 series_immutable lleva ahora Allow: GET, PATCH y su mensaje remite a PATCH /v1/companies/{company}/series/{id} y a POST …/archive; PUT y DELETE responden 405. La tool MCP update_series es la misma tool, descrita como un PATCH parcial; sus argumentos no cambian.

Rutas que cambian más que el prefijo

OperaciónAntesAhora
public-api.v1.purchase_invoices.expense_categoriesGET /v1/purchase_invoices/expense_categoriesGET /v1/companies/{company}/purchase-invoices/expense-categories
public-api.v1.users.listGET /v1/usersGET /v1/companies/{company}/users
public-api.v1.users.meGET /v1/users/meGET /v1/companies/{company}/users/me
public-api.v1.contacts.imports.showGET /v1/contacts/imports/{id}GET /v1/companies/{company}/contacts/imports/{id}
public-api.v1.purchase_scans.listGET /v1/purchase_scansGET /v1/companies/{company}/purchase-scans
public-api.v1.purchase_scans.duplicate_resolutionPOST /v1/purchase_scans/{purchase_scan}/duplicate_resolutionPOST /v1/companies/{company}/purchase-scans/{purchase_scan}/duplicate-resolution
public-api.v1.purchase_scan_emails.listGET /v1/purchase_scan_emailsGET /v1/companies/{company}/purchase-scan-emails

Dos consecuencias visibles: el source_url de las respuestas del escáner y el error_report_url de las importaciones de contactos llevan ahora el eje. El límite de subida de 101 MB del escáner se aplica a POST /v1/companies/<uuid>/purchase-scans.

Códigos y estados de error

CasoAntesAhora
idempotency_key_reused: un Idempotency-Key reenviado con otro cuerpo409, type: idempotency_error422, mismo code y type. Vale para todas las operaciones que documentaban el 409: tareas y proyectos, el escáner de gastos (también una subida con otro fichero), el cobro desatendido con su cabecera y el lote de las horas de un proyecto
Un cobro reenviado por external_id con otro tipo o total409 con code: idempotency_key_reused, subcode: unattended_replay_mismatchcode: unattended_replay_mismatch, mismo 409, type, subcode y param: external_id. Un código, un estado: idempotency_key_reused queda solo para la cabecera (422)
La cabecera X-Active-ProfileAceptada por las familias nuevas400 parameter_unknown, subcódigo retired_active_profile_header: la empresa viaja en la ruta
{company} fuera del ámbito de la credencial, inexistente o del otro entornoNo existía: la empresa salía de la credencial404 profile_not_found; 403 company_inactive si está inactiva
api_key_creator_not_member (escáner)Pertenencia por fila de pivoteMismo código; la pertenencia la decide el acceso del creador al NIF

El 409 idempotency_key_in_use (la clave está en curso) no cambia.

Las operaciones planas /v1/clients y /v1/suppliers y las tools MCP *_client y *_supplier siguen retiradas; los contactos las sustituyen bajo /v1/companies/{company}/contacts. Los nombres de tool search_clients, find_client_by_tax_id, create_client y bulk_create_clients siguen resolviendo a las tools de contactos hasta el 15 de noviembre de 2026, marcados con _meta["io.factuarea/deprecation"].

Versión de payload de los webhooks

Las versiones de payload son ahora 2026-05-22, 2026-10-01 y 2026-10-05 (la más reciente). 2026-10-01 es la que introdujo el vocabulario issued de las facturas; 2026-10-05 añade importes como cadena decimal y paid_recorded_at y paid_date. Un endpoint fijado a 2026-10-01 o 2026-05-22 no cambia: sigue recibiendo importes numéricos, paid_at y paid_on. Un endpoint creado sin api_version explícito queda en 2026-05-22, salvo que la petición que lo crea use la versión REST 2026-10-01: entonces toma la más reciente (2026-10-05). Puedes mover un endpoint existente con PATCH y api_version. La versión de petición Factuarea-Version: 2026-10-01 mantiene su fecha y su efecto. Consulta Versiones de payload de los webhooks.

MCP

Las tools no llevan argumento de empresa: la empresa sale del token o de la sesión. Las tools de proyectos y tareas, notificaciones, usuarios, agenda, el escáner, la representación VeriFactu, issue_invoice, list_purchase_invoice_expense_categories y las importaciones de contactos (get_contact_import, download_contact_import_errors) espejan una a una las rutas de las tablas de abajo. Un error de dominio de tools/call es ahora un resultado con isError: true, el mensaje del dominio y _meta["com.factuarea/error"] (code, subcode, param, con el mismo estado que la REST API).

Otros cambios de contrato

  • Plantillas de importación de contactos. GET /v1/companies/{company}/contacts/import/template acepta format: csv (por defecto, separado por ;) o xlsx, un libro con las hojas Datos, Instrucciones, Ejemplos y Valores permitidos. Ambos salen de los mismos descriptores de columna que el importador.
  • Informes de importación. El recurso de importación (GET …/contacts/imports/{id} y la respuesta de POST …/contacts/import) añade updated_count, warnings_count, outcome_kind, skip_reasons, first_diagnostics y outcomes_truncated, y cada fila de outcomes lleva un reason. outcome_kind: nothing_changed significa que la importación terminó sin crear ni actualizar nada: no la presentes como un éxito. El código nuevo mapping_header_not_found lo devuelven contacts.import y contacts.preview_import.
  • Documentos de venta. Las facturas (y sus eventos) publican origin (native o historical_import); los presupuestos y las proformas publican reference y operation_regime.
  • Importación de tareas. POST …/projects/{project}/tasks/import y la tool MCP import_project_tasks aceptan un idempotency_key opcional e informan warnings_total y warnings_truncated.
  • Escrituras del escáner sin acceso. En las escrituras del escáner de gastos (POST …/purchase-scans, …/retry, PATCH …/review, …/duplicate-resolution, …/convert, DELETE …/{purchase_scan}, …/restore), una clave cuyo creador no tiene acceso a la empresa responde ahora 404 profile_not_found en lugar de 403 api_key_creator_not_member. El 403 se mantiene en la descarga del original (GET …/source) y en las tools MCP de escritura.
  • Importes de cobro en la actividad. En GET …/invoices/{invoice}/activities (y la tool get_invoice_activities), metadata.amount de los eventos payment.payment_created y payment.payment_reversed es ahora una cadena de dos decimales ("50.50"), no un número en euros.

Todas las operaciones, por familia

Proyectos y tareas

Tareas, proyectos, etiquetas, temporizadores y la agenda (75).

OperaciónAntesAhora
public-api.v1.agenda.listGET /v1/agendaGET /v1/companies/{company}/agenda
public-api.v1.projects.archivePOST /v1/projects/{project}/archivePOST /v1/companies/{company}/projects/{project}/archive
public-api.v1.projects.columns.createPOST /v1/projects/{project}/columnsPOST /v1/companies/{company}/projects/{project}/columns
public-api.v1.projects.columns.deleteDELETE /v1/projects/{project}/columns/{column}DELETE /v1/companies/{company}/projects/{project}/columns/{column}
public-api.v1.projects.columns.listGET /v1/projects/{project}/columnsGET /v1/companies/{company}/projects/{project}/columns
public-api.v1.projects.columns.reorderPUT /v1/projects/{project}/columns/reorderPUT /v1/companies/{company}/projects/{project}/columns/reorder
public-api.v1.projects.columns.updatePUT /v1/projects/{project}/columns/{column}PATCH /v1/companies/{company}/projects/{project}/columns/{column}
public-api.v1.projects.createPOST /v1/projectsPOST /v1/companies/{company}/projects
public-api.v1.projects.custom_fields.createPOST /v1/projects/{project}/custom-fieldsPOST /v1/companies/{company}/projects/{project}/custom-fields
public-api.v1.projects.custom_fields.deleteDELETE /v1/projects/{project}/custom-fields/{field}DELETE /v1/companies/{company}/projects/{project}/custom-fields/{field}
public-api.v1.projects.custom_fields.listGET /v1/projects/{project}/custom-fieldsGET /v1/companies/{company}/projects/{project}/custom-fields
public-api.v1.projects.custom_fields.updatePUT /v1/projects/{project}/custom-fields/{field}PATCH /v1/companies/{company}/projects/{project}/custom-fields/{field}
public-api.v1.projects.deleteDELETE /v1/projects/{project}DELETE /v1/companies/{company}/projects/{project}
public-api.v1.projects.find_by_keyPOST /v1/projects/find-by-keyPOST /v1/companies/{company}/projects/find-by-key
public-api.v1.projects.listGET /v1/projectsGET /v1/companies/{company}/projects
public-api.v1.projects.showGET /v1/projects/{project}GET /v1/companies/{company}/projects/{project}
public-api.v1.projects.tasks.exportGET /v1/projects/{project}/tasks/exportGET /v1/companies/{company}/projects/{project}/tasks/export
public-api.v1.projects.tasks.importPOST /v1/projects/{project}/tasks/importPOST /v1/companies/{company}/projects/{project}/tasks/import
public-api.v1.projects.time_invoices.createPOST /v1/projects/{project}/time-invoicesPOST /v1/companies/{company}/projects/{project}/time-invoices
public-api.v1.projects.time_invoices.previewPOST /v1/projects/{project}/time-invoices/previewPOST /v1/companies/{company}/projects/{project}/time-invoices/preview
public-api.v1.projects.time_summary.showGET /v1/projects/{project}/time-summaryGET /v1/companies/{company}/projects/{project}/time-summary
public-api.v1.projects.unarchivePOST /v1/projects/{project}/unarchivePOST /v1/companies/{company}/projects/{project}/unarchive
public-api.v1.projects.updatePUT /v1/projects/{project}PATCH /v1/companies/{company}/projects/{project}
public-api.v1.task_labels.createPOST /v1/task-labelsPOST /v1/companies/{company}/task-labels
public-api.v1.task_labels.deleteDELETE /v1/task-labels/{label}DELETE /v1/companies/{company}/task-labels/{label}
public-api.v1.task_labels.listGET /v1/task-labelsGET /v1/companies/{company}/task-labels
public-api.v1.task_labels.showGET /v1/task-labels/{label}GET /v1/companies/{company}/task-labels/{label}
public-api.v1.task_labels.updatePUT /v1/task-labels/{label}PATCH /v1/companies/{company}/task-labels/{label}
public-api.v1.task_timers.currentGET /v1/task-timers/currentGET /v1/companies/{company}/task-timers/current
public-api.v1.task_timers.stopPOST /v1/task-timers/stopPOST /v1/companies/{company}/task-timers/stop
public-api.v1.tasks.activities.listGET /v1/tasks/{task}/activitiesGET /v1/companies/{company}/tasks/{task}/activities
public-api.v1.tasks.assignPOST /v1/tasks/{task}/assignPOST /v1/companies/{company}/tasks/{task}/assign
public-api.v1.tasks.attachments.createPOST /v1/tasks/{task}/attachmentsPOST /v1/companies/{company}/tasks/{task}/attachments
public-api.v1.tasks.attachments.deleteDELETE /v1/tasks/{task}/attachments/{attachment}DELETE /v1/companies/{company}/tasks/{task}/attachments/{attachment}
public-api.v1.tasks.attachments.downloadGET /v1/tasks/{task}/attachments/{attachment}/downloadGET /v1/companies/{company}/tasks/{task}/attachments/{attachment}/download
public-api.v1.tasks.attachments.listGET /v1/tasks/{task}/attachmentsGET /v1/companies/{company}/tasks/{task}/attachments
public-api.v1.tasks.attachments.showGET /v1/tasks/{task}/attachments/{attachment}GET /v1/companies/{company}/tasks/{task}/attachments/{attachment}
public-api.v1.tasks.bulk_deletePOST /v1/tasks/bulk-deletePOST /v1/companies/{company}/tasks/bulk-delete
public-api.v1.tasks.bulk_statusPOST /v1/tasks/bulk-statusPOST /v1/companies/{company}/tasks/bulk-status
public-api.v1.tasks.bulk_updatePOST /v1/tasks/bulk-updatePOST /v1/companies/{company}/tasks/bulk-update
public-api.v1.tasks.comments.createPOST /v1/tasks/{task}/commentsPOST /v1/companies/{company}/tasks/{task}/comments
public-api.v1.tasks.comments.deleteDELETE /v1/tasks/{task}/comments/{comment}DELETE /v1/companies/{company}/tasks/{task}/comments/{comment}
public-api.v1.tasks.comments.listGET /v1/tasks/{task}/commentsGET /v1/companies/{company}/tasks/{task}/comments
public-api.v1.tasks.comments.updatePUT /v1/tasks/{task}/comments/{comment}PUT /v1/companies/{company}/tasks/{task}/comments/{comment}
public-api.v1.tasks.createPOST /v1/tasksPOST /v1/companies/{company}/tasks
public-api.v1.tasks.custom_fields.setPUT /v1/tasks/{task}/custom-fields/{field}PUT /v1/companies/{company}/tasks/{task}/custom-fields/{field}
public-api.v1.tasks.deleteDELETE /v1/tasks/{task}DELETE /v1/companies/{company}/tasks/{task}
public-api.v1.tasks.duplicatePOST /v1/tasks/{task}/duplicatePOST /v1/companies/{company}/tasks/{task}/duplicate
public-api.v1.tasks.entity_links.createPOST /v1/tasks/{task}/entity-linksPOST /v1/companies/{company}/tasks/{task}/entity-links
public-api.v1.tasks.entity_links.deleteDELETE /v1/tasks/{task}/entity-links/{link}DELETE /v1/companies/{company}/tasks/{task}/entity-links/{link}
public-api.v1.tasks.entity_links.listGET /v1/tasks/{task}/entity-linksGET /v1/companies/{company}/tasks/{task}/entity-links
public-api.v1.tasks.external_links.createPOST /v1/tasks/{task}/external-linksPOST /v1/companies/{company}/tasks/{task}/external-links
public-api.v1.tasks.external_links.deleteDELETE /v1/tasks/{task}/external-links/{link}DELETE /v1/companies/{company}/tasks/{task}/external-links/{link}
public-api.v1.tasks.external_links.listGET /v1/tasks/{task}/external-linksGET /v1/companies/{company}/tasks/{task}/external-links
public-api.v1.tasks.find_by_keyPOST /v1/tasks/find-by-keyPOST /v1/companies/{company}/tasks/find-by-key
public-api.v1.tasks.labels.assignPOST /v1/tasks/{task}/labelsPOST /v1/companies/{company}/tasks/{task}/labels
public-api.v1.tasks.labels.unassignDELETE /v1/tasks/{task}/labels/{label}DELETE /v1/companies/{company}/tasks/{task}/labels/{label}
public-api.v1.tasks.linkedGET /v1/tasks/linkedGET /v1/companies/{company}/tasks/linked
public-api.v1.tasks.movePOST /v1/tasks/{task}/movePOST /v1/companies/{company}/tasks/{task}/move
public-api.v1.tasks.relations.createPOST /v1/tasks/{task}/relationsPOST /v1/companies/{company}/tasks/{task}/relations
public-api.v1.tasks.relations.deleteDELETE /v1/tasks/{task}/relations/{relation}DELETE /v1/companies/{company}/tasks/{task}/relations/{relation}
public-api.v1.tasks.relations.listGET /v1/tasks/{task}/relationsGET /v1/companies/{company}/tasks/{task}/relations
public-api.v1.tasks.repositionPOST /v1/tasks/{task}/repositionPOST /v1/companies/{company}/tasks/{task}/reposition
public-api.v1.tasks.searchGET /v1/tasksGET /v1/companies/{company}/tasks
public-api.v1.tasks.showGET /v1/tasks/{task}GET /v1/companies/{company}/tasks/{task}
public-api.v1.tasks.statusPOST /v1/tasks/{task}/statusPOST /v1/companies/{company}/tasks/{task}/status
public-api.v1.tasks.time_entries.createPOST /v1/tasks/{task}/time-entriesPOST /v1/companies/{company}/tasks/{task}/time-entries
public-api.v1.tasks.time_entries.deleteDELETE /v1/tasks/{task}/time-entries/{time_entry}DELETE /v1/companies/{company}/tasks/{task}/time-entries/{time_entry}
public-api.v1.tasks.time_entries.listGET /v1/tasks/{task}/time-entriesGET /v1/companies/{company}/tasks/{task}/time-entries
public-api.v1.tasks.time_entries.showGET /v1/tasks/{task}/time-entries/{time_entry}GET /v1/companies/{company}/tasks/{task}/time-entries/{time_entry}
public-api.v1.tasks.time_entries.updatePUT /v1/tasks/{task}/time-entries/{time_entry}PATCH /v1/companies/{company}/tasks/{task}/time-entries/{time_entry}
public-api.v1.tasks.timer.startPOST /v1/tasks/{task}/timer/startPOST /v1/companies/{company}/tasks/{task}/timer/start
public-api.v1.tasks.unassignPOST /v1/tasks/{task}/unassignPOST /v1/companies/{company}/tasks/{task}/unassign
public-api.v1.tasks.updatePUT /v1/tasks/{task}PATCH /v1/companies/{company}/tasks/{task}
public-api.v1.tasks.upload_links.createPOST /v1/tasks/{task}/upload-linksPOST /v1/companies/{company}/tasks/{task}/upload-links

Escáner de gastos

El escáner de gastos y su buzón (12). Los segmentos van en kebab-case.

OperaciónAntesAhora
public-api.v1.purchase_scan_emails.listGET /v1/purchase_scan_emailsGET /v1/companies/{company}/purchase-scan-emails
public-api.v1.purchase_scans.archiveDELETE /v1/purchase_scans/{purchase_scan}DELETE /v1/companies/{company}/purchase-scans/{purchase_scan}
public-api.v1.purchase_scans.convertPOST /v1/purchase_scans/{purchase_scan}/convertPOST /v1/companies/{company}/purchase-scans/{purchase_scan}/convert
public-api.v1.purchase_scans.createPOST /v1/purchase_scansPOST /v1/companies/{company}/purchase-scans
public-api.v1.purchase_scans.duplicate_resolutionPOST /v1/purchase_scans/{purchase_scan}/duplicate_resolutionPOST /v1/companies/{company}/purchase-scans/{purchase_scan}/duplicate-resolution
public-api.v1.purchase_scans.listGET /v1/purchase_scansGET /v1/companies/{company}/purchase-scans
public-api.v1.purchase_scans.restorePOST /v1/purchase_scans/{purchase_scan}/restorePOST /v1/companies/{company}/purchase-scans/{purchase_scan}/restore
public-api.v1.purchase_scans.retryPOST /v1/purchase_scans/{purchase_scan}/retryPOST /v1/companies/{company}/purchase-scans/{purchase_scan}/retry
public-api.v1.purchase_scans.reviewPUT /v1/purchase_scans/{purchase_scan}/reviewPATCH /v1/companies/{company}/purchase-scans/{purchase_scan}/review
public-api.v1.purchase_scans.showGET /v1/purchase_scans/{purchase_scan}GET /v1/companies/{company}/purchase-scans/{purchase_scan}
public-api.v1.purchase_scans.sourceGET /v1/purchase_scans/{purchase_scan}/sourceGET /v1/companies/{company}/purchase-scans/{purchase_scan}/source
public-api.v1.purchase_scans.statsGET /v1/purchase_scans/statsGET /v1/companies/{company}/purchase-scans/stats

Notificaciones

Las notificaciones de quien posee la credencial (3).

OperaciónAntesAhora
public-api.v1.notifications.listGET /v1/notificationsGET /v1/companies/{company}/notifications
public-api.v1.notifications.mark_all_readPOST /v1/notifications/mark-all-readPOST /v1/companies/{company}/notifications/mark-all-read
public-api.v1.notifications.readPOST /v1/notifications/{notification}/readPOST /v1/companies/{company}/notifications/{notification}/read

VeriFactu: representación y registros bloqueados

Representación y reintento de los registros bloqueados (4).

OperaciónAntesAhora
public-api.v1.verifactu.records.retry_blockedPOST /v1/verifactu/records/retry-blockedPOST /v1/companies/{company}/verifactu/records/retry-blocked
public-api.v1.verifactu.representation.registerPOST /v1/verifactu/representationPOST /v1/companies/{company}/verifactu/representation
public-api.v1.verifactu.representation.revokeDELETE /v1/verifactu/representationDELETE /v1/companies/{company}/verifactu/representation
public-api.v1.verifactu.representation.showGET /v1/verifactu/representationGET /v1/companies/{company}/verifactu/representation

Facturas, importaciones de contactos, usuarios, categorías de gasto y series

(7)

OperaciónAntesAhora
public-api.v1.invoices.issuePOST /v1/invoices/{invoice}/issuePOST /v1/companies/{company}/invoices/{invoice}/issue
public-api.v1.contacts.imports.showGET /v1/contacts/imports/{id}GET /v1/companies/{company}/contacts/imports/{id}
public-api.v1.contacts.imports.errorsGET /v1/contacts/imports/{id}/errors.csvGET /v1/companies/{company}/contacts/imports/{id}/errors.csv
public-api.v1.users.listGET /v1/usersGET /v1/companies/{company}/users
public-api.v1.users.meGET /v1/users/meGET /v1/companies/{company}/users/me
public-api.v1.purchase_invoices.expense_categoriesGET /v1/purchase_invoices/expense_categoriesGET /v1/companies/{company}/purchase-invoices/expense-categories
public-api.v1.series.updatePUT /v1/series/{series}PATCH /v1/companies/{company}/series/{series}

Endpoints actualizados113

EndpointDescripción
GET/v1/companies/{company}/agendaListar elementos de la agenda
POST/v1/companies/{company}/contacts/importImportar contactos
GET/v1/companies/{company}/contacts/import/templateDescargar la plantilla de importación de contactos
GET/v1/companies/{company}/contacts/imports/{id}/errors.csvDescargar errores de importación de contactos
GET/v1/companies/{company}/contacts/imports/{id}Consultar una importación de contactos
POST/v1/companies/{company}/contacts/import/previewPrevisualizar una importación de contactos
GET/v1/companies/{company}/delivery-notesListar todos los albaranes
GET/v1/companies/{company}/delivery-notes/{delivery_note}Obtener un albarán
GET/v1/companies/{company}/invoices/{invoice}/activitiesListar la actividad de la factura
POST/v1/companies/{company}/invoices/{invoice}/issueEmite una factura
GET/v1/companies/{company}/invoicesListar todas las facturas
GET/v1/companies/{company}/invoices/{invoice}Recupera una factura
GET/v1/companies/{company}/notificationsListar notificaciones
POST/v1/companies/{company}/notifications/mark-all-readMarcar todas las notificaciones como leídas
POST/v1/companies/{company}/notifications/{notification}/readMarcar una notificación como leída
GET/v1/companies/{company}/proformasListar todas las proformas
GET/v1/companies/{company}/proformas/{proforma}Obtener una proforma
POST/v1/companies/{company}/projects/{project}/archiveArchivar un proyecto
POST/v1/companies/{company}/projects/{project}/columnsCrear una columna de proyecto
DEL/v1/companies/{company}/projects/{project}/columns/{column}Eliminar una columna de proyecto
GET/v1/companies/{company}/projects/{project}/columnsListar columnas de proyecto
PUT/v1/companies/{company}/projects/{project}/columns/reorderReordenar columnas de proyecto
PATCH/v1/companies/{company}/projects/{project}/columns/{column}Actualizar una columna de proyecto
POST/v1/companies/{company}/projectsCrear un proyecto
POST/v1/companies/{company}/projects/{project}/custom-fieldsCrear un campo personalizado de proyecto
DEL/v1/companies/{company}/projects/{project}/custom-fields/{field}Eliminar un campo personalizado de proyecto
GET/v1/companies/{company}/projects/{project}/custom-fieldsListar campos personalizados de proyecto
PATCH/v1/companies/{company}/projects/{project}/custom-fields/{field}Actualizar un campo personalizado de proyecto
DEL/v1/companies/{company}/projects/{project}Eliminar un proyecto
POST/v1/companies/{company}/projects/find-by-keyBuscar un proyecto por clave
GET/v1/companies/{company}/projectsListar proyectos
GET/v1/companies/{company}/projects/{project}Obtener un proyecto
GET/v1/companies/{company}/projects/{project}/tasks/exportExportar las tareas de un proyecto
POST/v1/companies/{company}/projects/{project}/tasks/importImportar tareas a un proyecto
POST/v1/companies/{company}/projects/{project}/time-invoicesFacturar el tiempo de un proyecto
POST/v1/companies/{company}/projects/{project}/time-invoices/previewPrevisualizar la factura del tiempo de un proyecto
GET/v1/companies/{company}/projects/{project}/time-summaryObtener el resumen de tiempo de un proyecto
POST/v1/companies/{company}/projects/{project}/unarchiveDesarchivar un proyecto
PATCH/v1/companies/{company}/projects/{project}Actualizar un proyecto
GET/v1/companies/{company}/purchase-invoices/expense-categoriesListar categorías de gastos
GET/v1/companies/{company}/purchase-scan-emailsListar correos del escáner de compras
DEL/v1/companies/{company}/purchase-scans/{purchase_scan}Archivar un escaneo de compra
POST/v1/companies/{company}/purchase-scans/{purchase_scan}/convertCrear el gasto de un escaneo
POST/v1/companies/{company}/purchase-scansSubir documentos al escáner de compras
POST/v1/companies/{company}/purchase-scans/{purchase_scan}/duplicate-resolutionResolver un escaneo de compra duplicado
GET/v1/companies/{company}/purchase-scansListar escaneos de compras
POST/v1/companies/{company}/purchase-scans/{purchase_scan}/restoreRestaurar un escaneo de compra archivado
POST/v1/companies/{company}/purchase-scans/{purchase_scan}/retryReintentar un escaneo de compra fallido
PATCH/v1/companies/{company}/purchase-scans/{purchase_scan}/reviewGuardar la revisión de un escaneo de compra
GET/v1/companies/{company}/purchase-scans/{purchase_scan}Consultar un escaneo de compra
GET/v1/companies/{company}/purchase-scans/{purchase_scan}/sourceDescargar el documento original
GET/v1/companies/{company}/purchase-scans/statsConsultar indicadores del escáner de compras
GET/v1/companies/{company}/quotesListar todos los presupuestos
GET/v1/companies/{company}/quotes/{quote}Obtener un presupuesto
PATCH/v1/companies/{company}/series/{series}Actualizar una serie
POST/v1/companies/{company}/task-labelsCrear una etiqueta de tarea
DEL/v1/companies/{company}/task-labels/{label}Eliminar una etiqueta de tarea
GET/v1/companies/{company}/task-labelsListar etiquetas de tarea
GET/v1/companies/{company}/task-labels/{label}Obtener una etiqueta de tarea
PATCH/v1/companies/{company}/task-labels/{label}Actualizar una etiqueta de tarea
GET/v1/companies/{company}/task-timers/currentObtener el temporizador de tarea en marcha
POST/v1/companies/{company}/task-timers/stopDetener el temporizador de tarea en marcha
GET/v1/companies/{company}/tasks/{task}/activitiesListar la actividad de una tarea
POST/v1/companies/{company}/tasks/{task}/assignAsignar una tarea
POST/v1/companies/{company}/tasks/{task}/attachmentsSubir un adjunto de tarea
DEL/v1/companies/{company}/tasks/{task}/attachments/{attachment}Eliminar un adjunto de tarea
GET/v1/companies/{company}/tasks/{task}/attachments/{attachment}/downloadDescargar un adjunto de tarea
GET/v1/companies/{company}/tasks/{task}/attachmentsListar adjuntos de tarea
GET/v1/companies/{company}/tasks/{task}/attachments/{attachment}Obtener un adjunto de tarea
POST/v1/companies/{company}/tasks/bulk-deleteEliminación masiva de tareas
POST/v1/companies/{company}/tasks/bulk-statusCambiar el estado de tareas en bloque
POST/v1/companies/{company}/tasks/bulk-updateActualización masiva de tareas
POST/v1/companies/{company}/tasks/{task}/commentsCrear un comentario de tarea
DEL/v1/companies/{company}/tasks/{task}/comments/{comment}Eliminar un comentario de tarea
GET/v1/companies/{company}/tasks/{task}/commentsListar comentarios de tarea
PUT/v1/companies/{company}/tasks/{task}/comments/{comment}Actualizar un comentario de tarea
POST/v1/companies/{company}/tasksCrear una tarea
PUT/v1/companies/{company}/tasks/{task}/custom-fields/{field}Establecer el valor de un campo personalizado de tarea
DEL/v1/companies/{company}/tasks/{task}Eliminar una tarea
POST/v1/companies/{company}/tasks/{task}/duplicateDuplicar una tarea
POST/v1/companies/{company}/tasks/{task}/entity-linksVincular una tarea a una entidad
DEL/v1/companies/{company}/tasks/{task}/entity-links/{link}Desvincular una tarea de una entidad
GET/v1/companies/{company}/tasks/{task}/entity-linksListar vínculos de tarea con entidades
POST/v1/companies/{company}/tasks/{task}/external-linksCrear un enlace externo de tarea
DEL/v1/companies/{company}/tasks/{task}/external-links/{link}Eliminar un enlace externo de tarea
GET/v1/companies/{company}/tasks/{task}/external-linksListar enlaces externos de tarea
POST/v1/companies/{company}/tasks/find-by-keyBuscar una tarea por clave
POST/v1/companies/{company}/tasks/{task}/labelsAsignar una etiqueta a una tarea
DEL/v1/companies/{company}/tasks/{task}/labels/{label}Quitar una etiqueta de una tarea
GET/v1/companies/{company}/tasks/linkedListar tareas vinculadas a una entidad
POST/v1/companies/{company}/tasks/{task}/moveMover una tarea a otro proyecto
POST/v1/companies/{company}/tasks/{task}/relationsCrear una relación de tarea
DEL/v1/companies/{company}/tasks/{task}/relations/{relation}Eliminar una relación de tarea
GET/v1/companies/{company}/tasks/{task}/relationsListar relaciones de tarea
POST/v1/companies/{company}/tasks/{task}/repositionRecolocar una tarea
GET/v1/companies/{company}/tasksBuscar tareas
GET/v1/companies/{company}/tasks/{task}Obtener una tarea
POST/v1/companies/{company}/tasks/{task}/statusCambiar el estado de una tarea
POST/v1/companies/{company}/tasks/{task}/time-entriesCrear una imputación de tiempo de tarea
DEL/v1/companies/{company}/tasks/{task}/time-entries/{time_entry}Eliminar una imputación de tiempo de tarea
GET/v1/companies/{company}/tasks/{task}/time-entriesListar imputaciones de tiempo de tarea
GET/v1/companies/{company}/tasks/{task}/time-entries/{time_entry}Obtener una imputación de tiempo de tarea
PATCH/v1/companies/{company}/tasks/{task}/time-entries/{time_entry}Actualizar una imputación de tiempo de tarea
POST/v1/companies/{company}/tasks/{task}/timer/startIniciar un temporizador de tarea
POST/v1/companies/{company}/tasks/{task}/unassignDesasignar una tarea
PATCH/v1/companies/{company}/tasks/{task}Actualizar una tarea
POST/v1/companies/{company}/tasks/{task}/upload-linksCrear un enlace de subida de tarea
GET/v1/companies/{company}/usersListar usuarios
GET/v1/companies/{company}/users/meObtener el usuario actual
POST/v1/companies/{company}/verifactu/records/retry-blockedReintentar todos los registros VeriFactu bloqueados
POST/v1/companies/{company}/verifactu/representationRegistrar una representación
DEL/v1/companies/{company}/verifactu/representationRevocar la representación vigente
GET/v1/companies/{company}/verifactu/representationRecuperar la representación vigente

En esta página

¿Te echamos una mano?Contactar con soporte