Para facilitar a identificação de elementos que representam listas de valores e outros elementos, sugere-se adotar o padrão “ListOf”+”nome singular” e não o plural do elemento repetido.

Exemplo:

  • ListOfItem (e não Itens);
  • ListOfSourceDocument (e não SourceDocuments ou SourcesDocuments);
  • ListOfQuotation (e não Quotations).

A declaração do elemento de lista no JsonSchema deve respeitar os padrões descritos abaixo e como exemplificado na mensagem MaintenanceOrder_1_002.json:

Trecho de MaintenanceOrder_1_002.json
"definitions": {
	"BusinessContentType": {
		"type": "object",
		"properties": {


			...


			"ListOfMaintenanceOrderItem": {
                "description": "Lista de Itens da Ordem de Manutenção",
                "type": "array",
                "items": {
                    "$ref": "#/definitions/MaintenanceOrderItemType",
                    "type": "object"
                }
           	},
			
			...


		}
	},
	
	...


	"MaintenanceOrderItemType": {
            "type": "object",
            "properties": {
                "Event": {
                    "description": "Operação a ser executada no registro. / Upsert - Alterar/Incluir / Delete - Excluir",
                    "type": "string",
                    "enum": [
                        "Upsert",
                        "Delete"
                    ]
                },
                "Code": {
                    "description": "Código do item da Ordem de Manutenção",
                    "type": "integer",
                    "format": "int32"
                },


				...




			}


			...


		}


		...


	}


	...


}


No local onde se queira incluir uma lista, deve-se adicionar um elemento com o nome ListOf + “elemento a repetir”, exemplo: ListOfMaintenanceOrderItem. Este elemento define por si só a tag "ListOfMaintenanceOrderItem" e a tag que irá se repetir "MaintenanceOrderItem".

O complexType "MaintenanceOrderItemType" define a estrutura do elemento que irá se repetir, ou seja, quais tags o JsonSchema da lista irá conter. No caso da MaintenanceOrder_1_002.json, são compostos por todos os elementos evidenciados no exemplo abaixo:

 

Trecho da MaintenanceOrder_1_002.json
...


"MaintenanceOrderItemType": {
            "type": "object",
            "properties": {
                "Event": {
                    "description": "Operação a ser executada no registro. / Upsert - Alterar/Incluir / Delete - Excluir",
                    "type": "string",
                    "enum": [
                        "Upsert",
                        "Delete"
                    ]
                },
                "Code": {
                    "description": "Código do item da Ordem de Manutenção",
                    "type": "integer",
                    "format": "int32"
                },
                "InternalId": {
                    "description": "InternalId do item da Ordem de Manutenção",
                    "type": "string"
                },
                "ItemInternalId": {
                    "description": "Id de integração do Produto",
                    "type": "string"
                },
                "ItemReferenceCode": {
                    "description": "Código de Referência do Produto",
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 20
                },
                "UnitPrice": {
                    "description": "Preço Unitário",
                    "type": "number",
                    "multipleOf": 0.01,
                    "minimum": -9999999999.99,
                    "maximum": 9999999999.99
                },
                "TotalPrice": {
                    "description": "Preço Total do Item",
                    "type": "number",
                    "multipleOf": 0.01,
                    "minimum": -9999999999.99,
                    "maximum": 9999999999.99
                },
                "Quantity": {
                    "description": "Quantidade",
                    "type": "number",
                    "multipleOf": 0.01,
                    "minimum": -9999999999.99,
                    "maximum": 9999999999.99
                },
                "UnitOfMeasureInternalId": {
                    "description": "Id de integração da Unidade de Medida",
                    "type": "string"
                },
                "WarehouseInternalId": {
                    "description": "Id de integração do Local de Estoque(Armazem)",
                    "type": "string"
                },
                "InitialDateTime": {
                    "description": "Data de Inicio do item",
                    "type": "string",
                    "format": "date-time"
                },
                "FinalDateTime": {
                    "description": "Data de Término do item",
                    "type": "string",
                    "format": "date-time"
                },
                "ProjectInternalId": {
                    "description": "Id de integração do Projeto",
                    "type": "string"
                },
                "TaskInternalId": {
                    "description": "Id de integração da Tarefa",
                    "type": "string"
                },
                "Observation": {
                    "description": "Observação",
                    "type": "string"
                },
                "ListOfApportionMaintenanceOrderItem": {
                    "description": "Rateio dos Itens da Ordem de Manutenção",
                    "type": "array",
                    "items": {
                        "$ref": "https://raw.githubusercontent.com/totvs/ttalk-standard-message/master/jsonschema/schemas/types/ApportionType_1_000.json#/definitions/ApportionType",
                        "type": "object"
                    }
                }
            }
        },


...
  • Sem rótulos