Apidog Docs
🇵🇹 Português (Portugal)
  • 🇺🇸 English
  • 🇯🇵 日本語
  • 🇪🇸 Español
  • 🇰🇷 한국인
  • 🇨🇳 简体中文
  • 🇵🇹 Português (Portugal)
  • 🇮🇩 Bahasa Indonesia
  • 🇧🇷 Português (Brasil)
  • 🇻🇳 Tiếng Việt
  • 🇨🇳 繁體中文
🇵🇹 Português (Portugal)
  • 🇺🇸 English
  • 🇯🇵 日本語
  • 🇪🇸 Español
  • 🇰🇷 한국인
  • 🇨🇳 简体中文
  • 🇵🇹 Português (Portugal)
  • 🇮🇩 Bahasa Indonesia
  • 🇧🇷 Português (Brasil)
  • 🇻🇳 Tiếng Việt
  • 🇨🇳 繁體中文
🇵🇹 Português (Portugal)
  • 🇺🇸 English
  • 🇯🇵 日本語
  • 🇪🇸 Español
  • 🇰🇷 한국인
  • 🇨🇳 简体中文
  • 🇵🇹 Português (Portugal)
  • 🇮🇩 Bahasa Indonesia
  • 🇧🇷 Português (Brasil)
  • 🇻🇳 Tiếng Việt
  • 🇨🇳 繁體中文
Learning Center
HomeSupport CenterAPI ReferencesDownloadChangelog
Learning Center
HomeSupport CenterAPI ReferencesDownloadChangelog
  1. Schemas
  • Centro de Aprendizagem da Apidog
  • Primeiros passos
    • Introdução ao Apidog
    • Conceitos Básicos no Apidog
    • Navegar no Apidog
    • Início rápido
      • Visão geral
      • Criar um Endpoint
      • Fazer um Pedido
      • Adicionar uma asserção
      • Criar Cenários de Teste
      • Partilhar Documentação da API
      • Explore Mais
    • Migração para o Apidog
      • Visão geral
      • Importação Manual
      • Importação Agendada (Vincular Fontes de Dados)
      • Opções de Importação
      • Exportar Dados
      • Importar de
        • Importar do Postman
        • Importar especificação OpenAPI
        • Importar cURL
        • Importar Markdowns
        • Importar a partir do Insomnia
        • Importar a partir de apiDoc
        • Importar Ficheiro .har
        • Importar WSDL
  • Apidog Europe
    • Apidog Europe
  • Dados de API mock
    • Visão geral
    • Smart Mock
    • Mock personalizado
    • Sequência de Prioridade do Mock
    • Scripts de Mock
    • Mock na Cloud
    • Mock do Runner Autoalojado
    • Idioma de Mock (Localidades)
  • Conta e preferências
    • Definições da Conta
    • Gerar um Token de Acesso OpenAPI
    • Notificações
    • Definições de Idioma
    • Teclas de Atalho
    • Configuração de Proxy de Rede
    • Cópia de Segurança dos Dados
    • Atualizar o Apidog
    • Eliminar Conta
    • Funcionalidades Experimentais
  • Enviar requisições
    • Visão geral
    • Depuração de SSE
    • Cliente MCP
    • Socket.IO
    • WebSocket
    • Webhook
    • SOAP ou WebService
    • GraphQL
    • gRPC
    • Utilizar Agentes de Proxy de Pedido para Depuração
    • Criar requisições
      • Histórico de Pedidos
      • Noções Básicas de Pedidos
      • Parâmetros e Corpo
      • Cabeçalhos do Pedido
      • Definições do Pedido
      • Depurar Pedidos
      • Guardar Pedidos como Endpoints
      • HTTP/2
    • Autenticação e autorização
      • Visão geral
      • Certificados CA e de Cliente
      • Tipos de autorização
      • Autenticação Digest
      • OAuth 1.0
      • OAuth 2.0
      • Autenticação Hawk
      • Kerberos
      • NTLM
      • Akamai EdgeGrid
    • Resposta e cookies
      • Visualizar Respostas de API
      • Gerir Cookies
      • Visão geral
  • Desenvolver e depurar APIs
    • Visão geral
    • Gerar Pedidos
    • Enviar Pedidos
    • Casos de Depuração
    • Casos de Teste
    • Valores Dinâmicos
    • Validação de Respostas
    • Design-First vs Request-First
    • Geração de Código
    • Ambientes e variáveis
      • Visão geral
      • Utilizar Variáveis
      • Gestão de Ambientes
    • Segredos do cofre
      • Visão geral
      • HashiCorp Vault
      • Azure Key Vault
      • AWS Secrets Manager
    • Módulos de valores dinâmicos
      • Airline
      • Animal
      • Cor
      • Comércio
      • Empresa
      • Base de Dados
      • Tipo de dados
      • Data
      • Finanças
      • Alimentação
      • Git
      • Hacker
      • Helpers
      • Imagem
      • Internet
      • Localização
      • Lorem
      • Música
      • Número
      • Pessoa
      • Telefone
      • Ciência
      • String
      • Sistema
      • Veículo
      • Word
    • Pré e pós-processadores
      • Visão geral
      • Asserção
      • Extrair variável
      • Espera
      • Segurança
      • Operações de banco de dados
        • Visão geral
        • MySQL
        • MongoDB
        • Redis
        • Cliente Oracle
      • Uso de scripts
        • Visão geral
        • Scripts de Pré-processamento
        • Scripts de pós-processamento
        • Scripts Públicos
        • Referência de Scripts do Postman
        • Chamar Outras Linguagens de Programação
        • Utilizar Bibliotecas JS
        • Visualizar Respostas
        • Exemplos de scripts
          • Scripts de Asserção
          • Utilização de Variáveis
          • Modificar Pedidos
          • Outros exemplos
    • Depuração de APIs
      • Depurador de Agentes de IA
      • Depurador A2A
  • Projetar APIs
    • Visão geral
    • Criar um Novo Projeto de API
    • Noções Básicas de Endpoints
    • Diretrizes de Design de API
    • Módulo
    • Configurar vários exemplos de corpo do pedido
    • Componentes
    • Campos Comuns
    • Parâmetros Globais
    • Histórico de Alterações do Endpoint
    • Comentários
    • Gestão de Endpoints em Lote
    • API de Protocolo Personalizado
    • Modo Spec-first (Beta)
    • Esquemas de segurança
      • Visão geral
      • Criar um Esquema de Segurança
      • Utilizar o Esquema de Segurança
      • Esquema de Segurança na Documentação Online
    • Recursos avançados
      • Campos de Endpoint Personalizados
      • Cenários de Teste Associados
      • Estado do endpoint
      • Aparência das listas de parâmetros
      • Identificação Única de Endpoint
    • Schemas
      • Visão geral
      • Criar um Novo Schema
      • Criar um Schema
      • Gerar esquemas a partir de JSON, etc.
      • oneOf, allOf, anyOf
      • Utilizar Discriminator
  • Testes de API
    • Visão geral
    • Cenários de teste
      • Criar um Cenário de Teste
      • Passar Dados Entre Pedidos
      • Condições de Controlo de Fluxo
      • Sincronizar Dados de Endpoints e Casos de Endpoint
      • Importar Endpoints e Casos de Endpoint de Outros Projetos
      • Exportar Cenários de Teste
    • Relatórios de teste
      • Relatórios de Teste
    • Executar cenários de teste
      • Executar um cenário de teste
      • Executar cenários de teste em lote
      • Testes Orientados por Dados
      • Dados de Teste Partilhados
      • Tarefas agendadas
      • Gerir o ambiente de runtime de APIs de outros projetos
    • Suíte de testes
      • Visão geral
      • Criar Uma Suite de Testes
      • Orquestrar Conjunto de Testes
      • Executar Conjuntos de Testes Localmente
      • Executar conjuntos de testes via CLI
      • Tarefas agendadas
    • Testar APIs
      • Testes de Integração
      • Testes de desempenho
      • Testes de Ponta a Ponta
      • Teste de regressão
      • Testes de Contrato
    • Apidog CLI
      • Visão geral
      • Instalar e Executar o Apidog CLI
      • Opções da CLI do Apidog
    • CI/CD
      • Visão geral
      • Integrar com o Github Actions
      • Integrar com o Gitlab
      • Integrar com Jenkins
      • Acionar Teste por Commit Git
  • Publicar documentação de API
    • Visão geral
    • Tecnologias de API Suportadas
    • Partilha Rápida
    • Visualizar a Documentação da API
    • Documentação Markdown
    • Publicar Sites de Documentação
    • Página de Início de Sessão Personalizada
    • Layouts personalizados
    • CSS, JavaScript, HTML personalizados
    • Domínio Personalizado
    • Funcionalidades de IA
    • Definições de SEO
    • Configurações avançadas
      • Pesquisa na Documentação
      • Proxy CORS
      • Integrar o Google Analytics
      • Definições da Árvore de Pastas
      • Definições de Visibilidade
      • Incorporar Valores em URLs de Documentação
    • Versões da API
      • Visão geral
      • Criar Versões de API
      • Publicar versões de API
      • Partilhar Endpoints com Versões da API
  • Branches
    • Visão geral
    • Criar uma Branch de Sprint
    • Testar APIs numa Branch
    • Conceber APIs numa Ramificação
    • Mesclar Branches de Sprint
    • Gerir Branches de Sprint
    • AI Branch (Beta)
  • Recursos de IA
    • Visão geral
    • Ativar Funcionalidades de IA
    • Gerar Casos de Teste
    • Modificar esquemas com IA
    • Verificação de Conformidade do Endpoint
    • Verificação da Completude da Documentação da API
    • Nomeação de Campos com IA
    • Perguntas frequentes
  • Servidor MCP do Apidog
    • Visão geral
    • Ligar o Projeto Apidog à IA
    • Ligar Documentação Publicada à IA
    • Ligar Ficheiros OpenAPI à IA
  • Boas práticas
    • Tratamento de Assinaturas de API
    • Aceder a APIs Protegidas por OAuth 2.0
    • Fluxo de trabalho de colaboração
    • Gestão do Estado de Autenticação
  • Espaço offline
    • Visão geral
  • Administração
    • Gerenciamento de projetos
      • Gerir Projetos
      • Definições de Notificação
      • Gerir Membros do Projeto
      • Recursos do projeto
        • Ligação à Base de Dados
        • Ligação Git
    • Gerenciamento de equipes
      • Gerir Equipas
      • Gerir Membros da Equipa
      • Atividades da Equipa
      • Funções e permissões da equipa
      • Recursos da equipe
        • General Runner
        • Variáveis de Equipa
        • Agente Proxy de Pedidos
      • Colaborações em tempo real
        • Colaboração em Equipa
    • Checklist de integração
      • Conceitos Básicos
      • Guia de Integração Inicial
    • Gerenciamento da organização
      • Gerir a Organização
      • Funções e Permissões da Organização
      • Gerenciamento de planos
        • Gestores de Faturação em Organizações
      • Single Sign-On (SSO)
        • Visão Geral do SSO
        • Configurar o Microsoft Entra ID
        • Configurar o Okta
        • Configurar SSO para uma organização
        • Gerir Contas de Utilizador
        • Mapear Grupos para Equipas
      • Provisionamento SCIM
        • Introdução ao Provisionamento SCIM
        • Microsoft Entra ID
        • Okta
      • Recursos da organização
        • Self-Hosted Runner
  • Cobrança
    • Visão geral
    • Créditos
    • Atualizar o seu plano
    • Métodos de Pagamento Alternativos
    • Gestão de Subscrições
    • Mover Equipas Pagas para Organizações
  • Complementos
    • API Hub
    • Plugin Apidog Intellij IDEA
    • Extensão do navegador
      • Chrome
      • Microsoft Edge
    • Proxy de requisições
      • Proxy de pedidos na Web
      • Proxy de Pedidos em Documentação Partilhada
      • Proxy de Pedido no Cliente
  • Dados e segurança
    • Armazenamento e Segurança de Dados
    • Privacidade e Segurança dos Dados do Utilizador
    • Encaminhamento de Pedidos e Segurança dos Dados
  • Referências
    • Abordagem API Design-First
    • Extensões da Especificação OpenAPI do Apidog
    • JSONPath
    • XPath
    • Expressões Regulares
    • JSON Schema
    • Formato de ficheiro CSV
    • Instalar o Ambiente Java
    • Ambiente de Implementação do Runner
    • Sintaxe Markdown do Apidog
    • Extensões Swagger do Apidog
      • Visão geral
      • x-apidog-folder
      • x-apidog-status
      • x-apidog-name
      • x-apidog-maintainer
    • Extensões JSON Schema do Apidog
      • Visão geral
      • x-apidog-mock
      • x-apidog-orders
      • x-apidog-enum
  • Central de suporte
  1. Schemas

oneOf, allOf, anyOf

oneOf, anyOf e allOf são palavras-chave na especificação JSON Schema utilizadas para definir estruturas de dados compostas. São, essencialmente, operadores lógicos aplicados à validação de dados. O Apidog suporta totalmente estas funcionalidades do JSON Schema, ajudando-o a criar documentação de API e regras de validação de dados mais precisas.

Conceitos Básicos#

allOf
allOf significa que os dados devem satisfazer simultaneamente todas as condições dos subesquemas, equivalente à operação AND em operações lógicas. Tal como a expressão "tanto... como..." na linguagem quotidiana, todas as condições devem ser cumpridas simultaneamente para que a validação seja aprovada.
anyOf
oneOf

Tabela de Comparação Lógica#

Palavra-chaveOperação LógicaRequisito da CondiçãoCaso de Utilização Típico
allOfANDDeve satisfazer todas as condições simultaneamenteHerança, extensão
anyOfORDeve satisfazer pelo menos uma condiçãoCombinações opcionais
oneOfXORDeve satisfazer exatamente uma condiçãoEscolhas mutuamente exclusivas

Utilização no Apidog#

1. Utilizar o Editor Visual#

1
Passo 1: Criar Esquemas de Dados
No seu projeto, clique em "Schemas" e, em seguida, em "New Schema".
Criar um novo esquema
2
Passo 2: Adicionar Composição de Esquemas
No painel de edição do esquema de dados, ao selecionar o tipo, clique em "Schema Composition" e escolha oneOf, anyOf ou allOf. Defina estruturas de dados específicas para cada subesquema.
Adicionar composição de esquemas

2. Utilizar o Editor de Código JSON Schema#

Também pode editar diretamente o código JSON Schema no painel de edição do esquema de dados para definir estes padrões de composição lógica.
Editor de código JSON Schema

Aplicação na Documentação da API#

Definição de Parâmetros do Pedido#

Ao definir parâmetros de pedido de endpoint, pode utilizar estes padrões de composição para descrever estruturas de parâmetros complexas:
1
Aceda à página de edição da API.
2
Na secção "Request Parameters", selecione Body e escolha o tipo JSON.
3
Na estrutura de dados, clique em "Reference Schema", ou selecione a "Schema Composition" adequada com base na lógica de negócio, ou defina um JSON Schema personalizado.
Composição de esquemas de parâmetros do pedido

Definição de Dados da Resposta#

Da mesma forma, pode utilizar esta composição de esquemas nos dados da resposta:
1
Na secção "Response", adicione exemplos de resposta.
2
Utilize a composição de esquemas para descrever diferentes formatos de resposta.
Composição de esquemas de resposta

Exemplos de Utilização Prática#

Exemplo de allOf (Operação AND)#

Utilizar allOf permite-lhe combinar vários esquemas de dados, exigindo que os dados satisfaçam todas as condições simultaneamente. Isto é como dizer "as informações do utilizador devem incluir informações básicas AND informações de contacto":
{
  "allOf": [
    {
      "description": "Basic user information",
      "type": "object",
      "properties": {
        "id": { "type": "integer" },
        "name": { "type": "string" }
      },
      "required": ["id", "name"]
    },
    {
      "description": "Contact information", 
      "type": "object",
      "properties": {
        "email": { "type": "string", "format": "email" },
        "phone": { "type": "string" }
      },
      "required": ["email"]
    }
  ]
}
Resultado: Os dados finais devem conter os campos id, name e email, sendo phone opcional. Todas as restrições dos subesquemas são combinadas e executadas, conforme mostrado abaixo:
Resultado do exemplo de allOf

Exemplo de anyOf (Operação OR)#

Utilizar anyOf fornece vários caminhos de validação opcionais — os utilizadores podem escolher um ou vários métodos. Isto é como dizer "os utilizadores podem iniciar sessão através de nome de utilizador/palavra-passe OR email/palavra-passe OR telefone/código de verificação":
{
  "type": "object",
  "properties": {
    "login": {
      "anyOf": [
        {
          "description": "Username/password login",
          "properties": {
            "username": { "type": "string" },
            "password": { "type": "string" }
          },
          "required": ["username", "password"]
        },
        {
          "description": "Email/password login",
          "properties": {
            "email": { "type": "string", "format": "email" },
            "password": { "type": "string" }
          },
          "required": ["email", "password"]
        },
        {
          "description": "Phone/verification code login",
          "properties": {
            "phone": { "type": "string" },
            "verifyCode": { "type": "string" }
          },
          "required": ["phone", "verifyCode"]
        }
      ]
    }
  }
}
Resultado: Os utilizadores podem fornecer informações para um ou vários métodos de início de sessão, desde que pelo menos um método satisfaça os requisitos de validação, conforme mostrado abaixo:
Resultado do exemplo de anyOf

Exemplo de oneOf (Operação XOR)#

Utilizar oneOf garante que os utilizadores só podem escolher um método de pagamento e não podem fornecer vários métodos simultaneamente. Isto é como dizer "o método de pagamento deve ser cartão de crédito XOR PayPal XOR transferência bancária — exatamente uma destas opções":
{
  "type": "object", 
  "properties": {
    "payment": {
      "oneOf": [
        {
          "description": "Credit card payment",
          "type": "object",
          "properties": {
            "type": { "const": "credit_card" },
            "cardNumber": { "type": "string" },
            "expiryDate": { "type": "string" }
          },
          "required": ["type", "cardNumber", "expiryDate"],
          "additionalProperties": false
        },
        {
          "description": "PayPal payment", 
          "type": "object",
          "properties": {
            "type": { "const": "paypal" },
            "email": { "type": "string", "format": "email" }
          },
          "required": ["type", "email"],
          "additionalProperties": false
        },
        {
          "description": "Bank transfer",
          "type": "object", 
          "properties": {
            "type": { "const": "bank_transfer" },
            "accountNumber": { "type": "string" },
            "routingNumber": { "type": "string" }
          },
          "required": ["type", "accountNumber", "routingNumber"],
          "additionalProperties": false
        }
      ]
    }
  }
}
Resultado: Os utilizadores devem escolher exatamente um método de pagamento — não podem fornecer vários métodos simultaneamente, nem deixar de fornecer todos, conforme mostrado abaixo:
Resultado do exemplo de oneOf

Melhores Práticas#

Ao escolher padrões de composição, clarifique primeiro a sua lógica de negócio:
Precisa de combinar/herdar vários esquemas → Utilize allOf (operação AND)
Precisa de combinações opcionais flexíveis → Utilize anyOf (operação OR)
Precisa de escolhas mutuamente exclusivas rigorosas → Utilize oneOf (operação XOR)
Modified at 2026-06-09 08:54:45
Previous
Gerar esquemas a partir de JSON, etc.
Next
Utilizar Discriminator
Built with