> This page is for De cámara a la nube.

> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://next.developer.frame.io/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://next.developer.frame.io/_mcp/server.

# Arquitectura de la integración

## Introducción





Antes de empezar a realizar solicitudes a la API, debe entender la arquitectura básica de las integraciones de C2C. No se preocupe, en el siguiente artículo trabajará en el terminal. Por ahora, tratemos estos conceptos esenciales.





El modelo de datos simplificado para su integración tendrá un aspecto similar a este:





```text
                                   ┌───────────────────┐    ┌─────────┐
                                   │ Project Device 01 │ -> │ Project │
┌───────────┐    ┌──────────────┐  └───────────────────┘    └─────────┘
│ Oauth App │ -> │ Device Model │ ──────────⭥
└───────────┘    └──────────────┘  ┌───────────────────┐    ┌─────────┐
                                   │ Project Device 02 │ -> │ Project │
                                   └───────────────────┘    └─────────┘
```





## Aplicaciones de OAuth

Su integración está definida por una aplicación de OAuth, una entidad registrada con nuestro backend que permite que sus dispositivos se autoricen con Frame.io mediante [OAuth 2](https://oauth.net/2/). Su aplicación de OAuth define la estrategia de autorización para toda su integración. Cada dispositivo que sus usuarios conecten a Frame.io se autorizará a través de la misma aplicación de OAuth (aunque puede que los integradores con varias líneas de dispositivos quieran una aplicación de OAuth para cada una).

Para las integraciones de C2C, usamos un flujo de OAuth especializado diseñado específicamente para dispositivos con capacidades de interfaz de usuario limitadas.





### Autenticación de dispositivos de C2C





La API de C2C se ha diseñado para dispositivos con capacidades de interfaz de usuario limitadas. Estos dispositivos permiten que un usuario los conecte a Frame.io mostrando un código de 6 dígitos, que luego el usuario introduce en el sitio web de Frame.io usando su propio navegador.

A los dispositivos se les emite un `client_secret` que debe proporcionarse a nuestro backend para recibir un código de autorización de 6 dígitos. Este enfoque optimizado garantiza una experiencia de autenticación coherente y segura en todas las integraciones de C2C.

## Modelos de dispositivo





El modelo de dispositivo configura cómo se comporta su dispositivo al interactuar con el backend de C2C, lo que incluye qué funciones admite. Los siguientes ajustes se configuran según su modelo de dispositivo:




<CardGroup cols={2}>
  
  
<Card icon="plug" title="Estado del socket">
  
  

Si la integración usará sockets de baja latencia para comunicar su estado actual, o llamadas REST de mayor latencia.



</Card>

<Card icon="folder" title="Nombre de ruta">
  
    

El nombre de su integración como debería aparecer en la ruta de cualquier activo cargado.


  
</Card>

<Card icon="code" title="Ruta de archivo tokenizada">
  
    

C2C solo permite cargar activos a rutas de archivos raíz específicas, pero por debajo de ese requisito su dispositivo se puede configurar para cargar activos en una ruta de archivo calculada dinámicamente basada en los metadatos suministrados del activo.


  
</Card>

<Card icon="list" title="Metadatos obligatorios">
  
    

Qué metadatos serán obligatorios al cargar un activo en Frame.io, especialmente para admitir la ruta de archivo tokenizada.


  
</Card>

</CardGroup>

<Card icon="plug" title="Estado del socket">
  
  

Si la integración usará sockets de baja latencia para comunicar su estado actual, o llamadas REST de mayor latencia.



</Card>


Las funciones que admite su dispositivo pueden cambiar según la versión de firmware. Para habilitar la compatibilidad con versiones anteriores y ofrecer una experiencia de usuario limpia, la configuración de su dispositivo se selecciona dinámicamente según la versión de firmware detectada. En un futuro cercano, una integración podrá tener más de un DeviceModel. El modelo de dispositivo que se usará se determinará comparando la versión de firmware del dispositivo con el requisito de versión mínima de firmware de un modelo de dispositivo concreto.





## Dispositivos de proyecto e identificación

El `ProjectDevice` representa cada instancia física de un dispositivo conectado a Frame.io. Un `ProjectDevice` se identifica usando un valor de identificación único llamado `client_id`. Este valor debe ser algo que esté garantizado que no se comparta entre dos dispositivos. Puede ser el número de serie de un dispositivo o una cadena aleatoria que el dispositivo genera una vez y guarda. El `client_id` NO debe ser un valor que su dispositivo no posea, como la dirección MAC de un ordenador.

Nuestro backend realiza un seguimiento de cada dispositivo de proyecto y guarda información sobre él, como su versión de firmware actual.

Cada `ProjectDevice` tendrá un `Project` específico de Frame.io asociado a él y una `OauthAuthorization` que permite que el dispositivo acceda al proyecto y un conjunto de ámbitos que detallan lo que tiene permitido hacer un dispositivo. Para obtener más información sobre los ámbitos disponibles, consulte las guías detalladas sobre cómo implementar la autenticación y autorización. El `ProjectDevice` es lo que devuelve el punto final `/me`. Un `Device` solo puede estar vinculado activamente a un único `ProjectDevice` a la vez, y por lo tanto, a un único `Project` a la vez.

## Versiones de firmware

Su dispositivo debe suministrar su versión de firmware actual con el encabezado HTTP `x-client-version` siempre que llame a un punto final en `https://api.frame.io`. Las guías posteriores sobre la API incluirán este encabezado en cada ejemplo. En algunos casos, nuestro backend debe ordenar varias versiones de firmware, y para que pueda hacerlo, los valores DEBEN ser una [versión semántica](https://semver.org/) válida. Esto incluye valores como `0.1.2`, `2.1.3-preview.01` y `2.1.3-preview.01+build_19770504.01`, entre otros.

Se devolverá un error si los valores de la versión de firmware no son versiones semánticas válidas. Entendemos que no todas las integraciones realizan un seguimiento de su firmware mediante versiones semánticas y, en esos casos, le pedimos que mantenga un registro de una versión semántica que proporcionar a nuestro backend para cada versión interna que cree.





Al proporcionar el encabezado, diferentes versiones de su firmware pueden admitir funciones diferentes (y a veces conflictivas) en Frame.io.




<Info title="Host de encabezado">
  


La versión de firmware solo se gestiona mediante llamadas a https://api.frame.io; al realizar llamadas a https://applications.frame.io, el encabezado no se aplica.



</Info>

<Info title="Requisito actual">
  `x-client-version` es ahora un encabezado HTTP obligatorio y se aplicará en los servidores de Frame.
</Info>


## Próximos pasos

Ha llegado el momento de realizar algunas llamadas API. Aprendamos cómo autenticar y autorizar con C2C. Siga la [guía de configuración](./implementing-c2c-setting-up) para empezar.