> 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/docs/credit-facility/update-repayment-schedule-dates.md).

# Update Repayment Schedule Dates

| Campo              | Valor                                                                     |
| ------------------ | ------------------------------------------------------------------------- |
| **Service Domain** | Credit Facility                                                           |
| **BIAN Version**   | 13.0.0                                                                    |
| **Operation**      | Update Repayment Schedule Dates                                           |
| **Method**         | PATCH                                                                     |
| **API Name**       | Credit Facility API                                                       |
| **Versão**         | v1.1.0                                                                    |
| **Endpoint**       | `PATCH /v1/credit-facility/{creditFacilityId}/repayment-schedules/update` |
| **Autenticação**   | Bearer Token (OAuth 2.0 / OIDC)                                           |

***

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

O serviço permite actualizar as datas associadas a uma facilidade de crédito já existente, através de um único endpoint:

* **Data de Prestação (`InstallmentDate`):** actualiza o plano financeiro (financial plan maintenance) da facilidade de crédito, ou seja, a agenda das prestações a pagar. Obrigatória.
* **Data de Vencimento da Conta (`CreditDueDate`):** actualiza a data de vencimento da conta de crédito (account credit maintenance). Opcional, só deve ser enviada quando for necessário alinhar o vencimento da conta com a nova agenda de prestações.

A operação **não** regista, liquida ou quita a facilidade de crédito, apenas actualiza as datas de uma facilidade já existente.

***

## 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-request-id`                   | Não         | Identificador único da requisição            |

***

## 3. Path Parameters

| Parâmetro          | Tipo   | Obrigatório | Descrição                                     |
| ------------------ | ------ | ----------- | --------------------------------------------- |
| `creditFacilityId` | string | Sim         | Identificador único da facilidade de crédito. |

***

## 4. Payload de Pedido (Request)

### 4.1 Exemplo

> **Nota (v1.1.0):** `CreditFacilityDate` deve conter pelo menos um dos dois tipos de data (`InstallmentDate` e/ou `CreditDueDate`), mas nenhum dos dois é individualmente obrigatório. É possível enviar apenas `InstallmentDate`, apenas `CreditDueDate`, ou ambos conforme o que se pretende actualizar.

```json
{
  "CreditFacilityType": "Rendas",
  "CreditFacilityDate": [
    {
      "DateTimeContent": {
        "Text": "2026-01-23"
      },
      "DateTimeType": "InstallmentDate"
    },
    {
      "DateTimeContent": {
        "Text": "2026-01-23"
      },
      "DateTimeType": "CreditDueDate"
    }
  ],
  "CreditFacilityNotesReference": {
    "NoteContent": "DocumentServices"
  }
}
```

Exemplo mínimo válido (sem `CreditDueDate`):

```json
{
  "CreditFacilityType": "Rendas",
  "CreditFacilityDate": [
    {
      "DateTimeContent": {
        "Text": "2026-01-23"
      },
      "DateTimeType": "InstallmentDate"
    }
  ]
}
```

Exemplo mínimo válido (apenas `CreditDueDate`):

```json
{
  "CreditFacilityType": "Rendas",
  "CreditFacilityDate": [
    {
      "DateTimeContent": {
        "Text": "2027-01-31"
      },
      "DateTimeType": "CreditDueDate"
    }
  ],
  "CreditFacilityNotesReference": {
    "NoteContent": "DocumentServices"
  }
}
```

### 4.2 Objecto Raiz

| Campo                          | Tipo   | Obrigatório | Descrição                                                                                                      |
| ------------------------------ | ------ | ----------- | -------------------------------------------------------------------------------------------------------------- |
| `CreditFacilityType`           | string | Sim         | Tipo de facilidade de crédito (ex: Rendas, Empréstimos).                                                       |
| `CreditFacilityDate`           | array  | Sim         | Datas associadas à facilidade de crédito. Deve conter pelo menos o elemento `InstallmentDate`. Ver secção 4.3. |
| `CreditFacilityNotesReference` | object | Não         | Notas ou documentos relacionados. Ver secção 4.4.                                                              |

### 4.3 Objecto: `CreditFacilityDate[]`

| Campo                  | Tipo              | Obrigatório | Descrição                                                                                         |
| ---------------------- | ----------------- | ----------- | ------------------------------------------------------------------------------------------------- |
| `DateTimeContent.Text` | string (ISO 8601) | Sim         | Data no formato `AAAA-MM-DD`.                                                                     |
| `DateTimeType`         | enum              | Sim         | Tipo da data. Valores: `InstallmentDate` (obrigatório) \| `CreditDueDate` (opcional/condicional). |

### 4.4 Objecto: `CreditFacilityNotesReference`

| Campo         | Tipo   | Obrigatório                   | Descrição                             |
| ------------- | ------ | ----------------------------- | ------------------------------------- |
| `NoteContent` | string | Sim, se o objecto for enviado | Descrição ou referência do documento. |

***

## 5. Payload de Resposta (Response — 204 No Content)

O serviço não retorna corpo de dados; o retorno é vazio.

***

## 6. Códigos HTTP de Resposta

| Código | Estado                | Descrição                                                                                                                                                  |
| ------ | --------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 204    | No Content            | Datas actualizadas com sucesso. Nenhum conteúdo é retornado na resposta.                                                                                   |
| 400    | Bad Request           | Payload inválido, campo obrigatório ausente, ou violação de regra de negócio devolvida pelo core (ex: data da prestação posterior ao vencimento da conta). |
| 401    | Unauthorized          | Token ausente, expirado ou inválido.                                                                                                                       |
| 404    | Not Found             | `creditFacilityId` inexistente ou endpoint não encontrado.                                                                                                 |
| 422    | Unprocessable Entity  | Formato de data 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": 400,
  "reason": "Bad Request",
  "message": "Descrição legível do erro",
  "path": "PATCH /v1/credit-facility/{creditFacilityId}/repayment-schedules/update",
  "errors": [
    {
      "code": "400",
      "reason": "Bad Request",
      "message": "Descrição legível do erro"
    }
  ]
}
```

### 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  | Método HTTP e caminho do endpoint que originou o erro.                  |
| `errors[]`         | array   | Lista de erros detalhados. Pode estar ausente em erros genéricos (500). |
| `errors[].code`    | string  | Código do erro.                                                         |
| `errors[].reason`  | string  | Identificador textual da causa específica do erro.                      |
| `errors[].message` | string  | Mensagem detalhada com valores concretos quando aplicável.              |

### 7.2 Cenário de Erro: Data da prestação posterior ao vencimento da conta

Quando o core devolve o código de negócio `GBM4560` (data da última renda ultrapassa o vencimento da conta), a API traduz a resposta para uma mensagem amigável, mantendo o status `400`:

```json
{
    "status": 400,
    "reason": "Bad Request",
    "message": "A data da última renda ultrapassa o vencimento da conta. Atualize a data de vencimento da conta.",
    "path": "PATCH /v1/credit-facility/1450926071001/repayment-schedules/update",
    "errors": [
        {
            "code": "400",
            "reason": "Bad Request",
            "message": "A data da última renda ultrapassa o vencimento da conta. Atualize a data de vencimento da conta."
        }
    ]
}
```

**Como resolver:** o cliente deve enviar `CreditDueDate` em `CreditFacilityDate` com uma data de vencimento igual ou posterior à data de `InstallmentDate`, ou actualizar o vencimento da conta previamente através do fluxo apropriado.

***

## 8. Regras de Negócio

| # | Regra                         | Detalhe                                                                                                                                  |
| - | ----------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- |
| 1 | Estado da Facilidade          | O `creditFacilityId` deve existir e corresponder a uma facilidade de crédito activa.                                                     |
| 2 | Formato de Data               | Datas devem estar no formato ISO-8601 (`AAAA-MM-DD`).                                                                                    |
| 3 | `InstallmentDate` Obrigatório | `CreditFacilityDate` deve conter pelo menos um elemento com `DateTimeType = InstallmentDate`.                                            |
| 4 | `CreditDueDate` Condicional   | `CreditDueDate` é opcional; quando ausente, a actualização do vencimento da conta não é executada.                                       |
| 5 | Nota/Documento Opcional       | `CreditFacilityNotesReference` é opcional.                                                                                               |
| 6 | Consistência de Datas         | A data de `InstallmentDate` não pode ultrapassar a data de vencimento (`CreditDueDate`) da conta, sob pena de o core devolver `GBM4560`. |
| 7 | Datas Não Retroactivas        | A API deve garantir que datas de vencimento não sejam retroactivas.                                                                      |

***

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


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://selenium-4.gitbook.io/nexus-docs/docs/credit-facility/update-repayment-schedule-dates.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `build a script that syncs our docs to a CMS` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
