> For the complete documentation index, see [llms.txt](https://selenium-4.gitbook.io/nexus-docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://selenium-4.gitbook.io/nexus-docs/service-domain/current-account/operacoes/main-5.md).

# Control Account Block

| Campo          | Valor                          |
| -------------- | ------------------------------ |
| Service Domain | Current Account                |
| BIAN Version   | 14.0.0                         |
| Operation      | Control Account Block          |
| Method         | PUT                            |
| API Name       | Current Account Management API |
| Versão         | v1.0.0                         |

### 1. Descrição da Operação

O serviço de Desbloqueio de uma Conta permite remover um bloqueio previamente registado sobre uma conta à ordem. A operação identifica a conta e o bloqueio a remover (por tipo), podendo incluir um código de nota de desbloqueio. O pedido pode ser processado de imediato ou ficar sujeito a diferimento.

| Campo        | Valor                                                            |
| ------------ | ---------------------------------------------------------------- |
| API Name     | Current Account Management API                                   |
| Versão       | v1.0.0                                                           |
| Endpoint     | PUT /v1/current-account/{currentAccountId}/account-block/control |
| Autenticação | Bearer Token (OAuth 2.0 / OIDC)                                  |

### 2. Cabeçalhos HTTP

| Header                         | Obrigatório | Notas                                        |
| ------------------------------ | ----------- | -------------------------------------------- |
| Authorization: Bearer {token}  | Sim         | OAuth2 / JWT client\_credentials para M2M    |
| Content-Type: application/json | Sim         | —                                            |
| Accept: application/json       | Sim         | —                                            |
| x-channel                      | Recomendado | Canal de origem (SOP, MOBILE, BACKOFFICE, …) |

### 3. Parâmetros

#### 3.1 Path Parameters

| Parâmetro        | Tipo   | Obrigatório | Descrição                             |
| ---------------- | ------ | ----------- | ------------------------------------- |
| currentAccountId | string | Sim         | Identificador único da conta à ordem. |

### 4. Payload de Requisição (Request Body)

#### 4.1 Exemplo

```json
{
  "currentAccountFulfillmentArrangement": {
    "accountIdentification": {
      "identifierValue": {
        "value": "12345678"
      }
    }
  },
  "accountBlock": {
    "accountBlockType": "Z",
    "accountBlockRemarks": "Bloqueio a débito — ofício n.º 442/2026",
    "accountBlockProcessingInstructions": {
      "unblockNoteCode": ""
    }
  }
}
```

#### 4.2 Campos da Requisição

| Campo                                                                            | Tipo   | Obrigatório | Descrição                                                                         |
| -------------------------------------------------------------------------------- | ------ | ----------- | --------------------------------------------------------------------------------- |
| currentAccountFulfillmentArrangement                                             | object | Sim         | Dados de identificação da conta à ordem associada ao pedido.                      |
| currentAccountFulfillmentArrangement.accountIdentification.identifierValue.value | string | Sim         | Valor identificador do cliente (ex: número do cliente).                           |
| accountBlock                                                                     | object | Sim         | Objecto com os dados do bloqueio a remover.                                       |
| accountBlock.accountBlockType                                                    | string | Sim         | Código (letra) do tipo de bloqueio a remover.                                     |
| accountBlock.accountBlockRemarks                                                 | string | Não         | Observações livres associadas ao pedido de desbloqueio (ex: referência a ofício). |
| accountBlock.accountBlockProcessingInstructions                                  | object | Não         | Instruções de processamento associadas ao desbloqueio.                            |
| accountBlock.accountBlockProcessingInstructions.unblockNoteCode                  | string | Não         | Código de nota associada ao desbloqueio.                                          |

#### 4.3 Tipos de Bloqueio (accountBlockType)

| Tipo | Descrição                    |
| ---- | ---------------------------- |
| T    | Bloqueio total               |
| D    | Movimentos a Débito          |
| R    | Requisição de Cheques        |
| P    | Pagamento directo nos caixas |
| C    | Movimentos a Crédito         |
| J    | Pedido de Cartões de Débito  |
| E    | Associação com entidades     |
| Z    | Depósitos a prazo            |

### 5. Payload de Resposta (Response - 200 OK)

#### 5.1 Exemplo

```json
{
  "restrictionId": "",
  "restrictionStatus": "Confirmed"
}
```

#### 5.2 Campos da Resposta

| Campo             | Tipo   | Descrição                                                                                                                                                                                           |
| ----------------- | ------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| restrictionId     | string | String de diferimento. Será devolvida apenas quando o pedido for para diferimento.                                                                                                                  |
| restrictionStatus | string | Estado do pedido de desbloqueio. `Confirmed` quando o desbloqueio é aplicado de imediato; `Initiated` quando o pedido é para diferimento (desbloqueio ainda não confirmado, aguarda processamento). |

### 6. Códigos HTTP de Resposta

| Código | Estado                | Descrição                                                |
| ------ | --------------------- | -------------------------------------------------------- |
| 200    | OK                    | Desbloqueio processado com sucesso.                      |
| 400    | Bad Request           | Parâmetros inválidos ou em falta.                        |
| 401    | Unauthorized          | Token ausente, expirado ou inválido.                     |
| 500    | Internal Server Error | Erro inesperado no sistema.                              |
| 502    | Bad Gateway           | Resposta inválida ou indisponibilidade do core bancário. |
| 504    | Gateway Timeout       | Timeout na chamada ao core bancário.                     |

### 7. Envelope Padrão de Erro

```json
{
  "status": 404,
  "reason": "RESOURCE_NOT_FOUND",
  "message": "Não foi encontrado nenhum bloqueio activo do tipo indicado para a conta.",
  "path": "/v1/current-account/123456/account-block/control",
  "errordetail": [
    {
      "code": "ACB-404-002",
      "reason": "ACCOUNT_BLOCK_NOT_FOUND",
      "message": "A conta '123456' não possui bloqueio activo do tipo 'Z'."
    }
  ]
}
```

#### 7.1 Estrutura do Envelope de Erro

| Campo                  | Tipo    | Descrição                                                               |
| ---------------------- | ------- | ----------------------------------------------------------------------- |
| status                 | integer | Código HTTP do erro.                                                    |
| reason                 | string  | Código textual de alto nível que identifica a categoria do erro.        |
| message                | string  | Mensagem legível que descreve o problema ocorrido.                      |
| path                   | string  | Caminho do endpoint que originou o erro.                                |
| errordetail\[]         | array   | Lista de erros detalhados. Pode estar ausente em erros genéricos (500). |
| errordetail\[].code    | string  | Código específico do domínio (ex: ACB-404-002).                         |
| errordetail\[].reason  | string  | Identificador textual da causa específica do erro.                      |
| errordetail\[].message | string  | Mensagem detalhada com valores concretos quando aplicável.              |

### 8. Regras de Negócio

| # | Regra               | Detalhe                                                                                                                                             |
| - | ------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| 1 | Conta Válida        | O currentAccountId, e o valor identificador da conta, devem corresponder a uma conta activa e existente no sistema.                                 |
| 2 | Tipo Obrigatório    | O campo accountBlockType é de preenchimento obrigatório e deve corresponder a um bloqueio activo existente na conta.                                |
| 3 | Bloqueios Judiciais | Um bloqueio com indicador de origem judicial pode estar sujeito a restrições adicionais para remoção.                                               |
| 4 | Diferimento         | O pedido de desbloqueio pode ser processado de imediato (`Confirmed`) ou ficar sujeito a diferimento (`Initiated`), consoante as regras do sistema. |

### 9. Requisitos Não-Funcionais

| Requisito    | Detalhe                                                                                           |
| ------------ | ------------------------------------------------------------------------------------------------- |
| HTTPS / TLS  | Obrigatório TLS 1.2 ou superior em todas as comunicações.                                         |
| Bearer Token | Obrigatório — scope account:blocks:control. Pedidos sem token ou com token inválido retornam 401. |
| Auditoria    | Registo persistente obrigatório de todas as operações de desbloqueio (log estruturado).           |
