> 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-3.md).

# Initiate Account Block

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

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

O serviço de Bloqueio de uma Conta permite registar um novo bloqueio sobre uma conta à ordem. A operação recebe o tipo de bloqueio, motivo, classe, observações e instruções de processamento (indicador judicial, código de nota de bloqueio, código de mensagem de alerta), criando um novo registo de bloqueio activo associado à conta.

| Campo        | Valor                                                              |
| ------------ | ------------------------------------------------------------------ |
| API Name     | Current Account Management API                                     |
| Versão       | v1.0.0                                                             |
| Endpoint     | POST /v1/current-account/{currentAccountId}/account-block/initiate |
| 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
{
  "accountBlock": {
    "accountBlockType": "Z",
    "accountBlockReason": "",
    "accountBlockedClass": "",
    "accountBlockRemarks": "Bloqueio a débito — ofício n.º 442/2026",
    "accountBlockProcessingInstructions": {
      "judicialBlockIndicator": "N",
      "blockNoteCode": "",
      "alertMessageCode": ""
    }
  }
}
```

#### 4.2 Campos da Requisição

| Campo                                                                  | Tipo   | Obrigatório | Descrição                                                            |
| ---------------------------------------------------------------------- | ------ | ----------- | -------------------------------------------------------------------- |
| accountBlock                                                           | object | Sim         | Objecto com os dados do bloqueio a registar.                         |
| accountBlock.accountBlockType                                          | string | Sim         | Código (letra) do tipo de bloqueio a aplicar.                        |
| accountBlock.accountBlockReason                                        | string | Não         | Motivo do bloqueio.                                                  |
| accountBlock.accountBlockedClass                                       | string | Não         | Classe do bloqueio.                                                  |
| accountBlock.accountBlockRemarks                                       | string | Não         | Observações livres associadas ao bloqueio (ex: referência a ofício). |
| accountBlock.accountBlockProcessingInstructions                        | object | Não         | Instruções de processamento associadas ao bloqueio.                  |
| accountBlock.accountBlockProcessingInstructions.judicialBlockIndicator | string | Não         | Indicador de bloqueio de origem judicial.                            |
| accountBlock.accountBlockProcessingInstructions.blockNoteCode          | string | Não         | Código de nota associada ao bloqueio.                                |
| accountBlock.accountBlockProcessingInstructions.alertMessageCode       | string | Não         | Código de mensagem de alerta associada ao bloqueio.                  |

#### 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 |
| J    | Pedido de Cartões de Débito  |
| 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 bloqueio. `Confirmed` quando o bloqueio é aplicado de imediato; `Initiated` quando o pedido é para diferimento (bloqueio ainda não confirmado, aguarda processamento). |

### 6. Códigos HTTP de Resposta

| Código | Estado                | Descrição                                                                                                                                              |
| ------ | --------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------ |
| 200    | Created               | Bloqueio registado com sucesso.                                                                                                                        |
| 400    | Bad Request           | Parâmetros inválidos ou em falta (ex: accountBlockType não indicado), conta inexistente ou se já existe um bloqueio activo do mesmo tipo para a conta. |
| 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 serviço.                                                                                                     |
| 504    | Gateway Timeout       | Timeout na chamada do serviço.                                                                                                                         |

### 7. Envelope Padrão de Erro

```json
{
  "status": 400,
  "reason": "BAD_REQUEST",
  "message": "Já existe um bloqueio com estas características.",
  "path": "/v1/current-account/123456/account-block/initiate",
  "errordetail": [
    {
      "code": "GBM4200",
      "reason": "Something went wrong with the called transaction",
      "message": "Já existe um bloqueio com estas características."
    }
  ]
}
```

#### 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-409-001).                         |
| 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 deve 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 dos tipos válidos.                          |
| 3 | Duplicação de Bloqueio | Não é permitido registar um novo bloqueio do mesmo tipo enquanto existir outro activo para a mesma conta.                    |
| 4 | Atribuição Automática  | O estado, a data/hora de início e a descrição do bloqueio são atribuídos automaticamente pelo sistema no momento da criação. |

### 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. Pedidos sem token ou com token inválido retornam 401.                   |
| Auditoria    | Registo persistente obrigatório de todas as operações de bloqueio (log estruturado). |
