Changelog
Novedades
Los cambios de la API REST y del servidor MCP, de lo más reciente a lo más antiguo.
API REST 1.0.0
Versión 1.0.0 del API REST de Filmo.
Añadido
retryAfteren el problema429 rate_limited(REST y MCP): segundos que debes esperar antes de reintentar, con el mismo valor que la cabeceraRetry-After;detailtambién lo indica.- Las filas de
GET /plannerincluyen/services rowKind(summaryodetail): cada servicio tiene una filasummary(sin asignación) y una filadetailpor cada persona o vehículo asignado, con el mismoorderServiceId. Agrupa pororderServiceId; questaffMemberIdsea nulo en la fila de resumen no significa que el servicio esté sin cubrir. - Cada respuesta correcta (2xx) de todas las operaciones incluye un
example: datos ficticios y deterministas (dominios de RFC 2606) que cumplen el esquema de respuesta. - Un ejemplo de respuesta por código de error (los 20 valores de
code), comocomponents.y referenciado desde las respuestas de error de todas las operaciones, con elexamples. Problem_<code> titley la estructura reales del problema.
Cambiado
- Las URI de
typede los errores pasan a serhttps://(antes erandocs. filmo. io /errors /<code> https://). Basa la lógica endevelopers. filmo. io /errors /<code> code, no en la URI. - Cada respuesta 409
conflictincluye ahora su causa enerrors[0].:code in_progress,lock_timeoutoinvalid_state. Dondeerrors[].antes eracode conflict(infracciones de unicidad y líneas de un lote atómico que fallan porque su estado impide la operación), ahora esinvalid_state; una línea del lote que no existe o tiene una cantidad no válida sigue indicandonot_foundovalidation_error. - Los cuerpos de las respuestas correctas son esquemas con nombre y un campo opcional
meta.; las respuestas de escritura declaran la cabecerawarnings Idempotent-Replay. - La documentación se ha trasladado a https://docs.filmo.io; en producción,
/apiredirige allí./v1 /docs - Los filtros de fecha (
createdOn,issueDateBefore,returnTo…) se publican como un únicotype: stringcon unpattern(un díaYYYY-MM-DDo un instante ISO 8601 con desplazamiento horario), en lugar de unanyOfdedateydate-timeque algunos generadores de clientes no podían compilar. El servidor acepta exactamente los mismos valores. - Las respuestas 401 y 403 dejan de declarar las cabeceras
RateLimit-*: nunca se enviaban, ya que estos errores se responden antes de que la petición cuente para el límite. - Cada operación que puede responder 402 por faltar un producto adicional lo identifica en la extensión
x-required-addon(por ejemplo,["incidence"]).ProblemDetails.yrequiredAddon AccountDto.son ahora enumeraciones cerradas de identificadores de productos adicionales;addons GET /accountsolo devuelve identificadores de ese catálogo. - El campo
pathde las entradas deerrors[]de un 409contact_in_use(el tipo de registro que utiliza el contacto:orders,projects,quotes,invoices,proformas,creditNotes,simpleCreditNotes,salesReceipts,supplierInvoices,contracts,subrents,purchaseOrders,sepaMandates,receipts,consignments),address_in_use(siempreorders) einsufficient_stock(itemsospaces) es un conjunto cerrado, publicado por código en la extensiónx-path-valuesdeProblemDetails..errors[]. path Idempotency-Keyse declara conminLength: 1. Una clave vacía ya producía un 400validation_erroren REST; las herramientas MCP ahora rechazan unidempotencyKeyvacío de la misma forma (errors[0].=path idempotencyKey), en lugar de ignorarlo y ejecutar la escritura sin protección.
Corregido
- El resultado de cada herramienta MCP cumple ahora la validación de los SDK oficiales (
Client.en TypeScript y Python): antes, las respuestas correctas concallTool meta.y todos los errores fallaban conidempotencyKey -32602 Structured content does not match the tool's output schema. - Las lecturas de detalle enviadas con
If-None-Matchresponden ahora304 Not Modified(sin cuerpo y conETag) cuando la etiqueta está vigente, tal como ya declaraba la especificación. Hasta ahora devolvían una respuesta 200 completa. - Sin
Accept-Language, los errores 401 de una clave existente (revocada, caducada, con propietario inactivo o sin rol de administrador) y el 403insufficient_scopese devolvían en español, independientemente del idioma preferido por el propietario de la clave. Ahora utilizan el idioma del propietario, como los errores posteriores; las peticiones sin credencial o con una clave desconocida siguen respondiendo en español. upsertExternalInvoicedocumentaba los problemas de cliente y totales como 422; son errores 400validation_error, yerrors[0].ahora identifica el campo (path contactId,contactTaxId,contactName,subTotal,taxTotal,total,lines[n].).taxRate
¿Te ha resultado útil esta página?