> ## Documentation Index
> Fetch the complete documentation index at: https://translations.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Autorizar dispositivo

> Obtenga un código de dispositivo para iniciar el Flujo de autorización de dispositivo para dispositivos con capacidad de entrada limitada.

export const ResponseSchema = ({statusCode, type = "{}", children}) => {
  const [open, setOpen] = useState(false);
  return <div className="border border-gray-100 dark:border-gray-800 rounded-lg mb-3 overflow-hidden">
      <div className={`flex items-center gap-2.5 px-4 py-2.5 cursor-pointer select-none ${open ? "bg-gray-50 dark:bg-gray-800" : ""}`} onClick={() => setOpen(!open)}>
        {statusCode && <span className="border border-gray-300 dark:border-gray-600 text-gray-700 dark:text-gray-300 font-mono text-xs px-1.5 py-0.5 rounded">
            {statusCode.startsWith("default") ? "default" : statusCode}
          </span>}
        <span className="text-gray-500 dark:text-gray-400 text-sm font-mono">
          {type}
        </span>
        <span className="text-gray-400 dark:text-gray-500 text-sm italic">
          application/json
        </span>
        <svg className={`ml-auto opacity-50 transition-transform duration-200 ${open ? "rotate-180" : ""}`} width="16" height="16" viewBox="0 0 16 16" fill="none">
          <path d="M4 6l4 4 4-4" stroke="currentColor" strokeWidth="1.5" strokeLinecap="round" strokeLinejoin="round" />
        </svg>
      </div>
      {open && <div className="px-4 pt-1 pb-3 border-t border-gray-100 dark:border-gray-800">
          {children}
        </div>}
    </div>;
};

<div id="endpoint">
  ## Endpoint
</div>

`POST /oauth/device/code`

Este flujo está diseñado para que los dispositivos con capacidad de entrada limitada accedan a una API. Use este endpoint para obtener un código de dispositivo que permita al usuario autorizar el dispositivo.

<div id="request-example">
  ## Ejemplo de solicitud
</div>

```http theme={null}
POST https://{yourDomain}/oauth/device/code
Content-Type: application/x-www-form-urlencoded

client_id=${account.clientId}&scope=SCOPE&audience=API_IDENTIFIER
```

<div id="response-values">
  ### Valores de la respuesta
</div>

| Valor                       | Descripción                                                                   |
| :-------------------------- | :---------------------------------------------------------------------------- |
| `device_code`               | El code único del dispositivo.                                                |
| `user_code`                 | El code que el usuario debe introducir para autorizar el dispositivo.         |
| `verification_uri`          | La URL que el usuario debe visitar para autorizar el dispositivo.             |
| `verification_uri_complete` | La URL completa, incluido el code de usuario, para facilitar el acceso.       |
| `expires_in`                | El tiempo de validez de los codes del dispositivo y del usuario, en segundos. |
| `interval`                  | El intervalo de sondeo, en segundos, para solicitar un token.                 |

<div id="remarks">
  ### Observaciones
</div>

* Incluye `offline_access` en el `scope` para obtener un Token de actualización.
* Usa el código de dispositivo devuelto para solicitar un token de acceso en el endpoint de token.

<div id="token-request-example">
  ### Ejemplo de solicitud de Token
</div>

```http theme={null}
POST https://{yourDomain}/oauth/token
Content-Type: application/x-www-form-urlencoded

client_id=${account.clientId}&device_code=YOUR_DEVICE_CODE&grant_type=urn:ietf:params:oauth:grant-type:device_code
```

<div id="responses">
  ### Respuestas
</div>

<div id="200">
  #### 200
</div>

Una solicitud correcta devuelve un token de acceso.

```json theme={null}
HTTP/1.1 200 OK
Content-Type: application/json
{
   "access_token": "eyJz93a...k4laUWw",
   "id_token": "eyJ...0NE",
   "refresh_token": "eyJ...MoQ",
   "expires_in": 86400,
   "token_type": "Bearer"
}
```

<div id="error-responses">
  ### Respuestas de error
</div>

```json theme={null}
HTTP/1.1 403 Forbidden
Content-Type: application/json
{ "error": "authorization_pending", "error_description": "User has yet to authorize device code." }
```

```json theme={null}
HTTP/1.1 429 Too Many Requests
Content-Type: application/json
{ "error": "slow_down", "error_description": "You are polling faster than the specified interval of 5 seconds." }
```

```json theme={null}
HTTP/1.1 403 Forbidden
Content-Type: application/json
{ "error": "access_denied", "error_description": "User cancelled the confirmation prompt." }
```

<div id="learn-more">
  ### Más información
</div>

* [Flujo de autorización de dispositivos](https://auth0.com/docs/get-started/authentication-and-authorization-flow/device-authorization-flow)
* [Llamar a una API mediante el flujo de autorización de dispositivos](https://auth0.com/docs/get-started/authentication-and-authorization-flow/device-authorization-flow/call-your-api-using-the-device-authorization-flow)
* [Configurar un grant de código de dispositivo desde el Dashboard de administración](https://auth0.com/docs/get-started/applications/update-grant-types)

<div id="body-parameters">
  ## Parámetros del cuerpo
</div>

<ParamField body="client_id" type="string" required>
  El ID de su aplicación.
</ParamField>

<ParamField body="scope" type="string">
  Los alcances para los que desea solicitar autorización.
</ParamField>

<ParamField body="audience" type="string">
  El identificador único de la API de destino a la que desea acceder.
</ParamField>

<ParamField body="resource" type="string">
  El identificador de la API de destino (servidor de recursos) a la que desea acceder. Debe coincidir con un identificador de API registrado en su inquilino de Auth0. Se usa como alternativa a `audience` cuando el [Perfil de compatibilidad del parámetro Resource](https://auth0.com/docs/get-started/tenant-settings#settings-advanced) del inquilino está configurado como `compatibility`.
</ParamField>

<div id="response-schema">
  ## Esquema de respuesta
</div>

<ResponseSchema>
  <ResponseField name="device_code" type="string">
    El code único del dispositivo. Cuando el usuario vaya a `verification_uri` en el dispositivo con navegador, este code se asociará a su sesión.
  </ResponseField>

  <ResponseField name="user_code" type="string">
    El code que el usuario debe introducir en `verification_uri`.
  </ResponseField>

  <ResponseField name="verification_uri" type="string">
    La URL que el usuario debe visitar para autorizar el dispositivo.
  </ResponseField>

  <ResponseField name="verification_uri_complete" type="string">
    La URL completa que el usuario debe visitar, incluido `user_code`.
  </ResponseField>

  <ResponseField name="expires_in" type="integer">
    La duración en segundos de `device_code` y `user_code`.
  </ResponseField>

  <ResponseField name="interval" type="integer">
    El intervalo en segundos con el que la aplicación debe consultar para obtener un token.
  </ResponseField>
</ResponseSchema>

<div id="response-messages">
  ## Mensajes de respuesta
</div>

| Estado | Descripción                                       |
| ------ | ------------------------------------------------- |
| 200    | Devuelve los códigos de dispositivo y de usuario. |
