As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Criação e uso de definições de tipo em documentos do esquema de recursos
Todos os elementos nos esquemas se resolvem em definições de tipo. Essas definições de tipo são definições de tipo primitivo (como booleanos, cadeias de caracteres, números) ou definições de tipo com namespace (definições de tipo criadas a partir de definições de tipo primitivas por conveniência).
Ao definir um esquema personalizado, você pode usar definições primitivas e definições de tipo de namespace.
Sumário
Definições de tipo primitivo
As definições de tipo primitivo são os alicerces de todas as definições de tipo definidas em integrações gerenciadas. Todas as definições de namespace, incluindo definições de tipo personalizadas, se transformam em uma definição de tipo primitiva por meio da $ref
palavra-chave ou da palavra-chave. type
Todos os tipos primitivos são anuláveis usando a nullable
palavra-chave, e você pode identificar todos os tipos primitivos usando a palavra-chave. type
booleanos
Os tipos booleanos oferecem suporte a valores padrão.
Definição da amostra:
{ "type" : "boolean", "default" : "false", "nullable" : true }
Suporte ao tipo inteiro
Os tipos inteiros oferecem suporte ao seguinte:
-
Valores de
default
-
Valores de
maximum
-
Valores de
minimum
-
Valores de
exclusiveMaximum
-
Valores de
exclusiveMinimum
-
Valores de
multipleOf
Se o valor x
estiver sendo validado, o seguinte deve ser verdadeiro:
-
x
≥minimum
x
>exclusiveMinimum
x
<exclusiveMaximum
nota
Números com uma parte fracionária zero são considerados inteiros, mas números de ponto flutuante são rejeitados.
1.0 // Schema-Compliant 3.1415926 // NOT Schema-Compliant
Embora você possa especificar ambos minimum
exclusiveMinimum
e/ou ambos maximum
exclusiveMaximum
, não recomendamos usar os dois simultaneamente.
Definições de amostra:
{ "type" : "integer", "default" : 2, "nullable" : true, "maximum" : 10, "minimum" : 0, "multipleOf": 2 }
Definição alternativa:
{ "type" : "integer", "default" : 2, "nullable" : true, "exclusiveMaximum" : 11, "exclusiveMinimum" : -1, "multipleOf": 2 }
Números
Use o tipo de número para qualquer tipo numérico, incluindo números inteiros e números de ponto flutuante.
Os tipos de números oferecem suporte ao seguinte:
-
Valores de
default
-
Valores de
maximum
-
Valores de
minimum
-
Valores de
exclusiveMaximum
-
Valores de
exclusiveMinimum
-
multipleOf
valores. O múltiplo pode ser um número de ponto flutuante.
Se o valor x
estiver sendo validado, o seguinte deve ser verdadeiro:
-
x
≥minimum
x
>exclusiveMinimum
x
<exclusiveMaximum
Embora você possa especificar ambos minimum
exclusiveMinimum
e/ou ambos maximum
exclusiveMaximum
, não recomendamos usar os dois simultaneamente.
Definições de amostra:
{ "type" : "number", "default" : 0.4, "nullable" : true, "maximum" : 10.2, "minimum" : 0.2, "multipleOf": 0.2 }
Definição alternativa:
{ "type" : "number", "default" : 0.4, "nullable" : true, "exclusiveMaximum" : 10.2, "exclusiveMinimum" : 0.2, "multipleOf": 0.2 }
Strings
Os tipos de string oferecem suporte ao seguinte:
-
Valores de
default
-
restrições de comprimento (devem ser números não negativos), incluindo valores
maxLength
minLength
-
pattern
valores para expressões regulares
Quando você define expressões regulares, a string é válida se a expressão corresponder a qualquer lugar dentro da string. Por exemplo, a expressão regular p
corresponde a qualquer string contendo um p, como “apple”, não apenas à string “p”. Para maior clareza, recomendamos usar expressões regulares com ^...$
(por exemplo,^p$
), a menos que você tenha um motivo específico para não fazer isso.
Definição da amostra:
{ "type" : "string", "default" : "defaultString", "nullable" : true, "maxLength": 10, "minLength": 1, "pattern" : "^([0-9a-fA-F]{2})+$" }
Nulos
Os tipos nulos aceitam apenas um único valor:null
.
Definição da amostra:
{ "type": "null" }
Matrizes
Os tipos de matriz oferecem suporte ao seguinte:
-
default
— uma lista que será usada como valor padrão. -
items
— Definição do tipo JSON imposta a todos os elementos da matriz. -
Restrições de comprimento (deve ser um número não negativo)
-
minItems
-
maxItems
-
-
pattern
valores para Regex -
uniqueItems
— um booleano indicando se os elementos na matriz precisam ser exclusivos -
prefixItems
— uma matriz em que cada item é um esquema que corresponde a cada índice da matriz do documento. Ou seja, uma matriz em que o primeiro elemento valida o primeiro elemento da matriz de entrada, o segundo elemento valida o segundo elemento da matriz de entrada e assim por diante.
Definição da amostra:
{ "type": "array", "default": ["1", "2"], "items" : { "type": "string", "pattern": "^([a-zA-Z0-9_ -/]+)$" }, "minItems" : 1, "maxItems": 4, "uniqueItems" : true, }
Exemplos de validação de matriz:
//Examples: ["1", "2", "3", "4"] // Schema-Compliant [] // NOT Schema-Compliant: minItems=1 ["1", "1"] // NOT Schema-Compliant: uniqueItems=true ["{"] // NOT Schema-Compliant: Does not match the RegEx pattern.
Definição alternativa usando validação de tupla:
{ "type": "array", "prefixItems": [ { "type": "number" }, { "type": "string" }, { "enum": ["Street", "Avenue", "Boulevard"] }, { "enum": ["NW", "NE", "SW", "SE"] } ] } //Examples: [1600, "Pennsylvania", "Avenue", "NW"] // Schema-Compliant // And, by default, it's also okay to add additional items to end: [1600, "Pennsylvania", "Avenue", "NW", "Washington"] // Schema-Compliant
Objetos
Os tipos de objeto oferecem suporte ao seguinte:
-
Restrições de propriedade
-
properties
— Defina as propriedades (pares de valores-chave) de um objeto usando aproperties
palavra-chave. O valor deproperties
é um objeto, em que cada chave é o nome de uma propriedade e cada valor é um esquema usado para validar essa propriedade. Qualquer propriedade que não corresponda a nenhum dos nomes de propriedade naproperties
palavra-chave é ignorada por essa palavra-chave. -
required
— Por padrão, as propriedades definidas pelaproperties
palavra-chave não são obrigatórias. No entanto, você pode fornecer uma lista das propriedades necessárias usando arequired
palavra-chave. Arequired
palavra-chave usa uma matriz de zero ou mais cadeias de caracteres. Cada uma dessas sequências de caracteres deve ser exclusiva. -
propertyNames
— Essa palavra-chave permite o controle sobre o RegEx padrão dos nomes das propriedades. Por exemplo, talvez você queira impor que todas as propriedades de um objeto tenham nomes seguindo uma convenção específica. -
patternProperties
— Isso mapeia expressões regulares para esquemas. Se o nome de uma propriedade corresponder à expressão regular fornecida, o valor da propriedade deverá ser validado em relação ao esquema correspondente. Por exemplo, usepatternProperties
para especificar que um valor deve corresponder a um esquema específico, dado um tipo específico de nome de propriedade. -
additionalProperties
— Essa palavra-chave controla como as propriedades extras são tratadas. Propriedades extras são propriedades cujos nomes não estão listados na palavra-chave properties ou que correspondem a qualquer uma das expressões regulares empatternProperties
. Por padrão, propriedades adicionais são permitidas. Definir esse campo comofalse
significa que nenhuma propriedade adicional é permitida. -
unevaluatedProperties
— Essa palavra-chave é semelhanteadditionalProperties
, exceto pelo fato de poder reconhecer propriedades declaradas em subesquemas.unevaluatedProperties
funciona coletando todas as propriedades que são validadas com êxito ao processar os esquemas e usá-las como a lista de propriedades permitidas. Isso permite que você faça coisas mais complexas, como adicionar propriedades condicionalmente. Consulte o exemplo abaixo para obter mais detalhes.
-
-
anyOf
— O valor dessa palavra-chave DEVE ser uma matriz não vazia. Cada item da matriz DEVE ser um esquema JSON válido. Uma instância é validada com sucesso em relação a essa palavra-chave se for validada com êxito em pelo menos um esquema definido pelo valor dessa palavra-chave. -
oneOf
— O valor dessa palavra-chave DEVE ser uma matriz não vazia. Cada item da matriz DEVE ser um esquema JSON válido. Uma instância é validada com sucesso em relação a essa palavra-chave se for validada com base em exatamente um esquema definido pelo valor dessa palavra-chave.
Exemplo de obrigatório:
{ "type": "object", "required": ["test"] } // Schema Compliant { "test": 4 } // NOT Schema Compliant {}
PropertyNames exemplo:
{ "type": "object", "propertyNames": { "pattern": "^[A-Za-z_][A-Za-z0-9_]*$" } } // Schema Compliant { "_a_valid_property_name_001": "value" } // NOT Schema Compliant { "001 invalid": "value" }
PatternProperties exemplo:
{ "type": "object", "patternProperties": { "^S_": { "type": "string" }, "^I_": { "type": "integer" } } } // Schema Compliant { "S_25": "This is a string" } { "I_0": 42 } // NOT Schema Compliant { "S_0": 42 } // Value must be a string { "I_42": "This is a string" } // Value must be an integer
AdditionalProperties exemplo:
{ "type": "object", "properties": { "test": { "type": "string" } }, "additionalProperties": false } // Schema Compliant { "test": "value" } OR {} // NOT Schema Compliant { "notAllowed": false }
UnevaluatedProperties exemplo:
{ "type": "object", "properties": { "standard_field": { "type": "string" } }, "patternProperties": { "^@": { "type": "integer" } // Allows properties starting with '@' }, "unevaluatedProperties": false // No other properties allowed } // Schema Compliant { "standard_field": "some value", "@id": 123, "@timestamp": 1678886400 } // This passes because "standard_field" is evaluated by properties, // "@id" and "@timestamp" are evaluated by patternProperties, // and no other properties remain unevaluated. // NOT Schema Compliant { "standard_field": "some value", "another_field": "unallowed" } // This fails because "another_field" is unevaluated and doesn't match // the @ pattern, leading to a violation of unevaluatedProperties: false
AnyOf exemplo:
{ "anyOf": [ { "type": "string", "maxLength": 5 }, { "type": "number", "minimum": 0 } ] } // Schema Compliant "short" 12 // NOT Schema Compliant "too long" -5
OneOf exemplo:
{ "oneOf": [ { "type": "number", "multipleOf": 5 }, { "type": "number", "multipleOf": 3 } ] } // Schema Compliant 10 9 // NOT Schema compliant 2 // Not a multiple of either 5 or 3 15 // Multiple of both 5 and 3 is rejected.
Definições de tipo com namespace
As definições de tipo com namespace são tipos criados a partir de tipos primitivos. Esses tipos devem seguir o formato. As integrações
gerenciadas fornecem tipos predefinidos nos namespaces namespace
.typename
.aws
e. matter
Você pode usar qualquer namespace para tipos personalizados, exceto os reservados aws
e matter
os namespaces.
Para encontrar as definições de tipo com namespace disponíveis, use a ListSchemaVersionsAPI com o Type
filtro definido como. definition
Tipos do matter
Encontre tipos de dados no matter
namespace usando a ListSchemaVersionsAPI com o Namespace
filtro definido como matter
e o Type
filtro definido como. definition
Tipos do aws
Encontre tipos de dados no aws
namespace usando a ListSchemaVersionsAPI com o Namespace
filtro definido como aws
e o Type
filtro definido como. definition
Definição do tipo de bitmap
Os bitmaps têm duas propriedades obrigatórias:
type
deve ser um objetoproperties
deve ser um objeto contendo cada definição de bit. Cada bit é um objeto com propriedadesextrinsicId
value
e. O valor de cada bit deve ser um número inteiro com um valor mínimo de 0 e um valor máximo de pelo menos 1.
Exemplo de definição de bitmap:
{ "title" : "Sample Bitmap Type", "description" : "Type definition for SampleBitmap.", "$ref" : "/schema-versions/definition/aws.bitmap@1.0 ", "type" : "object", "additionalProperties" : false, "properties" : { "Bit1" : { "extrinsicId" : "0x0000", "value" : { "type" : "integer", "maximum" : 1, "minimum" : 0 } }, "Bit2" : { "extrinsicId" : "0x0001", "value" : { "type" : "integer", "maximum" : 1, "minimum" : 0 } } } } // Schema Compliant { "Bit1": 1, "Bit1": 0 } // NOT Schema Compliant { "Bit1": -1, "Bit1": 0 }
Definição do tipo de enumeração
Os enums exigem três propriedades:
-
type
deve ser um objeto -
enum
deve ser uma matriz de cadeias de caracteres exclusivas, com no mínimo um item -
extrinsicIdMap
é um objeto com propriedades que são os valores enumerados. O valor de cada uma das propriedades deve ser o identificador extrínseco que corresponde ao valor enum.
Definição de enumeração da amostra:
{ "title" : "SampleEnum Type", "description" : "Type definition for SampleEnum.", "$ref" : "/schema-versions/definition/aws.enum@1.0", "type" : "string", "enum" : [ "EnumValue0", "EnumValue1", "EnumValue2" ], "extrinsicIdMap" : { "EnumValue0" : "0", "EnumValue1" : "1", "EnumValue2" : "2" } } // Schema Compliant "EnumValue0" "EnumValue1" "EnumValue2" // NOT Schema Compliant "NotAnEnumValue"