Conceptos básicos
Registros e ids
Cada registro tiene un id opaco que asigna Filmo. Guarda tus propios ids en una tabla de correspondencias de tu lado, y usa un campo de referencia solo donde la API lo tenga.
Los ids son opacos
Enlace a esta sección: Los ids son opacosLos identificadores son cadenas opacas. No supongas nunca su formato, su longitud ni su orden, y no construyas ninguno. Los cursores de paginación son opacos de la misma manera. Los números legibles, como orderNumber o contactNumber, son para las personas: usa id para direccionar un registro.
Dónde puede estar tu id
Enlace a esta sección: Dónde puede estar tu idSolo algunos recursos tienen un campo escribible para una referencia de tu sistema. La tabla se genera a partir de la especificación.
| Campo | Sí o no |
|---|---|
ContactDto. | No |
ContactDetailDto. | No |
ContactCreateBody. | Sí |
ContactUpdateBody. | Sí |
OrderDto. | No |
OrderDetailDto. | No |
ProjectDto. | No |
ProjectDetailDto. | No |
ProjectCreateBody. | Sí |
StaffMemberDto. | No |
StaffUpdateBody. | Sí |
ProjectUpdateBody. | Sí |
upsertExternalInvoice. | Sí |
upsertExternalInvoice. | Sí |
| Recurso | Qué existe hoy |
|---|---|
| Proyectos | externalReference al crear y externalReference al actualizar, hasta 200 caracteres. |
| Personal | externalRef, solo al actualizar; el cuerpo de creación no lo tiene. null lo borra. |
| Facturas emitidas en otro sitio | El par originSystem y originExternalId en la ruta de PUT /api es la clave del espejo: repetirlo actualiza el mismo espejo. |
| Pedidos | externalReference se devuelve, pero los cuerpos de creación y actualización no tienen ese campo: puedes leerlo, pero todavía no escribirlo a través de la API. |
| Contactos | No hay campo de referencia externa. contactNumber es una referencia libre, de hasta 50 caracteres, que puedes escribir al crear y al actualizar. No es único: Filmo no impide que dos contactos compartan un número, así que comprueba lo que devuelve una búsqueda. |
Buscar contactos
Enlace a esta sección: Buscar contactosPOST /api acepta hasta 200 referencias y compara cada una, de forma exacta y sin ninguna normalización, con el contactNumber de los contactos, y con nada más. Devuelve dos listas: notFound, las referencias que no coinciden con ningún contacto, y contacts, los contactos que coincidieron, cada uno con id, name y contactNumber. No escribe nada, aunque sea un POST.
La respuesta no empareja una referencia con un contacto, y el orden de contacts no está garantizado. Empárejalos tú mismo comparando el contactNumber de cada contacto con tu referencia. Como contactNumber no es único, pueden devolverse varios contactos para una referencia: decide qué hacer en ese caso en lugar de tomar el primero. Usa notFound para saber qué crear, y guarda el id de Filmo en tu propia tabla cuando lo tengas.
Mantén tu propia tabla de correspondencias
Enlace a esta sección: Mantén tu propia tabla de correspondenciasGuarda tu id externo y el id de Filmo juntos en tu propia base de datos. Una Idempotency-Key solo deduplica reintentos durante 24 horas; no sustituye esa tabla (Idempotencia). Con la tabla puedes actualizar el registro correcto, detectar duplicados y decidir qué eliminar. Para el patrón en un CRM, consulta el tutorial de sincronización de contactos.
Campos personalizados
Enlace a esta sección: Campos personalizadosLos valores de los campos personalizados se leen en el mapa customFields de un registro, indexados por el identificador de la definición del campo. Las definiciones vienen de GET /api, con la entidad a la que se aplica cada una (applyAt), el tipo y los valores que acepta un desplegable. Los valores viajan dentro de cada recurso; el endpoint de definiciones no los devuelve. v1 no tiene ninguna operación que escriba un campo personalizado: los cuerpos de creación y actualización no tienen la propiedad customFields, así que establécelos en la app.
Etiquetas y notas
Enlace a esta sección: Etiquetas y notas- Etiquetas:
GET /apidevuelve el vocabulario con cuántas entidades usan cada una./v1 /tags POST /apiasocia una etiqueta existente a una entidad./v1 /tags /{tagId} /assignments DELETE /apiquita el vínculo y no borra la etiqueta./v1 /tags /{tagId} /assignments - Notas:
POST /apiescribe una nota en una entidad y/v1 /notes GET /apilee las notas de una entidad, nunca las de todas. No se devuelve quién escribió una nota. Mencionar a usuarios les envía una notificación en Filmo./v1 /notes
Páginas relacionadas
Enlace a esta sección: Páginas relacionadasConceptos básicos
Modelo de datos
Los pedidos conectan un contacto, un proyecto opcional y el equipo alquilado; de ellos cuelgan los documentos, los pagos, la planificación y el catálogo.
Guías
Sincronizar datos
Filmo v1 no envía webhooks, así que mantienes otro sistema sincronizado consultando periódicamente: lee lo que cambió en ventanas de tiempo semiabiertas y ejecuta un barrido aparte para encontrar lo que se eliminó. No sigas el cursor de paginación para decidir qué cambió o qué desapareció.
Guías
Idempotencia y reintentos seguros
Envía una cabecera
Idempotency-Keycon cada escritura y reutiliza el mismo valor cuando reintentes esa operación: Filmo devuelve el resultado almacenado del primer intento en lugar de escribir dos veces.Tutoriales
Sincronizar contactos desde tu CRM
Replica a las personas de tu CRM como contactos de Filmo y controla los duplicados, ya que la API no puede descartarlos: busca por email o por el número de contacto que establezcas, conserva tu propia tabla de ids e ignora el eco de tus propias escrituras.
¿Te ha resultado útil esta página?