> ## 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.

# Limites de ACU por usuário

> Limite o consumo mensal de ACU de cada usuário com níveis, mapeamentos de grupos do IdP e overrides por usuário

<Note>
  Os limites por usuário estão em beta e exigem que o recurso esteja ativado para sua Enterprise. Para ativá-lo, entre em contato com sua equipe de conta.
</Note>

Um limite por usuário restringe o uso combinado de ACU **local e em nuvem** do usuário — sessões em nuvem do Devin, Devin Desktop, Windsurf JetBrains e Devin CLI são contabilizados no mesmo limite. Quando um usuário atinge seu limite, não pode iniciar novos trabalhos nessas interfaces até que o limite seja aumentado ou o uso seja redefinido no próximo período mensal.

Você pode gerenciar níveis e limites por usuário no app web, em **Configurações da Enterprise** > **Políticas de uso** (consulte o [guia de Políticas de uso](/pt-BR/enterprise/features/usage-policies)), ou pelos [endpoints de políticas de uso](#tier-endpoints) abaixo.

Os limites por usuário são gerenciados por meio de **níveis**. Um nível é um limite padrão nomeado, aplicável a toda a conta e compartilhado por seus membros:

* Os usuários entram em níveis de três formas: um admin **os atribui explicitamente**, um [**mapeamento de grupo do IdP**](#idp-group-endpoints) os inclui em um nível (um grupo é mapeado para um nível, e seus membros herdam esse nível, a menos que sejam explicitamente atribuídos a outro), ou são incluídos no **nível padrão**. Cada conta pode definir um nível como padrão; todos os membros da conta que não tenham outra atribuição pertencem a ele. Não há um "limite padrão por usuário" separado — configure o nível padrão.
* Usuários individuais podem ter um **override** — **permanente** (nunca expira) ou **temporário** (expira ao final do ciclo de faturamento mensal atual). Os overrides têm escopo de usuário: definir um nunca altera a atribuição de nível do usuário.
* O **limite efetivo** de um usuário é determinado nesta ordem: override permanente; caso contrário, um override temporário ativo; caso contrário, o `cycle_acu_limit` do nível atribuído explicitamente; caso contrário, o limite do nível de maior classificação mapeado a um grupo do IdP; caso contrário, o limite do nível padrão. Um limite `null` significa que não há limite.
* Os usuários podem solicitar um limite maior; os admins analisam essas [**requisições de aumento de limite**](#limit-increase-request-endpoints), e a `policy` de cada nível controla se as requisições são aprovadas automaticamente ou encaminhadas para revisão manual.

Os limites por usuário são independentes dos [limites no nível da organização](/pt-BR/admin/billing/org-acu-limits) — uma requisição é bloqueada se qualquer um deles tiver sido atingido. Consulte [Limites de ACU](/pt-BR/admin/billing/acu-limits) para informações sobre autenticação, permissões e a semântica de `PATCH` compartilhada por todos os endpoints desta página.

<Warning>
  Os endpoints anteriores à introdução de níveis para limites por usuário e limites padrão por usuário estão obsoletos; consulte [Endpoints legados de limite de ACU por usuário](/pt-BR/admin/billing/legacy-user-acu-limits).
</Warning>

<div id="tier-endpoints">
  ## Endpoints de nível
</div>

<div id="list-tiers">
  ### Listar níveis
</div>

```http theme={null}
GET /v3beta1/enterprise/usage-policies/tiers
```

Retorna uma lista paginada de níveis em ordem de precedência: primeiro, a `priority` mais alta; dentro de cada prioridade, o nível mais recente. Cada nível tem esta estrutura:

```json theme={null}
{
  "tier_id": "tier-abc123",
  "name": "Engineers",
  "is_default": true,
  "cycle_acu_limit": 500,
  "policy": "manual",
  "max_limit": null,
  "priority": 0,
  "member_count": 42,
  "created_at": 1735689600
}
```

* `is_default`: indica se este é o nível padrão da conta.
* `cycle_acu_limit`: o limite padrão de ACUs por ciclo para cada membro; `null` significa que não há limite.
* `policy`: como são tratadas as requisições de aumento de limite para o nível — `unconditional` e `conditional` aprovam até `max_limit`, enquanto `manual` exige revisão de um admin. A política `conditional` (aprovação automática baseada em eficiência) requer ativação separada; entre em contato com sua equipe de conta.
* `max_limit`: o limite máximo até o qual as requisições de aumento são aprovadas; `null` aprova sem teto. É sempre `null` quando `cycle_acu_limit` é `null`.
* `priority`: classifica o nível entre os níveis de um usuário mapeados por grupos do IdP — o valor mais alto prevalece; em caso de empate, vence o nível mais recente. A classificação é apenas para fins de precedência: um nível de maior prioridade pode ter um `cycle_acu_limit` menor. Uma atribuição explícita a um usuário substitui essa classificação, e o nível padrão nunca é classificado.
* `member_count`: o número de usuários atualmente no nível — usuários atribuídos explicitamente, mais usuários incluídos por um mapeamento de grupo do IdP. Para o nível padrão, isso inclui todos os membros da conta que não estão em outro nível.

<Note>
  Configure o nível padrão e a prioridade do nível no app web em **Políticas de uso**.
</Note>

<div id="create-a-tier">
  ### Criar um nível
</div>

```http theme={null}
POST /v3beta1/enterprise/usage-policies/tiers
```

**Corpo da requisição**

```json theme={null}
{
  "name": "Engineers",
  "cycle_acu_limit": 500,
  "policy": "manual"
}
```

O primeiro nível da conta torna-se automaticamente o nível padrão. Retorna HTTP `201` com o nível criado.

<div id="get-a-tier">
  ### Obter um nível
</div>

```http theme={null}
GET /v3beta1/enterprise/usage-policies/tiers/{tier_id}
```

<div id="update-a-tier">
  ### Atualizar um nível
</div>

```http theme={null}
PATCH /v3beta1/enterprise/usage-policies/tiers/{tier_id}
```

Atualização parcial; os campos omitidos permanecem inalterados. Para alterar o nível padrão ou sua prioridade, use o app web em **Políticas de uso**.

```json theme={null}
{
  "name": "Engineering",
  "cycle_acu_limit": 750
}
```

<div id="delete-a-tier">
  ### Excluir um nível
</div>

```http theme={null}
DELETE /v3beta1/enterprise/usage-policies/tiers/{tier_id}
```

Retorna HTTP `204` em caso de sucesso. O nível padrão não pode ser excluído (promova outro nível primeiro). Os usuários de um nível que ainda tenha usuários devem ser movidos, e quaisquer mapeamentos de grupos do IdP para esse nível devem ser removidos.

<div id="tier-user-endpoints">
  ## Endpoints de usuário por nível
</div>

<div id="list-a-tiers-users">
  ### Listar os usuários de um nível
</div>

```http theme={null}
GET /v3beta1/enterprise/usage-policies/tiers/{tier_id}/users
```

Retorna uma lista paginada dos usuários do nível com seus limites definidos — usuários atribuídos explicitamente e usuários incluídos por meio de um mapeamento de grupo do IdP. Para o nível padrão, inclui todos os membros da conta que não estão em outro nível:

```json theme={null}
{
  "user_id": "user_abc123",
  "name": "Ada Lovelace",
  "email": "ada@example.com",
  "cycle_acu_limit_override": null,
  "temporary_cycle_acu_limit": 800,
  "effective_cycle_acu_limit": 800,
  "limit_source": "temporary_override",
  "membership": "explicit"
}
```

* `cycle_acu_limit_override`: o override permanente do usuário, se houver.
* `temporary_cycle_acu_limit`: o override temporário do usuário, presente apenas enquanto estiver ativo no ciclo de faturamento mensal atual.
* `effective_cycle_acu_limit`: o limite atualmente aplicado ao usuário; `null` significa sem limite.
* `limit_source`: a origem do limite efetivo — `override` (permanente), `temporary_override` ou `tier`.
* `membership`: por que o usuário está no nível — `explicit` (atribuído diretamente), `idp_group` (por meio do mapeamento do grupo IdP aplicável) ou `default` (retorno ao nível padrão).

<div id="assign-a-user-to-a-tier">
  ### Atribuir um usuário a um nível
</div>

```http theme={null}
PUT /v3beta1/enterprise/usage-policies/tiers/{tier_id}/users/{user_id}
```

Idempotente. Retorna HTTP `204` em caso de sucesso. Ao mover um usuário de outro nível, qualquer override por usuário é removido, e ele passa a herdar o limite do nível de destino.

<div id="remove-a-user-from-a-tier">
  ### Remover um usuário de um nível
</div>

```http theme={null}
DELETE /v3beta1/enterprise/usage-policies/tiers/{tier_id}/users/{user_id}
```

Remove a atribuição explícita de nível do usuário (e qualquer override), retornando-o ao nível padrão. Retorna HTTP `204` em caso de sucesso.

<div id="user-override-endpoint">
  ## Endpoint de override do usuário
</div>

<div id="set-or-clear-a-users-override">
  ### Definir ou remover o override de um usuário
</div>

```http theme={null}
PATCH /v3beta1/enterprise/usage-policies/users/{user_id}
```

Escopo de usuário: o alvo só precisa ser membro da conta — nenhum nível está envolvido, e a atribuição de nível do usuário nunca é alterada. Um usuário com apenas um override (sem atribuição explícita de nível) permanece no nível padrão.

**Corpo da requisição — definir um override temporário**

```json theme={null}
{
  "cycle_acu_limit": 800,
  "kind": "temporary"
}
```

`kind` é obrigatório ao definir um valor: `permanent` nunca expira; `temporary` expira ao final do ciclo de faturamento mensal atual.

**Corpo da requisição — limpar todos os overrides**

```json theme={null}
{
  "cycle_acu_limit": null
}
```

O endpoint retorna HTTP `204` em caso de sucesso.

<div id="idp-group-endpoints">
  ## Endpoints de grupos do IdP
</div>

Mapeie um grupo do IdP a um nível para que seus membros herdem esse nível automaticamente. Os mapeamentos são resolvidos em tempo real com base na associação aos grupos e nunca alteram a atribuição explícita de nível de um usuário — uma atribuição explícita sempre prevalece. Para um usuário em vários grupos mapeados, é aplicado o nível mapeado com classificação mais alta (maior `priority` do nível; em caso de empate, o nível mais recente).

<div id="list-idp-group-mappings">
  ### Listar mapeamentos de grupos do IdP
</div>

```http theme={null}
GET /v3beta1/enterprise/usage-policies/idp-groups
```

Retorna uma lista paginada dos mapeamentos de grupos da conta para níveis, do mais antigo ao mais recente. Use `?tier_id=` para listar apenas os grupos mapeados para um nível:

```json theme={null}
{
  "idp_group_id": "grp_abc123",
  "idp_group_name": "Engineering",
  "tier_id": "tier-abc123"
}
```

<div id="get-an-idp-groups-mapping">
  ### Obter o mapeamento de um grupo do IdP
</div>

```http theme={null}
GET /v3beta1/enterprise/usage-policies/idp-groups/{idp_group_name}
```

Retorna HTTP `404` se o grupo não tiver um mapeamento.

<div id="map-an-idp-group-to-a-tier">
  ### Mapear um grupo do IdP para um nível
</div>

```http theme={null}
PUT /v3beta1/enterprise/usage-policies/idp-groups/{idp_group_name}
```

**Corpo da requisição**

```json theme={null}
{
  "tier_id": "tier-abc123"
}
```

Upsert idempotente. Um grupo pode ser mapeado para, no máximo, um nível; portanto, mapear um grupo já mapeado o transfere para o nível especificado.

<div id="unmap-an-idp-group">
  ### Desvincular um grupo do IdP
</div>

```http theme={null}
DELETE /v3beta1/enterprise/usage-policies/idp-groups/{idp_group_name}
```

Retorna HTTP `204` em caso de sucesso. O nível mapeado deixa de se aplicar aos membros do grupo; os usuários sem atribuição explícita ou outro nível mapeado voltam ao nível padrão.

<div id="limit-increase-request-endpoints">
  ## Endpoints de requisição de aumento de limite
</div>

Os usuários podem solicitar um limite maior por ciclo. A `policy` do nível do solicitante determina o que acontece: `unconditional` e `conditional` aprovam automaticamente requisições até o `max_limit` do nível, enquanto `manual` mantém a requisição para revisão por um admin por meio destes endpoints (ou em **Políticas de uso** no app web).

<Note>
  Diferentemente dos outros endpoints desta página, a consulta de requisições de aumento de limite exige a permissão **ManageBilling** — as requisições incluem a identidade do membro e mensagens de texto livre, que são dados do fluxo de trabalho de admins.
</Note>

<div id="list-limit-increase-requests">
  ### Listar requisições de aumento de limite
</div>

```http theme={null}
GET /v3beta1/enterprise/usage-policies/requests
```

Retorna uma lista paginada, que pode ser filtrada com `?status=` (`pending`, `approved`, `denied`) e `?user_id=`:

```json theme={null}
{
  "request_id": 42,
  "user_id": "user_abc123",
  "name": "Ada Lovelace",
  "email": "ada@example.com",
  "tier_id": "tier-abc123",
  "tier_name": "Engineers",
  "current_cycle_acu_limit": 500,
  "requested_cycle_acu_limit": 800,
  "message": "Wrapping up a large migration this month",
  "status": "pending",
  "created_at": 1735689600,
  "reviewed_at": null,
  "reviewer": null
}
```

* `tier_id` / `tier_name`: o nível do solicitante (atribuição explícita, mapeamento de grupo do IdP ou nível padrão); `null` quando a conta não tem níveis.
* `current_cycle_acu_limit`: o limite atualmente em vigor para o solicitante; `null` indica que não há limite.
* `reviewer`: o admin que revisou a requisição; `null` enquanto ela estiver pendente.

<div id="get-a-limit-increase-request">
  ### Consultar uma requisição de aumento de limite
</div>

```http theme={null}
GET /v3beta1/enterprise/usage-policies/requests/{request_id}
```

<div id="approve-a-limit-increase-request">
  ### Aprovar uma requisição de aumento de limite
</div>

```http theme={null}
POST /v3beta1/enterprise/usage-policies/requests/{request_id}/approve
```

Concede o limite solicitado como um **override temporário**, que expira ao fim do ciclo de faturamento mensal atual. Opcionalmente, conceda um limite diferente:

```json theme={null}
{
  "cycle_acu_limit": 700
}
```

Retorna a requisição atualizada. Retorna HTTP `409` se a requisição já tiver sido revisada ou se o solicitante não for mais membro da conta.

<div id="deny-a-limit-increase-request">
  ### Negar uma requisição de aumento de limite
</div>

```http theme={null}
POST /v3beta1/enterprise/usage-policies/requests/{request_id}/deny
```

Retorna a requisição atualizada ou HTTP `409` se ela já tiver sido analisada.

<div id="example-workflows">
  ## Exemplos de fluxos de trabalho
</div>

<div id="set-up-tiers-with-a-default-limit">
  ### Configure níveis com um limite padrão
</div>

Crie um nível padrão para que todos os usuários tenham um limite mensal de 500 ACUs:

```bash theme={null}
curl -X POST "https://api.devin.ai/v3beta1/enterprise/usage-policies/tiers" \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{"name": "Standard", "cycle_acu_limit": 500, "policy": "manual"}'
```

Crie um nível com um limite maior e atribua um usuário a ele:

```bash theme={null}
curl -X POST "https://api.devin.ai/v3beta1/enterprise/usage-policies/tiers" \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{"name": "Power users", "cycle_acu_limit": 2000, "policy": "manual"}'

curl -X PUT "https://api.devin.ai/v3beta1/enterprise/usage-policies/tiers/tier-abc123/users/user_abc123" \
  -H "Authorization: Bearer <token>"
```

Conceda a um usuário um aumento temporário pelo restante do mês:

```bash theme={null}
curl -X PATCH "https://api.devin.ai/v3beta1/enterprise/usage-policies/users/user_abc123" \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{"cycle_acu_limit": 800, "kind": "temporary"}'
```

Mapeie um grupo do IdP para o nível com limite mais alto e revise uma requisição de aumento de limite pendente:

```bash theme={null}
curl -X PUT "https://api.devin.ai/v3beta1/enterprise/usage-policies/idp-groups/Engineering" \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{"tier_id": "tier-abc123"}'

curl -X POST "https://api.devin.ai/v3beta1/enterprise/usage-policies/requests/42/approve" \
  -H "Authorization: Bearer <token>"
```

<div id="frequently-asked-questions">
  ## Perguntas frequentes
</div>

<AccordionGroup>
  <Accordion title="A quais produtos se aplicam os limites por usuário?">
    Uso local e em nuvem: as sessões em nuvem do Devin e o uso local por meio da CLI e dos IDEs (Devin Desktop, Windsurf JetBrains e Devin CLI) contam para um único limite.
  </Accordion>

  <Accordion title="Como é determinado o limite efetivo de um usuário?">
    Um override permanente tem prioridade, seguido de um override temporário ativo, do limite do nível explicitamente atribuído ao usuário, do limite do nível de maior classificação mapeado a um grupo do IdP e, por fim, do limite do nível padrão. Um limite `null` em todos os níveis significa que o usuário não tem limite.
  </Accordion>

  <Accordion title="Os overrides de usuário são somados ao limite do nível?">
    Não. Um override substitui o limite do nível para esse usuário. Se o limite do nível for 500 ACUs e um usuário tiver um override de 200 ACUs, o limite efetivo desse usuário será de 200 ACUs.
  </Accordion>

  <Accordion title="Qual é a diferença entre um override permanente e um temporário?">
    Um override permanente nunca expira. Um override temporário expira ao final do ciclo de faturamento mensal atual, após o qual o usuário volta ao limite do seu nível. A aprovação de uma requisição de aumento de limite concede um override temporário.
  </Accordion>

  <Accordion title="Ainda existe um limite padrão por usuário?">
    Não como uma configuração independente. Em vez disso, configure o limite do nível padrão — ele se aplica a todos os membros da conta que não foram atribuídos a outro nível. Os [endpoints legados do limite de ACU padrão por usuário](/pt-BR/admin/billing/legacy-user-acu-limits#default-user-limit-endpoints) agora leem e gravam o limite do nível padrão.
  </Accordion>

  <Accordion title="O que acontece quando alguém atinge seu limite?">
    Novos trabalhos são bloqueados tanto nas interfaces locais quanto nas em nuvem. O usuário pode entrar em contato com um administrador do Enterprise para ajustar o limite ou aguardar o início do próximo período mensal.
  </Accordion>
</AccordionGroup>
