O que mudou no OpenAPI 3.2 vs 3.1 vs 3.0?

Ashley Innocent

Ashley Innocent

13 março 2026

O que mudou no OpenAPI 3.2 vs 3.1 vs 3.0?

Apidog para empresas

Implantação local

SSO & RBAC

Conforme SOC 2

Explorar Apidog Enterprise

TL;DR

OpenAPI 3.1 adicionou compatibilidade total com JSON Schema, webhooks e melhorias no discriminador. O OpenAPI 3.2 adicionou suporte ao método QUERY, exemplos aprimorados e definições de segurança melhores. A Modern PetstoreAPI usa OpenAPI 3.2 para demonstrar todos os recursos mais recentes com exemplos prontos para produção.

Introdução

Você está escrevendo uma especificação OpenAPI. Você vê referências a OpenAPI 3.0, 3.1 e 3.2. Qual é a diferença? Você deveria atualizar? Suas ferramentas suportarão a nova versão?

OpenAPI evoluiu significativamente de 3.0 para 3.2. Cada versão adiciona recursos que tornam as especificações de API mais poderosas e precisas. Mas nem todas as ferramentas suportam as versões mais recentes, criando um desafio de compatibilidade.

O antigo Swagger Petstore usa OpenAPI 2.0 (especificação Swagger). A Modern PetstoreAPI usa OpenAPI 3.2, mostrando cada novo recurso com exemplos prontos para produção.

💡
Se você está construindo ou testando APIs REST, Apidog suporta OpenAPI 3.0, 3.1 e 3.2. Você pode importar especificações, validar contra o schema e testar sua implementação de API. Apidog ajuda você a entender qual versão usar e como migrar.
button

Neste guia, você aprenderá o que mudou em cada versão do OpenAPI, como escolher a versão certa e como a Modern PetstoreAPI demonstra os recursos do OpenAPI 3.2.

Linha de Base do OpenAPI 3.0

OpenAPI 3.0 (lançado em julho de 2017) foi uma grande atualização do Swagger 2.0.

Principais Recursos

1. Múltiplos servidores

servers:
  - url: https://api.petstoreapi.com/v1
    description: Production
  - url: https://staging.petstoreapi.com/v1
    description: Staging

Swagger 2.0 suportava apenas um host.

2. Objeto de corpo da requisição

requestBody:
  required: true
  content:
    application/json:
      schema:
        $ref: '#/components/schemas/Pet'

Mais claro que o parâmetro `body` do Swagger 2.0.

3. Componentes para reusabilidade

components:
  schemas:
    Pet:
      type: object
  responses:
    NotFound:
      description: Resource not found
  parameters:
    PetId:
      name: petId
      in: path

Melhor organização que as `definitions` do Swagger 2.0.

4. Callbacks

Defina callbacks assíncronos (webhooks):

callbacks:
  orderUpdate:
    '{$request.body#/callbackUrl}':
      post:
        requestBody:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OrderUpdate'

5. Links

Defina relacionamentos entre operações:

links:
  GetPetByPetId:
    operationId: getPetById
    parameters:
      petId: '$response.body#/id'

Limitações

1. Incompatibilidade com JSON Schema

OpenAPI 3.0 usava um subconjunto do JSON Schema Draft 5, não o JSON Schema completo. Isso causava problemas de validação.

2. Sem objeto webhooks

Webhooks eram definidos como callbacks, o que era confuso.

3. Discriminador limitado

O suporte a polimorfismo era básico.

4. Sem tipo nulo

Você não podia especificar `type: null` diretamente.

Principais Mudanças no OpenAPI 3.1

OpenAPI 3.1 (lançado em fevereiro de 2021) focou no alinhamento com o JSON Schema.

1. Compatibilidade Total com JSON Schema 2020-12

A maior mudança: Schemas OpenAPI 3.1 são JSON Schema 2020-12 válidos.

Antes (OpenAPI 3.0):

type: string
nullable: true  # Específico do OpenAPI

Depois (OpenAPI 3.1):

type: [string, "null"]  # Padrão JSON Schema

Benefícios:

2. Objeto Webhooks

Antes (OpenAPI 3.0):

# Webhooks definidos como callbacks (confuso)
paths:
  /subscribe:
    post:
      callbacks:
        orderUpdate:
          # definição do webhook

Depois (OpenAPI 3.1):

webhooks:
  orderUpdate:
    post:
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/OrderUpdate'

Separação mais clara entre endpoints de API e webhooks.

3. Discriminador Aprimorado

Melhor suporte a polimorfismo:

oneOf:
  - $ref: '#/components/schemas/Cat'
  - $ref: '#/components/schemas/Dog'
discriminator:
  propertyName: petType
  mapping:
    cat: '#/components/schemas/Cat'
    dog: '#/components/schemas/Dog'

4. Identificador de Licença do Objeto Info

info:
  license:
    name: MIT
    identifier: MIT  # identificador SPDX

5. PathItem $ref

Referencie itens de caminho completos:

paths:
  /pets:
    $ref: '#/components/pathItems/PetsCollection'

Mudanças Disruptivas

Recursos Mais Recentes do OpenAPI 3.2

OpenAPI 3.2 (lançado TBD, rascunho disponível) adiciona padrões de API modernos.

1. Suporte ao Método QUERY

Método HTTP QUERY para buscas complexas:

paths:
  /pets/search:
    query:  # Novo método
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                filters:
                  type: object
                sort:
                  type: array
      responses:
        '200':
          description: Search results

A Modern PetstoreAPI usa QUERY para buscas complexas de pets.

2. Exemplos Aprimorados

Múltiplos exemplos com metadados:

examples:
  availableCat:
    summary: Available cat
    description: A cat available for adoption
    value:
      id: "019b4132-70aa-764f-b315-e2803d882a24"
      name: "Fluffy"
      species: "CAT"
      status: "AVAILABLE"
  adoptedDog:
    summary: Adopted dog
    value:
      id: "019b4127-54d5-76d9-b626-0d4c7bfce5b6"
      name: "Buddy"
      species: "DOG"
      status: "ADOPTED"

3. Definições de Segurança Aprimoradas

Melhor suporte a OAuth 2.0:

components:
  securitySchemes:
    oauth2:
      type: oauth2
      flows:
        authorizationCode:
          authorizationUrl: https://petstoreapi.com/oauth/authorize
          tokenUrl: https://petstoreapi.com/oauth/token
          refreshUrl: https://petstoreapi.com/oauth/refresh
          scopes:
            pets:read: Read pets
            pets:write: Create and update pets
            orders:read: Read orders

4. Mapeamento de Discriminador Aprimorado

Polimorfismo mais flexível:

discriminator:
  propertyName: type
  mapping:
    cat: Cat
    dog: Dog
    bird: '#/components/schemas/Bird'  # Pode misturar local e $ref

5. Melhor Suporte à Depreciação

Deprecie campos específicos:

properties:
  oldField:
    type: string
    deprecated: true
    description: Use newField instead
  newField:
    type: string

Como a Modern PetstoreAPI Usa o OpenAPI 3.2

A Modern PetstoreAPI mostra todos os recursos do OpenAPI 3.2.

1. Especificação Completa

A especificação completa do OpenAPI 3.2 está disponível em:

https://petstoreapi.com/openapi.json

2. Método QUERY para Buscas Complexas

/pets/search:
  query:
    summary: Search pets with complex criteria
    requestBody:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/PetSearchQuery'

3. Webhooks

webhooks:
  petStatusChanged:
    post:
      summary: Pet status changed
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PetStatusWebhook'

4. Schemas Polimórficos

Pet:
  oneOf:
    - $ref: '#/components/schemas/Cat'
    - $ref: '#/components/schemas/Dog'
    - $ref: '#/components/schemas/Bird'
  discriminator:
    propertyName: species

5. Exemplos Abrangentes

Cada endpoint inclui múltiplos exemplos mostrando diferentes cenários.

6. Respostas de Erro RFC 9457

responses:
  '400':
    description: Bad Request
    content:
      application/problem+json:
        schema:
          $ref: '#/components/schemas/ProblemDetails'

Veja a especificação OpenAPI completa para todos os recursos.

Guia de Migração

3.0 para 3.1

1. Substitua `nullable` :

# Antes
type: string
nullable: true

# Depois
type: [string, "null"]

2. Atualize `exclusiveMinimum` / `exclusiveMaximum`:

# Antes
minimum: 0
exclusiveMinimum: true

# Depois
minimum: 0
exclusiveMinimum: 0

3. Mova os webhooks:

# Antes
paths:
  /subscribe:
    callbacks:
      # webhook

# Depois
webhooks:
  # webhook

3.1 para 3.2

1. Adicione métodos QUERY onde apropriado:

/pets/search:
  query:  # Novo no 3.2
    # complex search

2. Aprimore os exemplos:

examples:
  example1:
    summary: Description
    value: {...}

3. Atualize as definições de segurança:

Adicione `refreshUrl` aos fluxos OAuth.

Testando Especificações OpenAPI com Apidog

Apidog suporta todas as versões do OpenAPI.

Importar Especificação OpenAPI

1. Abra o Apidog
2. Clique em "Importar"
3. Selecione "OpenAPI 3.x"
4. Cole a URL ou carregue o arquivo
5. Apidog valida e importa

Validar Especificação

Apidog verifica:

Testar Implementação de API

Gere casos de teste a partir da especificação:

Comparação de Versões

Importe múltiplas versões e compare:

Conclusão

OpenAPI evoluiu significativamente:

OpenAPI 3.0: Base com servidores, corpos de requisição, callbacks

OpenAPI 3.1: Compatibilidade com JSON Schema, objeto webhooks, melhor polimorfismo

OpenAPI 3.2: Método QUERY, exemplos aprimorados, segurança melhorada

A Modern PetstoreAPI usa OpenAPI 3.2 para demonstrar todos os recursos com exemplos prontos para produção. É a implementação de referência para o design de API moderno.

Use Apidog para trabalhar com qualquer versão do OpenAPI, validar especificações e testar implementações.

Perguntas Frequentes (FAQ)

Devo atualizar para OpenAPI 3.1 ou 3.2?

Se suas ferramentas suportam, sim. A compatibilidade com JSON Schema do OpenAPI 3.1 é valiosa. O OpenAPI 3.2 adiciona padrões modernos como o método QUERY.

Minha especificação OpenAPI 3.0 funcionará com ferramentas 3.1?

Em sua maioria, sim, mas `nullable` e `exclusiveMinimum`/`exclusiveMaximum` precisam de atualizações.

Os geradores de código suportam OpenAPI 3.2?

O suporte está crescendo. Verifique a documentação do seu gerador. Muitos suportam 3.1, menos suportam 3.2.

Posso usar os recursos do OpenAPI 3.2 no 3.1?

Não. Use a versão que corresponde aos seus recursos. Se precisar do método QUERY, use o 3.2.

Como valido minha especificação OpenAPI?

Use Apidog para importar e validar sua especificação. Ele verifica a validade do schema e a integridade da referência.

Onde posso ver um exemplo completo de OpenAPI 3.2?

A Modern PetstoreAPI fornece uma especificação OpenAPI 3.2 completa e pronta para produção.

Qual a diferença entre webhooks e callbacks?

Webhooks são requisições HTTP de servidor para cliente. Callbacks são definidos no OpenAPI 3.0 como parte das operações. O OpenAPI 3.1+ possui um objeto `webhooks` dedicado.

Devo usar JSON ou YAML para especificações OpenAPI?

Ambos funcionam. YAML é mais legível para humanos. JSON é mais fácil para ferramentas. A Modern PetstoreAPI fornece ambos os formatos.

Pratique o design de API no Apidog

Descubra uma forma mais fácil de construir e usar APIs