
# Establecer una concesión de API de aplicación

`PUT /v1/applications/{application_id}/api-grants/{api_id}` · permiso `applications:write`

Reemplaza, en su totalidad, los ámbitos que una aplicación puede solicitar para una API. Una aplicación puede tener concesiones para como máximo 50 API.

## Solicitud

| Parámetro | En | Descripción |
|---|---|---|
| `application_id` | path | Identificador de la aplicación (`app_…`). |
| `api_id` | path | Identificador de la API (`api_…`). |

**Body**

| Campo | Tipo | Obligatorio | Descripción |
|---|---|---|---|
| `scopes` | string[] | sí | Ámbitos permitidos (`resource:action`); cada uno debe estar definido en la API. Como máximo 1000. |
| `default_scopes` | string[] | no | Ámbitos otorgados de forma predeterminada; un subconjunto de `scopes`. |

## Respuesta

`200 OK` con la concesión.

```json
{
  "application_id": "app_6f8d0cjgbmf0gtn2rg6pscp3cg",
  "api_id": "api_0000000000000000000000001z",
  "scopes": ["orders:read", "orders:write"],
  "default_scopes": ["orders:read"],
  "created_at": "2026-10-05T10:00:01Z",
  "updated_at": "2026-10-05T10:00:01Z"
}
```

## Errores

| HTTP | `code` | Cuándo |
|---|---|---|
| 401 | `unauthenticated` | La clave falta, no es válida o ha sido revocada. |
| 403 | `insufficient_permissions` | La clave carece del permiso requerido. |
| 404 | `not_found` | La aplicación o la concesión no existe en este entorno. |
| 422 | `validation_failed` | Un ámbito está mal formado o no está definido en la API, o `default_scopes` no es un subconjunto de `scopes`. |
| 403 | `quota_exceeded` | La aplicación ya tiene concesiones para 50 API. |
| 400 | `unknown_field` | El cuerpo tiene un campo que no forma parte del esquema. |

## Ejemplo

```bash
curl -X PUT https://api.eu.keenauth.com/v1/applications/app_6f8d0cjgbmf0gtn2rg6pscp3cg/api-grants/api_0000000000000000000000001z \
  -H "Authorization: Bearer $KEENAUTH_SECRET_KEY" \
  -H "Content-Type: application/json" \
  -d '{"scopes":["orders:read","orders:write"],"default_scopes":["orders:read"]}'
```
