Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Creación y uso de definiciones de tipos en los documentos de esquemas de capacidades
Todos los elementos de los esquemas se resuelven en definiciones de tipos. Estas definiciones de tipos son definiciones de tipos primitivas (como booleanos, cadenas o números) o definiciones de tipos con espacios de nombres (definiciones de tipos creadas a partir de definiciones de tipos primitivas para mayor comodidad).
Al definir un esquema personalizado, puede utilizar tanto definiciones primitivas como definiciones de tipos de espacios de nombres.
Contenido
Definiciones de tipos primitivos
Las definiciones de tipos primitivas son los componentes básicos de todas las definiciones de tipos definidas en las integraciones gestionadas. Todas las definiciones de espacios de nombres, incluidas las definiciones de tipos personalizadas, se resuelven en una definición de tipo primitiva mediante la $ref
palabra clave o la palabra clave. type
Todos los tipos primitivos son anulables con la nullable
palabra clave, y usted puede identificar todos los tipos primitivos con la palabra clave. type
Booleanos
Los tipos booleanos admiten valores predeterminados.
Ejemplo de definición:
{ "type" : "boolean", "default" : "false", "nullable" : true }
Soporte de tipo entero
Los tipos enteros admiten lo siguiente:
-
Valores
default
-
Valores
maximum
-
Valores
minimum
-
Valores
exclusiveMaximum
-
Valores
exclusiveMinimum
-
Valores
multipleOf
Si x
es el valor que se está validando, debe cumplirse lo siguiente:
-
x
≥minimum
x
>exclusiveMinimum
x
<exclusiveMaximum
nota
Los números con una parte fraccionaria cero se consideran enteros, pero se rechazan los números de coma flotante.
1.0 // Schema-Compliant 3.1415926 // NOT Schema-Compliant
Si bien puede especificar ambos minimum
exclusiveMinimum
o ambos maximum
yexclusiveMaximum
, no recomendamos usar ambos simultáneamente.
Ejemplos de definiciones:
{ "type" : "integer", "default" : 2, "nullable" : true, "maximum" : 10, "minimum" : 0, "multipleOf": 2 }
Definición alternativa:
{ "type" : "integer", "default" : 2, "nullable" : true, "exclusiveMaximum" : 11, "exclusiveMinimum" : -1, "multipleOf": 2 }
Números
Utilice el tipo de número para cualquier tipo numérico, incluidos los números enteros y los números de punto flotante.
Los tipos de números admiten lo siguiente:
-
Valores
default
-
Valores
maximum
-
Valores
minimum
-
Valores
exclusiveMaximum
-
Valores
exclusiveMinimum
-
multipleOf
valores. El múltiplo puede ser un número de punto flotante.
Si x
es el valor que se está validando, debe cumplirse lo siguiente:
-
x
≥minimum
x
>exclusiveMinimum
x
<exclusiveMaximum
Si bien puede especificar ambos minimum
exclusiveMinimum
o ambos maximum
yexclusiveMaximum
, no recomendamos usar ambos simultáneamente.
Ejemplos de definiciones:
{ "type" : "number", "default" : 0.4, "nullable" : true, "maximum" : 10.2, "minimum" : 0.2, "multipleOf": 0.2 }
Definición alternativa:
{ "type" : "number", "default" : 0.4, "nullable" : true, "exclusiveMaximum" : 10.2, "exclusiveMinimum" : 0.2, "multipleOf": 0.2 }
Cadenas
Los tipos de cadenas admiten lo siguiente:
-
Valores
default
-
restricciones de longitud (deben ser números no negativos), incluidos los valores
maxLength
yminLength
-
pattern
valores para expresiones regulares
Al definir expresiones regulares, la cadena es válida si la expresión coincide con cualquier punto de la cadena. Por ejemplo, la expresión regular p
coincide con cualquier cadena que contenga una p, como «manzana», no solo con la cadena «p». Para mayor claridad, te recomendamos que coloques las expresiones regulares entre ^...$
(por ejemplo,^p$
), a menos que tengas un motivo específico para no hacerlo.
Ejemplo de definición:
{ "type" : "string", "default" : "defaultString", "nullable" : true, "maxLength": 10, "minLength": 1, "pattern" : "^([0-9a-fA-F]{2})+$" }
Nulos
Los tipos nulos aceptan solo un valor:null
.
Ejemplo de definición:
{ "type": "null" }
Matrices
Los tipos de matrices admiten lo siguiente:
-
default
— una lista que se utilizará como valor por defecto. -
items
— Definición de tipo JSON impuesta a todos los elementos de la matriz. -
Restricciones de longitud (debe ser un número no negativo)
-
minItems
-
maxItems
-
-
pattern
valores para Regex -
uniqueItems
— un booleano que indica si los elementos de la matriz deben ser únicos -
prefixItems
— una matriz en la que cada elemento es un esquema que corresponde a cada índice de la matriz del documento. Es decir, una matriz en la que el primer elemento valida el primer elemento de la matriz de entrada, el segundo elemento valida el segundo elemento de la matriz de entrada, etc.
Ejemplo de definición:
{ "type": "array", "default": ["1", "2"], "items" : { "type": "string", "pattern": "^([a-zA-Z0-9_ -/]+)$" }, "minItems" : 1, "maxItems": 4, "uniqueItems" : true, }
Ejemplos de validación de matrices:
//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.
Definición alternativa mediante la validación de tuplas:
{ "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
Objects
Los tipos de objetos admiten lo siguiente:
-
Restricciones de propiedad
-
properties
— Defina las propiedades (pares clave-valor) de un objeto mediante laproperties
palabra clave. El valor deproperties
es un objeto, donde cada clave es el nombre de una propiedad y cada valor es un esquema utilizado para validar esa propiedad. Estaproperties
palabra clave ignora cualquier propiedad que no coincida con ninguno de los nombres de propiedad de la palabra clave. -
required
— De forma predeterminada, las propiedades definidas por laproperties
palabra clave no son obligatorias. Sin embargo, puede proporcionar una lista de las propiedades obligatorias mediante larequired
palabra clave. Larequired
palabra clave toma una matriz de cero o más cadenas. Cada una de estas cadenas debe ser única. -
propertyNames
— Esta palabra clave permite controlar el RegEx patrón de los nombres de las propiedades. Por ejemplo, puede que desee exigir que todas las propiedades de un objeto tengan nombres que sigan una convención específica. -
patternProperties
— Esto asigna las expresiones regulares a los esquemas. Si el nombre de una propiedad coincide con la expresión regular dada, el valor de la propiedad debe validarse con el esquema correspondiente. Por ejemplo, se utilizapatternProperties
para especificar que un valor debe coincidir con un esquema concreto, dado un tipo concreto de nombre de propiedad. -
additionalProperties
— Esta palabra clave controla cómo se gestionan las propiedades adicionales. Las propiedades adicionales son propiedades cuyos nombres no aparecen en la palabra clave properties o que coinciden con alguna de las expresiones regulares que contienepatternProperties
. De forma predeterminada, se permiten propiedades adicionales. Si se establece este campo en,false
significa que no se permiten propiedades adicionales. -
unevaluatedProperties
— Esta palabra clave es similar,additionalProperties
excepto en que puede reconocer las propiedades declaradas en los subesquemas.unevaluatedProperties
funciona recopilando todas las propiedades que se hayan validado correctamente al procesar los esquemas y utilizarlas como lista de propiedades permitidas. Esto le permite hacer cosas más complejas, como añadir propiedades de forma condicional. Consulte el ejemplo siguiente para obtener más información.
-
-
anyOf
— El valor de esta palabra clave DEBE ser una matriz no vacía. Cada elemento de la matriz DEBE ser un esquema JSON válido. Una instancia se valida correctamente con esta palabra clave si se valida correctamente con al menos un esquema definido por el valor de esta palabra clave. -
oneOf
— El valor de esta palabra clave DEBE ser una matriz no vacía. Cada elemento de la matriz DEBE ser un esquema JSON válido. Una instancia se valida correctamente con esta palabra clave si se valida correctamente con exactamente un esquema definido por el valor de esta palabra clave.
Ejemplo de obligatorio:
{ "type": "object", "required": ["test"] } // Schema Compliant { "test": 4 } // NOT Schema Compliant {}
PropertyNames ejemplo:
{ "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 ejemplo:
{ "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 ejemplo:
{ "type": "object", "properties": { "test": { "type": "string" } }, "additionalProperties": false } // Schema Compliant { "test": "value" } OR {} // NOT Schema Compliant { "notAllowed": false }
UnevaluatedProperties ejemplo:
{ "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 ejemplo:
{ "anyOf": [ { "type": "string", "maxLength": 5 }, { "type": "number", "minimum": 0 } ] } // Schema Compliant "short" 12 // NOT Schema Compliant "too long" -5
OneOf ejemplo:
{ "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.
Definiciones de tipos de espacios de nombres
Las definiciones de tipos de espacios de nombres son tipos creados a partir de tipos primitivos. Estos tipos deben seguir el formato que
Managed Integrations proporciona tipos predefinidos en los namespace
.typename
.aws
espacios de nombres y. matter
Puede usar cualquier espacio de nombres para los tipos personalizados, excepto los espacios de nombres reservados y los espacios de nombres. aws
matter
Para encontrar las definiciones de tipos de espacios de nombres disponibles, usa la ListSchemaVersionsAPI con el filtro configurado en. Type
definition
Tipos de matter
Busque los tipos de datos en el espacio de matter
nombres mediante la ListSchemaVersionsAPI con el Namespace
filtro establecido en matter
y el Type
filtro establecido en. definition
Tipos de aws
Busque los tipos de datos en el espacio de aws
nombres mediante la ListSchemaVersionsAPI con el Namespace
filtro establecido en aws
y el Type
filtro establecido en. definition
Definición del tipo de mapa de bits
Los mapas de bits tienen dos propiedades obligatorias:
type
debe ser un objetoproperties
debe ser un objeto que contenga la definición de cada bit. Cada bit es un objeto con propiedadesextrinsicId
yvalue
. El valor de cada bit debe ser un número entero con un valor mínimo de 0 y un valor máximo de al menos 1.
Ejemplo de definición de mapa de bits:
{ "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 }
Definición de tipo de enumeración
Las enumeraciones requieren tres propiedades:
-
type
debe ser un objeto -
enum
debe ser una matriz de cadenas únicas, con un mínimo de un elemento -
extrinsicIdMap
es un objeto con propiedades que son los valores de enumeración. El valor de cada una de las propiedades debe ser el identificador extrínseco que corresponde al valor de enumeración.
Ejemplo de definición de enumeración:
{ "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"