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

# Parceiros na TED

> Restrinja a credencial de TED de um parceiro às organizações da Midaz em que ele atua, informe a organização em cada requisição e entenda as recusas que ele recebe.

Um [parceiro](https://docs.lerian.studio/pt/platform/access-manager/features/partners/overview) pode chamar o plugin de TED com a sua própria credencial. Você restringe essa credencial às organizações da Midaz em que ele atua. Isso é necessário quando um deploy de TED atende várias organizações.

Todo parceiro de TED precisa de um escopo.

## Passo a passo

***

**1. Escolha as organizações em que o parceiro atua**

A TED tem uma restrição:

| Restrição | Campo da API | O que o parceiro alcança | O que é recusado |
| - | - | - | - |
| **Organização da Midaz** | `organizationId` | As transferências de cada organização da lista: iniciar, assinar, processar e devolver uma transferência, ler uma transferência, listar transferências, ler a lista de conciliações pendentes e ler o dashboard. | Todas as outras organizações, e as rotas que agem sobre o tenant inteiro (veja [Rotas que nenhum parceiro alcança](#routes-that-no-partner-reaches)). |

O ledger e as contas de uma transferência não são uma restrição da TED. A TED encontra o ledger a partir da conta do remetente. Para restringir um parceiro a alguns ledgers ou contas, dê a ele também um [escopo na Midaz](https://docs.lerian.studio/pt/platform/access-manager/features/partners/midaz.md). A Midaz aplica esse escopo aos lançamentos que a TED faz para o parceiro. Veja [As regras do parceiro na Midaz valem para as suas transferências](#the-partners-midaz-rules-apply-to-its-transfers).

**2. Dê ao parceiro as permissões e o escopo**

Crie o parceiro, ou altere-o, no [Console](https://docs.lerian.studio/pt/platform/access-manager/features/partners/console.md) ou com a [API de Identity](https://docs.lerian.studio/pt/platform/access-manager/features/partners/api.md). O slug do produto é `plugin-br-bank-transfer`. A restrição aceita várias organizações.

* Adicione a entrada de escopo com as organizações. Sem ela, o Access Manager recusa o parceiro com `400` e `IDE-1060`.
* Confira os recursos e as ações. O máximo que você pode dar é o que o papel `plugin-br-bank-transfer-editor-role` tem no seu tenant. Acima disso, o Access Manager recusa com `IDE-1043`.

Você pode dar a um parceiro estas ações no recurso `transfers`: `create`, `process`, `read`, `list` e `return`. Todas as outras ações agem sobre o tenant inteiro: o cancelamento e a nova tentativa de conciliação de uma transferência, o poller de TED IN e o seu replay, o ciclo de conciliação, a resolução manual e o reparo de escopo, os webhooks, as configurações de runtime e o catálogo de eventos. O Access Manager as recusa com `400` e `IDE-1056`, e o Console marca a linha como **Fora do escopo**.

**3. Crie a aplicação de TED**

Crie a aplicação do parceiro com o produto `plugin-br-bank-transfer`. Veja [Crie as aplicações do parceiro](https://docs.lerian.studio/pt/platform/access-manager/features/partners/api.md#create-the-partners-applications) no guia da API, ou [no Console](https://docs.lerian.studio/pt/platform/access-manager/features/partners/console.md#create-the-partners-applications). Envie o client ID e o client secret ao parceiro por um canal seguro.

**4. Informe a organização em cada requisição**

Toda requisição informa a organização no cabeçalho `X-Organization-Id`, que a TED já exige nestas rotas. O valor precisa estar no escopo do parceiro. Uma requisição sem ele é recusada.

| Rotas | Escritas | Leituras e rotas por ID |
| - | - | - |
| Transferências: `/v1/transfers/initiate`, `/v1/transfers/signing/prepare`, `/v1/transfers/process` | Cabeçalho `X-Organization-Id` | — |
| Uma transferência: `/v1/transfers/{transferId}`, `/v1/transfers/{transferId}/return` | Cabeçalho `X-Organization-Id` | Cabeçalho `X-Organization-Id` |
| Listas: `/v1/transfers`, `/v1/transfers/reconciliation/pending`, `/v1/transfers/dashboard/summary` | — | Cabeçalho `X-Organization-Id` |

O cabeçalho aceita uma organização. Uma transferência de outra organização responde `404`, mesmo quando essa organização está no escopo do parceiro: informe a organização a que a transferência pertence.

**5. Confirme que funciona**

Use a credencial do parceiro. Liste as transferências de uma organização do escopo do parceiro. A resposta é `200`:

```bash theme={null}
TED_BASE_URL="https://ted.<your-domain>"                 # your TED base URL
TED_BEARER_TOKEN="paste-the-partner-access-token-here"
OWN_ORGANIZATION_ID="paste-an-organization-in-the-scope"

curl -s -o /dev/null -w '%{http_code}\n' \
  -H "Authorization: Bearer ${TED_BEARER_TOKEN}" \
  -H "X-Organization-Id: ${OWN_ORGANIZATION_ID}" \
  "${TED_BASE_URL}/v1/transfers"
```

Envie a mesma requisição com uma organização fora do escopo do parceiro. A resposta é `403` com `BTF-0405`.

## As regras do parceiro na Midaz valem para as suas transferências

***

A TED lança cada transferência na Midaz enquanto atende a requisição do parceiro. Quando o parceiro também tem permissões na Midaz, a Midaz aplica o escopo do parceiro na Midaz a esse lançamento. Por exemplo, um parceiro restrito na Midaz a um ledger não consegue movimentar dinheiro de outro ledger da mesma organização pela TED.

* Quando a Midaz recusa o parceiro, a TED responde `403` com `BTF-0405`, e o `upstream.code` traz o código da Midaz, por exemplo `AUT-1019`. A recusa não movimenta dinheiro, e uma repetição recebe a mesma recusa até você alterar as permissões ou o escopo do parceiro na Midaz.
* O escopo na Midaz não restringe o que o parceiro lê na TED. Ler uma transferência, listar transferências, a lista de conciliações pendentes e o dashboard mostram todas as transferências TED da organização, também as transferências de ledgers fora do escopo do parceiro na Midaz. A TED responde essas leituras a partir dos seus próprios registros e não chama a Midaz. Dê `read` e `list` a um parceiro apenas quando ele puder ver todas as transferências da organização.
* Um parceiro sem permissões na Midaz é decidido apenas pelas suas permissões e escopo na TED.
* Você pode dar ao parceiro as regras da Midaz no mesmo fluxo do Console, ou depois, no produto Midaz.
* Um crédito de TED IN, a conciliação e os outros trabalhos em segundo plano rodam sem parceiro. As regras do parceiro não se aplicam a eles.

## Rotas que nenhum parceiro alcança

***

Um parceiro com escopo na TED é recusado com `403` e `BTF-0405` nas rotas que não informam organização:

* As leituras de TED IN: `GET /v1/transfers/ted-in/poller`, `GET /v1/transfers/ted-in/retained`, `GET /v1/transfers/ted-in/undeliverables` e `GET /v1/transfers/ted-in/reconciliation-gaps`.
* O relatório de roteamento: `GET /v1/transfers/routing/preflight`.

Essas rotas mostram dados de todas as organizações do seu tenant. Use uma aplicação da sua própria instituição para elas.

## Se algo falhar

***

| Código | Status | O que significa | O que fazer |
| - | - | - | - |
| `BTF-0405` | 403 | A requisição informa uma organização fora do escopo do parceiro, não informa nenhuma, ou está fora das permissões ou da lista de IPs do parceiro. Com `upstream.code`, a Midaz recusou o parceiro: a transferência está fora das permissões ou do escopo do parceiro na Midaz. | Envie `X-Organization-Id` com uma organização do escopo do parceiro. Confira também as permissões e a lista de IPs do parceiro. Com `upstream.code`, confira as permissões e o escopo do parceiro na Midaz. |
| `BTF-0401` | 401 | O parceiro está suspenso, ou a requisição está fora do seu período de validade. | Reative o parceiro, ou altere o seu período de validade. |
| `BTF-0200` | 404 | A transferência não pertence à organização que a requisição informa. Nada é lido ou alterado. | Confira o ID da transferência e a organização. |
| `BTF-0404` | 404 | A sua instituição não opera a organização na TED. | Confira a organização. |
| `BTF-2000` | 503 | A Midaz não respondeu. | Leia a transferência e envie a requisição de novo como o endpoint descreve, com uma nova chave `X-Idempotency`. |

O `BTF-0405` não diz se foram as permissões ou o escopo que recusaram a requisição. Isso é intencional: um parceiro não consegue usar uma recusa para descobrir quais organizações existem fora do seu escopo.

Para as recusas ao criar ou alterar um parceiro, veja [Códigos de erro](https://docs.lerian.studio/pt/platform/access-manager/features/partners/api.md#error-codes) no guia da API.


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