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

# Leitor tolerante

> O padrão de integração leitor tolerante permite que o código do seu cliente absorva mudanças na API da Lerian (novos campos, reordenação ou adições) sem quebrar.

Conforme nossa API pública evolui, integradores e clientes precisam se adaptar. O padrão **Leitor Tolerante** torna um cliente resiliente a essas mudanças.

Ao adotar o padrão Leitor Tolerante, as integrações lidam melhor com novas informações sem atualizações frequentes. Essa abordagem reduz as necessidades de manutenção.

## O que é um leitor tolerante?

***

O padrão Leitor Tolerante é uma abordagem de design de integração. Nesse padrão, um cliente que consome dados lida bem com mudanças, como campos adicionados ou pequenas modificações de estrutura. Esse padrão promove compatibilidade com versões futuras e reduz a necessidade de atualizações imediatas sempre que os dados ou o serviço evoluem.

## Cenário do mundo real

***

Considere uma requisição para `GET /v1/organizations/{organization_id}`. Inicialmente, a resposta pode ser:

```json JSON theme={null}
{
    "id": "cc15194a-6bc9-4ebb-b15d-43411a54ba4b",
    "parentOrganizationId": null,
    "legalName": "Empresa Teste Ltda",
    "legalDocument": "86820799000188",
    "metadata": null,
    "status": {
        "code": "ACTIVE",
        "description": null
    },
    "createdAt": "2024-02-08T16:59:31+0300",
    "updatedAt": "2024-02-08T16:59:31+0300",
    "deletedAt": null
}
```

Mais tarde, campos como `doingBusinessAs` e `address` podem ser adicionados:

```json JSON expandable theme={null}
{
    "id": "cc15194a-6bc9-4ebb-b15d-43411a54ba4b",
    "parentOrganizationId": null,
    "legalName": "Empresa Teste Ltda",
    "doingBusinessAs": "Empresa Teste",
    "legalDocument": "86820799000188",
    "address": {
        "line1": "Rua Botucatu, 10",
        "line2": "Casa B",
        "zipCode": "04023060",
        "city": "São Paulo",
        "state": "SP",
        "country": "BR"
    },
    "metadata": null,
    "status": {
        "code": "ACTIVE",
        "description": null
    },
    "createdAt": "2024-02-08T16:59:31+0300",
    "updatedAt": "2024-02-08T16:59:31+0300",
    "deletedAt": null
}
```

Um cliente que segue o padrão Leitor Tolerante lidaria bem com os campos adicionais.

## Implementando um leitor tolerante

***

Abaixo está um trecho de código Python de exemplo que processa campos adicionais sem problemas.

```python Python expandable theme={null}
def fetch_organization_info(organization_id):
    response = requests.get(f"{host}/v1/organizations/{organization_id}")
    org_info = response.json()

    # Fetch required fields
    legal_name = org_info.get("legalName", "Unknown")
    legal_document = org_info.get("legalDocument", "No document provided")

    # Handle optional fields
    doing_business_as = org_info.get("doingBusinessAs")

    # Nested address structure
    address_info = org_info.get("address", {})
    line1 = address_info.get("line1", "Address not provided")
    city = address_info.get("city", "City not provided")
    state = address_info.get("state", "State not provided")
    country = address_info.get("country", "Country not provided")

    # Display information
    print(f"Legal Name: {legal_name}, Legal Document: {legal_document}")
    print(f"Doing Business As: {doing_business_as}")
    print(f"Address: {line1}, {city}, {state}, {country}")

# Example usage
fetch_organization_info("cc15194a-6bc9-4ebb-b15d-43411a54ba4b")
```

Neste exemplo, os métodos `get` acessam valores com segurança. Isso permite flexibilidade quando novos campos aparecem, como `phoneNumber`. O código continua funcional mesmo se um campo estiver ausente.


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