Padrões e extensões do Swagger
Para facilitar a leitura e a interpretação dos contratos das APIs, este documento apresenta padrões e extensões do Swagger utilizados na definição dos campos e de seus comportamentos.
As extensões permitem adicionar propriedades personalizadas ao Swagger que não fazem parte da especificação nativa. Essas propriedades são identificadas pelo prefixo
x-.Referência: Swagger — Specification Extensions
1. Padrão Data/Hora
Descrição
Os campos de data e hora seguem o padrão UTC, utilizando o formato ISO 8601. Nesse formato, a letra
T separa a data da hora, e a letra Z indica que o horário está em UTC.Formatos aceitos:
YYYY-MM-DDTHH:MM:SSZYYYY-MM-DDTHH:MM:SS.MMMZ
Exemplos
Exemplo 1
text
1985-04-12T22:20:50Z
text
1985-04-12T22:20:50Z
- Brasil (UTC−3):
19:20:50 - Portugal:
23:20:50(considerando UTC+1)
Exemplo 2
text
2015-01-15T18:35:45.352Z
text
2015-01-15T18:35:45.352Z
- Brasil (UTC−3):
15:35:45.352 - Egito:
20:35:45.352(considerando UTC+2)
Comportamento nas operações HTTP
De acordo com o padrão descrito para as APIs:
- GET: o cliente deverá subtrair do horário UTC a diferença correspondente ao fuso horário do país. Para o Brasil, considerando UTC−3, serão subtraídas 3 horas.
- POST, PUT e PATCH: o cliente deverá adicionar ao horário informado a diferença correspondente ao fuso horário do país. Para o Brasil, considerando UTC−3, serão adicionadas 3 horas.
2. Padrão custom-date
Descrição
O formato
custom-date permite representar datas em formatos personalizados, definidos pela expressão regular especificada na propriedade pattern.Esse padrão pode ser utilizado, por exemplo, para datas de expiração de cartões, geralmente representadas por mês e ano.
Exemplo
yaml
Entidade:
description: Descrição da entidade
properties:
codigo:
type: string
format: custom-date
pattern: "^((0[1-9])|(1[0-2]))-([1-9]\\d{3})$"
example: "09-2028"
description: Descrição do campo.yaml
Entidade:
description: Descrição da entidade
properties:
codigo:
type: string
format: custom-date
pattern: "^((0[1-9])|(1[0-2]))-([1-9]\\d{3})$"
example: "09-2028"
description: Descrição do campo.No exemplo, o campo
codigo aceita uma data no formato MM-YYYY, como 09-2028.A expressão regular define que:
- O mês deve estar entre
01e12. - O ano deve conter quatro dígitos, começando de
1a9.
3. Extensão x-used-write-method
Descrição
A extensão
x-used-write-method define em quais métodos HTTP de escrita um campo da entidade pode ser utilizado, como POST, PUT e PATCH.Exemplo
yaml
codigo:
type: string
x-used-write-method:
- POST
example: "C0001D"
description: Descrição do campo.yaml
codigo:
type: string
x-used-write-method:
- POST
example: "C0001D"
description: Descrição do campo.No exemplo, o campo
codigo poderá ser utilizado somente na operação POST.Nas demais operações de escrita (
PUT e PATCH), o campo deverá ser ignorado.4. Extensão x-writeOnly
Descrição
A extensão
x-writeOnly indica que um campo da entidade é destinado exclusivamente à escrita, nas operações POST, PUT e PATCH.Exemplo
yaml
codigo:
type: string
x-writeOnly: true
example: "C0001D"
description: Descrição do campo.yaml
codigo:
type: string
x-writeOnly: true
example: "C0001D"
description: Descrição do campo.No exemplo, o campo
codigo poderá ser enviado nas operações POST, PUT e PATCH.Na operação de leitura (
GET), o campo deverá ser ignorado.5. Extensão x-nullable
Descrição
A extensão
x-nullable indica que um campo da entidade pode aceitar ou retornar o valor null, conforme o comportamento definido pela API.Exemplo
yaml
codigo:
type: string
x-nullable: true
example: null
description: Descrição do campo.yaml
codigo:
type: string
x-nullable: true
example: null
description: Descrição do campo.No exemplo, o campo
codigo poderá conter o valor null no retorno da API.Resumo das extensões
| Propriedade | Finalidade |
|---|---|
custom-date | Identifica campos de data em formatos personalizados, definidos por pattern. |
x-used-write-method | Define em quais métodos HTTP de escrita o campo poderá ser utilizado. |
x-writeOnly | Indica que o campo é destinado exclusivamente às operações de escrita. |
x-nullable | Indica que o campo pode aceitar ou retornar null. |
Observação: as regras funcionais descritas neste documento devem ser validadas conforme a implementação da API, especialmente a conversão de horários e o suporte às extensões personalizadas na versão do Swagger/OpenAPI utilizada.