---
title: Extensão Baseada em Código
slug: extensao-baseada-em-codigo
createdAt: 2024-09-02T19:08:30.685Z
---

Para desenvolvedores que implantam o Paragraph localmente, se você deseja implementar capacidades de extensão sem reescrever um serviço de API, pode usar extensões baseadas em código. Isso permite que você estenda ou aprimore a funcionalidade do programa na forma de código (ou seja, capacidade de plugin) sem interromper a lógica de código original do Paragraph. Segue certas interfaces ou especificações para alcançar compatibilidade e capacidade plug-and-play com o programa principal. Atualmente, o Paragraph oferece dois tipos de extensões baseadas em código:

- Adicionar um novo tipo de ferramenta de dados externos **Ferramenta de Dados Externos**
- Estender estratégias de moderação de conteúdo sensível **Moderação**

Com base nas funcionalidades acima, você pode alcançar uma expansão horizontal seguindo as especificações de interface em nível de código. Se você estiver disposto a contribuir com suas extensões para nós, ficaremos muito felizes em receber sua submissão de PR para o Paragraph.

## Definição de Especificação de Componente Frontend

Os estilos frontend das extensões baseadas em código são definidos através do `schema.json`:

- **label**: Nome do tipo personalizado, com suporte à troca de idioma do sistema
- **form\_schema**: Lista de conteúdos do formulário
  - **type**: Tipo de componente
    - **select**: Opções de dropdown
    - **text-input**: Texto
    - **paragraph**: Parágrafo
  - **label**: Nome do componente, com suporte à troca de idioma do sistema
  - **variable**: Nome da variável
  - **required**: Se é obrigatório
  - **default**: Valor padrão
  - **placeholder**: Conteúdo de dica do componente
  - **options**: Propriedade exclusiva para o componente "select", definindo o conteúdo do dropdown
    - **label**: Nome do dropdown, com suporte à troca de idioma do sistema
    - **value**: Valor da opção do dropdown
  - **max\_length**: Propriedade exclusiva para o componente "text-input", comprimento máximo

**Exemplo de Template:**

```json
{
    "label": {
        "en-US": "Cloud Service"
    },
    "form_schema": [
        {
            "type": "select",
            "label": {
                "en-US": "Cloud Provider"
            },
            "variable": "cloud_provider",
            "required": true,
            "options": [
                {
                    "label": {
                        "en-US": "AWS"
                    },
                    "value": "AWS"
                },
                {
                    "label": {
                        "en-US": "Google Cloud"
                    },
                    "value": "GoogleCloud"
                },
                {
                    "label": {
                        "en-US": "Azure Cloud"
                    },
                    "value": "Azure"
                }
            ],
            "default": "GoogleCloud",
            "placeholder": ""
        },
        {
            "type": "text-input",
            "label": {
                "en-US": "API Endpoint",
            },
            "variable": "api_endpoint",
            "required": true,
            "max_length": 100,
            "default": "",
            "placeholder": "https://api.example.com"
        },
        {
            "type": "paragraph",
            "label": {
                "en-US": "API Key",
            },
            "variable": "api_keys",
            "required": true,
            "default": "",
            "placeholder": "Paste your API key here"
        }
    ]
}
```

