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

# Atualizar a lista de permissões do Devin Desktop

> Substitua programaticamente a lista de permissões do Devin Desktop da sua equipe: defina os UIDs de modelo e os marcadores permitidos, com uma verificação de ETag com base no estado atual.

## Visão geral

Substitui a lista de permissões da sua equipe, a mesma configuração que os administradores gerenciam nos controles da organização no Devin Desktop. O corpo da requisição representa o estado completo desejado: as duas listas substituem as que estão armazenadas.

Para evitar sobrescrever uma alteração que você ainda não viu, a requisição deve incluir no cabeçalho `If-Match` o `ETag` de uma resposta de [List Models](/pt-BR/desktop/accounts/api-reference/list-models). Se a lista de permissões, os modelos disponíveis ou os preços deles tiverem mudado desde essa resposta, a atualização será rejeitada com `412` e você deverá listar os modelos novamente.

> [!NOTE]
>
> Este endpoint está em alfa (`v2alpha`). O formato da requisição e da resposta pode mudar.

## Autenticação

Envie uma chave de API no cabeçalho `Authorization`:

```
Authorization: Bearer <api-key>
```

Use uma [chave de API de usuário de serviço](/pt-BR/api-reference/authentication) do Devin (`cog_...`). Além da permissão **Use Devin Desktop** exigida pelo [List Models](/pt-BR/desktop/accounts/api-reference/list-models), a função do usuário de serviço precisa ter a permissão **Windsurf admin** (`account.windsurf.admin`), que já vem incluída na função nativa Account Admin. Um usuário de serviço sem essa permissão consegue listar modelos, mas recebe `403` neste endpoint.

## Requisição

**If-Match** `string` *required*

O cabeçalho `ETag` de uma resposta de `GET /api/v2alpha/models` que reflete o estado atual. Obrigatório; `*` não é aceito.

**allowed\_model\_uids** `string[]` *required*

UIDs dos modelos que os usuários podem escolher, p. ex. `["claude-sonnet-4-5"]`. Passe `[]` para permitir modelos apenas por marcador.

**allowed\_model\_tags** `string[]` *required*

Marcadores dos modelos que os usuários podem escolher, incluindo marcadores de provedor como `provider-anthropic` ou `provider-openai`. Passe `[]` para permitir apenas os UIDs de modelos listados.

Os dois campos são obrigatórios. Campos desconhecidos são rejeitados.

### Exemplo de requisição

```bash theme={null}
ETAG=$(curl -s -D - -o /dev/null https://server.codeium.com/api/v2alpha/models \
  -H "Authorization: Bearer $DEVIN_API_KEY" | awk 'tolower($1)=="etag:" {print $2}' | tr -d '\r')

curl -X PUT https://server.codeium.com/api/v2alpha/models \
  -H "Authorization: Bearer $DEVIN_API_KEY" \
  -H "If-Match: $ETAG" \
  -H "Content-Type: application/json" \
  -d '{"allowed_model_uids": ["claude-sonnet-4-5"], "allowed_model_tags": ["provider-anthropic"]}'
```

## Resposta

Em caso de sucesso, a resposta é igual à de [List Models](/pt-BR/desktop/accounts/api-reference/list-models), já com a nova lista de permissões aplicada: todos os modelos com a respectiva flag `allowed`, os valores armazenados de `allowed_model_uids` e `allowed_model_tags` e um novo cabeçalho `ETag`.

## Respostas de erro

Os erros são retornados no formato `{"error": "<message>"}`.

| Status | Causa |
| - | - |
| `400` | O corpo não é JSON, contém campos desconhecidos ou não inclui `allowed_model_uids` ou `allowed_model_tags`; ou o parâmetro de consulta `filter` foi definido (ele só é aceito por [List Models](/pt-BR/desktop/accounts/api-reference/list-models)) |
| `401` | Chave de API ausente ou inválida, ou uma chave de API legada do Windsurf (somente chaves de usuário de serviço `cog_...` do Devin são aceitas) |
| `403` | O usuário da chave não tem acesso ao Devin Desktop, ou a função dele não tem a permissão de Windsurf admin (`account.windsurf.admin`) |
| `412` | `If-Match` não corresponde ao `ETag` atual; liste os modelos novamente e tente outra vez |
| `428` | Cabeçalho `If-Match` ausente |
| `429` | Limite de requisições excedido; aguarde o tempo indicado no cabeçalho `Retry-After` antes de tentar novamente |


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.