Last active
November 22, 2022 14:19
-
-
Save scharf/8f9a3f9d007077ff7745935580ed0520 to your computer and use it in GitHub Desktop.
Annex F. JSON schema and complete example from https://www.plattform-i40.de/IP/Redaktion/DE/Downloads/Publikation/Details_of_the_Asset_Administration_Shell_Part1_V2.pdf?__blob=publicationFile&v=6 (p.232 ff)
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"$schema": "https://json-schema.org/draft/2019-09/schema", | |
"title": "AssetAdministrationShellEnvironment", | |
"$id": "http://www.admin-shell.io/schema/json/v2.0.1", | |
"type": "object", | |
"required": [ | |
"assetAdministrationShells", | |
"submodels", | |
"assets", | |
"conceptDescriptions" | |
], | |
"properties": { | |
"assetAdministrationShells": { | |
"type": "array", | |
"items": { | |
"$ref": "#/definitions/AssetAdministrationShell" | |
} | |
}, | |
"submodels": { | |
"type": "array", | |
"items": { | |
"$ref": "#/definitions/Submodel" | |
} | |
}, | |
"assets": { | |
"type": "array", | |
"items": { | |
"$ref": "#/definitions/Asset" | |
} | |
}, | |
"conceptDescriptions": { | |
"type": "array", | |
"items": { | |
"$ref": "#/definitions/ConceptDescription" | |
} | |
} | |
}, | |
"definitions": { | |
"Referable": { | |
"type": "object", | |
"properties": { | |
"idShort": { | |
"type": "string" | |
}, | |
"category": { | |
"type": "string" | |
}, | |
"description": { | |
"type": "array", | |
"items": { | |
"$ref": "#/definitions/LangString" | |
} | |
}, | |
"parent": { | |
"$ref": "#/definitions/Reference" | |
}, | |
"modelType": { | |
"$ref": "#/definitions/ModelType" | |
} | |
}, | |
"required": [ | |
"idShort", | |
"modelType" | |
] | |
}, | |
"Identifiable": { | |
"allOf": [ | |
{ | |
"$ref": "#/definitions/Referable" | |
}, | |
{ | |
"properties": { | |
"identification": { | |
"$ref": "#/definitions/Identifier" | |
}, | |
"administration": { | |
"$ref": "#/definitions/AdministrativeInformation" | |
} | |
}, | |
"required": [ | |
"identification" | |
] | |
} | |
] | |
}, | |
"Qualifiable": { | |
"type": "object", | |
"properties": { | |
"qualifiers": { | |
"type": "array", | |
"items": { | |
"$ref": "#/definitions/Constraint" | |
} | |
} | |
} | |
}, | |
"HasSemantics": { | |
"type": "object", | |
"properties": { | |
"semanticId": { | |
"$ref": "#/definitions/Reference" | |
} | |
} | |
}, | |
"HasDataSpecification": { | |
"type": "object", | |
"properties": { | |
"embeddedDataSpecifications": { | |
"type": "array", | |
"items": { | |
"$ref": "#/definitions/EmbeddedDataSpecification" | |
} | |
} | |
} | |
}, | |
"AssetAdministrationShell": { | |
"allOf": [ | |
{ | |
"$ref": "#/definitions/Identifiable" | |
}, | |
{ | |
"$ref": "#/definitions/HasDataSpecification" | |
}, | |
{ | |
"properties": { | |
"derivedFrom": { | |
"$ref": "#/definitions/Reference" | |
}, | |
"asset": { | |
"$ref": "#/definitions/Reference" | |
}, | |
"submodels": { | |
"type": "array", | |
"items": { | |
"$ref": "#/definitions/Reference" | |
} | |
}, | |
"views": { | |
"type": "array", | |
"items": { | |
"$ref": "#/definitions/View" | |
} | |
}, | |
"conceptDictionaries": { | |
"type": "array", | |
"items": { | |
"$ref": "#/definitions/ConceptDictionary" | |
} | |
}, | |
"security": { | |
"$ref": "#/definitions/Security" | |
} | |
}, | |
"required": [ | |
"asset" | |
] | |
} | |
] | |
}, | |
"Identifier": { | |
"type": "object", | |
"properties": { | |
"id": { | |
"type": "string" | |
}, | |
"idType": { | |
"$ref": "#/definitions/KeyType" | |
} | |
}, | |
"required": [ | |
"id", | |
"idType" | |
] | |
}, | |
"KeyType": { | |
"type": "string", | |
"enum": [ | |
"Custom", | |
"IRDI", | |
"IRI", | |
"IdShort", | |
"FragmentId" | |
] | |
}, | |
"AdministrativeInformation": { | |
"type": "object", | |
"properties": { | |
"version": { | |
"type": "string" | |
}, | |
"revision": { | |
"type": "string" | |
} | |
} | |
}, | |
"LangString": { | |
"type": "object", | |
"properties": { | |
"language": { | |
"type": "string" | |
}, | |
"text": { | |
"type": "string" | |
} | |
}, | |
"required": [ | |
"language", | |
"text" | |
] | |
}, | |
"Reference": { | |
"type": "object", | |
"properties": { | |
"keys": { | |
"type": "array", | |
"items": { | |
"$ref": "#/definitions/Key" | |
} | |
} | |
}, | |
"required": [ | |
"keys" | |
] | |
}, | |
"Key": { | |
"type": "object", | |
"properties": { | |
"type": { | |
"$ref": "#/definitions/KeyElements" | |
}, | |
"idType": { | |
"$ref": "#/definitions/KeyType" | |
}, | |
"value": { | |
"type": "string" | |
}, | |
"local": { | |
"type": "boolean" | |
} | |
}, | |
"required": [ | |
"type", | |
"idType", | |
"value", | |
"local" | |
] | |
}, | |
"KeyElements": { | |
"type": "string", | |
"enum": [ | |
"Asset", | |
"AssetAdministrationShell", | |
"ConceptDescription", | |
"Submodel", | |
"AccessPermissionRule", | |
"AnnotatedRelationshipElement", | |
"BasicEvent", | |
"Blob", | |
"Capability", | |
"ConceptDictionary", | |
"DataElement", | |
"File", | |
"Entity", | |
"Event", | |
"MultiLanguageProperty", | |
"Operation", | |
"Property", | |
"Range", | |
"ReferenceElement", | |
"RelationshipElement", | |
"SubmodelElement", | |
"SubmodelElementCollection", | |
"View", | |
"GlobalReference", | |
"FragmentReference" | |
] | |
}, | |
"ModelTypes": { | |
"type": "string", | |
"enum": [ | |
"Asset", | |
"AssetAdministrationShell", | |
"ConceptDescription", | |
"Submodel", | |
"AccessPermissionRule", | |
"AnnotatedRelationshipElement", | |
"BasicEvent", | |
"Blob", | |
"Capability", | |
"ConceptDictionary", | |
"DataElement", | |
"File", | |
"Entity", | |
"Event", | |
"MultiLanguageProperty", | |
"Operation", | |
"Property", | |
"Range", | |
"ReferenceElement", | |
"RelationshipElement", | |
"SubmodelElement", | |
"SubmodelElementCollection", | |
"View", | |
"GlobalReference", | |
"FragmentReference", | |
"Constraint", | |
"Formula", | |
"Qualifier" | |
] | |
}, | |
"ModelType": { | |
"type": "object", | |
"properties": { | |
"name": { | |
"$ref": "#/definitions/ModelTypes" | |
} | |
}, | |
"required": [ | |
"name" | |
] | |
}, | |
"EmbeddedDataSpecification": { | |
"type": "object", | |
"properties": { | |
"dataSpecification": { | |
"$ref": "#/definitions/Reference" | |
}, | |
"dataSpecificationContent": { | |
"$ref": "#/definitions/DataSpecificationContent" | |
} | |
}, | |
"required": [ | |
"dataSpecification", | |
"dataSpecificationContent" | |
] | |
}, | |
"DataSpecificationContent": { | |
"oneOf": [ | |
{ | |
"$ref": "#/definitions/DataSpecificationIEC61360Content" | |
}, | |
{ | |
"$ref": "#/definitions/DataSpecificationPhysicalUnitContent" | |
} | |
] | |
}, | |
"DataSpecificationPhysicalUnitContent": { | |
"type": "object", | |
"properties": { | |
"unitName": { | |
"type": "string" | |
}, | |
"unitSymbol": { | |
"type": "string" | |
}, | |
"definition": { | |
"type": "array", | |
"items": { | |
"$ref": "#/definitions/LangString" | |
} | |
}, | |
"siNotation": { | |
"type": "string" | |
}, | |
"siName": { | |
"type": "string" | |
}, | |
"dinNotation": { | |
"type": "string" | |
}, | |
"eceName": { | |
"type": "string" | |
}, | |
"eceCode": { | |
"type": "string" | |
}, | |
"nistName": { | |
"type": "string" | |
}, | |
"sourceOfDefinition": { | |
"type": "string" | |
}, | |
"conversionFactor": { | |
"type": "string" | |
}, | |
"registrationAuthorityId": { | |
"type": "string" | |
}, | |
"supplier": { | |
"type": "string" | |
} | |
}, | |
"required": [ | |
"unitName", | |
"unitSymbol", | |
"definition" | |
] | |
}, | |
"DataSpecificationIEC61360Content": { | |
"allOf": [ | |
{ | |
"$ref": "#/definitions/ValueObject" | |
}, | |
{ | |
"type": "object", | |
"properties": { | |
"dataType": { | |
"enum": [ | |
"DATE", | |
"STRING", | |
"STRING_TRANSLATABLE", | |
"REAL_MEASURE", | |
"REAL_COUNT", | |
"REAL_CURRENCY", | |
"BOOLEAN", | |
"URL", | |
"RATIONAL", | |
"RATIONAL_MEASURE", | |
"TIME", | |
"TIMESTAMP", | |
"INTEGER_COUNT", | |
"INTEGER_MEASURE", | |
"INTEGER_CURRENCY" | |
] | |
}, | |
"definition": { | |
"type": "array", | |
"items": { | |
"$ref": "#/definitions/LangString" | |
} | |
}, | |
"preferredName": { | |
"type": "array", | |
"items": { | |
"$ref": "#/definitions/LangString" | |
} | |
}, | |
"shortName": { | |
"type": "array", | |
"items": { | |
"$ref": "#/definitions/LangString" | |
} | |
}, | |
"sourceOfDefinition": { | |
"type": "string" | |
}, | |
"symbol": { | |
"type": "string" | |
}, | |
"unit": { | |
"type": "string" | |
}, | |
"unitId": { | |
"$ref": "#/definitions/Reference" | |
}, | |
"valueFormat": { | |
"type": "string" | |
}, | |
"valueList": { | |
"$ref": "#/definitions/ValueList" | |
}, | |
"levelType": { | |
"type": "array", | |
"items": { | |
"$ref": "#/definitions/LevelType" | |
} | |
} | |
}, | |
"required": [ | |
"preferredName" | |
] | |
} | |
] | |
}, | |
"LevelType": { | |
"type": "string", | |
"enum": [ | |
"Min", | |
"Max", | |
"Nom", | |
"Typ" | |
] | |
}, | |
"ValueList": { | |
"type": "object", | |
"properties": { | |
"valueReferencePairTypes": { | |
"type": "array", | |
"minItems":1, | |
"items": { | |
"$ref": "#/definitions/ValueReferencePairType" | |
} | |
} | |
}, | |
"required": [ | |
"valueReferencePairTypes" | |
] | |
}, | |
"ValueReferencePairType": { | |
"allOf": [ | |
{ | |
"$ref": "#/definitions/ValueObject" | |
} | |
] | |
}, | |
"ValueObject": { | |
"type": "object", | |
"properties": { | |
"value": { | |
"type": "string" | |
}, | |
"valueId": { | |
"$ref": "#/definitions/Reference" | |
}, | |
"valueType": { | |
"type": "string", | |
"enum": [ | |
"anyUri", | |
"base64Binary", | |
"boolean", | |
"date", | |
"dateTime", | |
"dateTimeStamp", | |
"decimal", | |
"integer", | |
"long", | |
"int", | |
"short", | |
"byte", | |
"nonNegativeInteger", | |
"positiveInteger", | |
"unsignedLong", | |
"unsignedInt", | |
"unsignedShort", | |
"unsignedByte", | |
"nonPositiveInteger", | |
"negativeInteger", | |
"double", | |
"duration", | |
"dayTimeDuration", | |
"yearMonthDuration", | |
"float", | |
"gDay", | |
"gMonth", | |
"gMonthDay", | |
"gYear", | |
"gYearMonth", | |
"hexBinary", | |
"NOTATION", | |
"QName", | |
"string", | |
"normalizedString", | |
"token", | |
"language", | |
"Name", | |
"NCName", | |
"ENTITY", | |
"ID", | |
"IDREF", | |
"NMTOKEN", | |
"time" | |
] | |
} | |
} | |
}, | |
"Asset": { | |
"allOf": [ | |
{ | |
"$ref": "#/definitions/Identifiable" | |
}, | |
{ | |
"$ref": "#/definitions/HasDataSpecification" | |
}, | |
{ | |
"properties": { | |
"kind": { | |
"$ref": "#/definitions/AssetKind" | |
}, | |
"assetIdentificationModel": { | |
"$ref": "#/definitions/Reference" | |
}, | |
"billOfMaterial": { | |
"$ref": "#/definitions/Reference" | |
} | |
}, | |
"required": [ | |
"kind" | |
] | |
} | |
] | |
}, | |
"AssetKind": { | |
"type": "string", | |
"enum": [ | |
"Type", | |
"Instance" | |
] | |
}, | |
"ModelingKind": { | |
"type": "string", | |
"enum": [ | |
"Template", | |
"Instance" | |
] | |
}, | |
"Submodel": { | |
"allOf": [ | |
{ | |
"$ref": "#/definitions/Identifiable" | |
}, | |
{ | |
"$ref": "#/definitions/HasDataSpecification" | |
}, | |
{ | |
"$ref": "#/definitions/Qualifiable" | |
}, | |
{ | |
"$ref": "#/definitions/HasSemantics" | |
}, | |
{ | |
"properties": { | |
"kind": { | |
"$ref": "#/definitions/ModelingKind" | |
}, | |
"submodelElements": { | |
"type": "array", | |
"items": { | |
"$ref": "#/definitions/SubmodelElement" | |
} | |
} | |
} | |
} | |
] | |
}, | |
"Constraint": { | |
"type": "object", | |
"properties": { | |
"modelType": { | |
"$ref": "#/definitions/ModelType" | |
} | |
}, | |
"required": [ | |
"modelType" | |
] | |
}, | |
"Operation": { | |
"allOf": [ | |
{ | |
"$ref": "#/definitions/SubmodelElement" | |
}, | |
{ | |
"properties": { | |
"inputVariable": { | |
"type": "array", | |
"items": { | |
"$ref": "#/definitions/OperationVariable" | |
} | |
}, | |
"outputVariable": { | |
"type": "array", | |
"items": { | |
"$ref": "#/definitions/OperationVariable" | |
} | |
}, | |
"inoutputVariable": { | |
"type": "array", | |
"items": { | |
"$ref": "#/definitions/OperationVariable" | |
} | |
} | |
} | |
} | |
] | |
}, | |
"OperationVariable": { | |
"type": "object", | |
"properties": { | |
"value": { | |
"oneOf": [ | |
{ | |
"$ref": "#/definitions/Blob" | |
}, | |
{ | |
"$ref": "#/definitions/File" | |
}, | |
{ | |
"$ref": "#/definitions/Capability" | |
}, | |
{ | |
"$ref": "#/definitions/Entity" | |
}, | |
{ | |
"$ref": "#/definitions/Event" | |
}, | |
{ | |
"$ref": "#/definitions/BasicEvent" | |
}, | |
{ | |
"$ref": "#/definitions/MultiLanguageProperty" | |
}, | |
{ | |
"$ref": "#/definitions/Operation" | |
}, | |
{ | |
"$ref": "#/definitions/Property" | |
}, | |
{ | |
"$ref": "#/definitions/Range" | |
}, | |
{ | |
"$ref": "#/definitions/ReferenceElement" | |
}, | |
{ | |
"$ref": "#/definitions/RelationshipElement" | |
}, | |
{ | |
"$ref": "#/definitions/SubmodelElementCollection" | |
} | |
] | |
} | |
}, | |
"required": [ | |
"value" | |
] | |
}, | |
"SubmodelElement": { | |
"allOf": [ | |
{ | |
"$ref": "#/definitions/Referable" | |
}, | |
{ | |
"$ref": "#/definitions/HasDataSpecification" | |
}, | |
{ | |
"$ref": "#/definitions/HasSemantics" | |
}, | |
{ | |
"$ref": "#/definitions/Qualifiable" | |
}, | |
{ | |
"properties": { | |
"kind": { | |
"$ref": "#/definitions/ModelingKind" | |
} | |
} | |
} | |
] | |
}, | |
"Event": { | |
"allOf": [ | |
{ | |
"$ref": "#/definitions/SubmodelElement" | |
} | |
] | |
}, | |
"BasicEvent": { | |
"allOf": [ | |
{ | |
"$ref": "#/definitions/Event" | |
}, | |
{ | |
"properties": { | |
"observed": { | |
"$ref": "#/definitions/Reference" | |
} | |
}, | |
"required": [ | |
"observed" | |
] | |
} | |
] | |
}, | |
"EntityType": { | |
"type": "string", | |
"enum": [ | |
"CoManagedEntity", | |
"SelfManagedEntity" | |
] | |
}, | |
"Entity": { | |
"allOf": [ | |
{ | |
"$ref": "#/definitions/SubmodelElement" | |
}, | |
{ | |
"properties": { | |
"statements": { | |
"type": "array", | |
"items": { | |
"$ref": "#/definitions/SubmodelElement" | |
} | |
}, | |
"entityType": { | |
"$ref": "#/definitions/EntityType" | |
}, | |
"asset": { | |
"$ref": "#/definitions/Reference" | |
} | |
}, | |
"required": [ | |
"entityType" | |
] | |
} | |
] | |
}, | |
"View": { | |
"allOf": [ | |
{ | |
"$ref": "#/definitions/Referable" | |
}, | |
{ | |
"$ref": "#/definitions/HasDataSpecification" | |
}, | |
{ | |
"$ref": "#/definitions/HasSemantics" | |
}, | |
{ | |
"properties": { | |
"containedElements": { | |
"type": "array", | |
"items": { | |
"$ref": "#/definitions/Reference" | |
} | |
} | |
} | |
} | |
] | |
}, | |
"ConceptDictionary": { | |
"allOf": [ | |
{ | |
"$ref": "#/definitions/Referable" | |
}, | |
{ | |
"$ref": "#/definitions/HasDataSpecification" | |
}, | |
{ | |
"properties": { | |
"conceptDescriptions": { | |
"type": "array", | |
"items": { | |
"$ref": "#/definitions/Reference" | |
} | |
} | |
} | |
} | |
] | |
}, | |
"ConceptDescription": { | |
"allOf": [ | |
{ | |
"$ref": "#/definitions/Identifiable" | |
}, | |
{ | |
"$ref": "#/definitions/HasDataSpecification" | |
}, | |
{ | |
"properties": { | |
"isCaseOf": { | |
"type": "array", | |
"items": { | |
"$ref": "#/definitions/Reference" | |
} | |
} | |
} | |
} | |
] | |
}, | |
"Capability": { | |
"allOf": [ | |
{ | |
"$ref": "#/definitions/SubmodelElement" | |
} | |
] | |
}, | |
"Property": { | |
"allOf": [ | |
{ | |
"$ref": "#/definitions/SubmodelElement" | |
}, | |
{ | |
"$ref": "#/definitions/ValueObject" | |
} | |
] | |
}, | |
"Range": { | |
"allOf": [ | |
{ | |
"$ref": "#/definitions/SubmodelElement" | |
}, | |
{ | |
"properties": { | |
"valueType": { | |
"type": "string", | |
"enum": [ | |
"anyUri", | |
"base64Binary", | |
"boolean", | |
"date", | |
"dateTime", | |
"dateTimeStamp", | |
"decimal", | |
"integer", | |
"long", | |
"int", | |
"short", | |
"byte", | |
"nonNegativeInteger", | |
"positiveInteger", | |
"unsignedLong", | |
"unsignedInt", | |
"unsignedShort", | |
"unsignedByte", | |
"nonPositiveInteger", | |
"negativeInteger", | |
"double", | |
"duration", | |
"dayTimeDuration", | |
"yearMonthDuration", | |
"float", | |
"gDay", | |
"gMonth", | |
"gMonthDay", | |
"gYear", | |
"gYearMonth", | |
"hexBinary", | |
"NOTATION", | |
"QName", | |
"string", | |
"normalizedString", | |
"token", | |
"language", | |
"Name", | |
"NCName", | |
"ENTITY", | |
"ID", | |
"IDREF", | |
"NMTOKEN", | |
"time" | |
] | |
}, | |
"min": { | |
"type": "string" | |
}, | |
"max": { | |
"type": "string" | |
} | |
}, | |
"required": [ | |
"valueType" | |
] | |
} | |
] | |
}, | |
"MultiLanguageProperty": { | |
"allOf": [ | |
{ | |
"$ref": "#/definitions/SubmodelElement" | |
}, | |
{ | |
"properties": { | |
"value": { | |
"type": "array", | |
"items": { | |
"$ref": "#/definitions/LangString" | |
} | |
}, | |
"valueId": { | |
"$ref": "#/definitions/Reference" | |
} | |
} | |
} | |
] | |
}, | |
"File": { | |
"allOf": [ | |
{ | |
"$ref": "#/definitions/SubmodelElement" | |
}, | |
{ | |
"properties": { | |
"value": { | |
"type": "string" | |
}, | |
"mimeType": { | |
"type": "string" | |
} | |
}, | |
"required": [ | |
"mimeType" | |
] | |
} | |
] | |
}, | |
"Blob": { | |
"allOf": [ | |
{ | |
"$ref": "#/definitions/SubmodelElement" | |
}, | |
{ | |
"properties": { | |
"value": { | |
"type": "string" | |
}, | |
"mimeType": { | |
"type": "string" | |
} | |
}, | |
"required": [ | |
"mimeType" | |
] | |
} | |
] | |
}, | |
"ReferenceElement": { | |
"allOf": [ | |
{ | |
"$ref": "#/definitions/SubmodelElement" | |
}, | |
{ | |
"properties": { | |
"value": { | |
"$ref": "#/definitions/Reference" | |
} | |
} | |
} | |
] | |
}, | |
"SubmodelElementCollection": { | |
"allOf": [ | |
{ | |
"$ref": "#/definitions/SubmodelElement" | |
}, | |
{ | |
"properties": { | |
"value": { | |
"type": "array", | |
"items": { | |
"oneOf": [ | |
{ | |
"$ref": "#/definitions/Blob" | |
}, | |
{ | |
"$ref": "#/definitions/File" | |
}, | |
{ | |
"$ref": "#/definitions/Capability" | |
}, | |
{ | |
"$ref": "#/definitions/Entity" | |
}, | |
{ | |
"$ref": "#/definitions/Event" | |
}, | |
{ | |
"$ref": "#/definitions/BasicEvent" | |
}, | |
{ | |
"$ref": "#/definitions/MultiLanguageProperty" | |
}, | |
{ | |
"$ref": "#/definitions/Operation" | |
}, | |
{ | |
"$ref": "#/definitions/Property" | |
}, | |
{ | |
"$ref": "#/definitions/Range" | |
}, | |
{ | |
"$ref": "#/definitions/ReferenceElement" | |
}, | |
{ | |
"$ref": "#/definitions/RelationshipElement" | |
}, | |
{ | |
"$ref": "#/definitions/SubmodelElementCollection" | |
} | |
] | |
} | |
}, | |
"allowDuplicates": { | |
"type": "boolean" | |
}, | |
"ordered": { | |
"type": "boolean" | |
} | |
} | |
} | |
] | |
}, | |
"RelationshipElement": { | |
"allOf": [ | |
{ | |
"$ref": "#/definitions/SubmodelElement" | |
}, | |
{ | |
"properties": { | |
"first": { | |
"$ref": "#/definitions/Reference" | |
}, | |
"second": { | |
"$ref": "#/definitions/Reference" | |
} | |
}, | |
"required": [ | |
"first", | |
"second" | |
] | |
} | |
] | |
}, | |
"AnnotatedRelationshipElement": { | |
"allOf": [ | |
{ | |
"$ref": "#/definitions/RelationshipElement" | |
}, | |
{ | |
"properties": { | |
"annotation": { | |
"type": "array", | |
"items": { | |
"oneOf": [ | |
{ | |
"$ref": "#/definitions/Blob" | |
}, | |
{ | |
"$ref": "#/definitions/File" | |
}, | |
{ | |
"$ref": "#/definitions/MultiLanguageProperty" | |
}, | |
{ | |
"$ref": "#/definitions/Property" | |
}, | |
{ | |
"$ref": "#/definitions/Range" | |
}, | |
{ | |
"$ref": "#/definitions/ReferenceElement" | |
} | |
] | |
} | |
} | |
} | |
} | |
] | |
}, | |
"Qualifier": { | |
"allOf": [ | |
{ | |
"$ref": "#/definitions/Constraint" | |
}, | |
{ | |
"$ref": "#/definitions/HasSemantics" | |
}, | |
{ | |
"$ref": "#/definitions/ValueObject" | |
}, | |
{ | |
"properties": { | |
"type": { | |
"type": "string" | |
} | |
}, | |
"required": [ | |
"type" | |
] | |
} | |
] | |
}, | |
"Formula": { | |
"allOf": [ | |
{ | |
"$ref": "#/definitions/Constraint" | |
}, | |
{ | |
"properties": { | |
"dependsOn": { | |
"type": "array", | |
"items": { | |
"$ref": "#/definitions/Reference" | |
} | |
} | |
} | |
} | |
] | |
}, | |
"Security": { | |
"type": "object", | |
"properties": { | |
"accessControlPolicyPoints": { | |
"$ref": "#/definitions/AccessControlPolicyPoints" | |
}, | |
"certificate": { | |
"type": "array", | |
"items": { | |
"oneOf": [ | |
{ | |
"$ref": "#/definitions/BlobCertificate" | |
} | |
] | |
} | |
}, | |
"requiredCertificateExtension": { | |
"type": "array", | |
"items": { | |
"$ref": "#/definitions/Reference" | |
} | |
} | |
}, | |
"required": [ | |
"accessControlPolicyPoints" | |
] | |
}, | |
"Certificate": { | |
"type": "object" | |
}, | |
"BlobCertificate": { | |
"allOf": [ | |
{ | |
"$ref": "#/definitions/Certificate" | |
}, | |
{ | |
"properties": { | |
"blobCertificate": { | |
"$ref": "#/definitions/Blob" | |
}, | |
"containedExtension": { | |
"type": "array", | |
"items": { | |
"$ref": "#/definitions/Reference" | |
} | |
}, | |
"lastCertificate": { | |
"type": "boolean" | |
} | |
} | |
} | |
] | |
}, | |
"AccessControlPolicyPoints": { | |
"type": "object", | |
"properties": { | |
"policyAdministrationPoint": { | |
"$ref": "#/definitions/PolicyAdministrationPoint" | |
}, | |
"policyDecisionPoint": { | |
"$ref": "#/definitions/PolicyDecisionPoint" | |
}, | |
"policyEnforcementPoint": { | |
"$ref": "#/definitions/PolicyEnforcementPoint" | |
}, | |
"policyInformationPoints": { | |
"$ref": "#/definitions/PolicyInformationPoints" | |
} | |
}, | |
"required": [ | |
"policyAdministrationPoint", | |
"policyDecisionPoint", | |
"policyEnforcementPoint" | |
] | |
}, | |
"PolicyAdministrationPoint": { | |
"type": "object", | |
"properties": { | |
"localAccessControl": { | |
"$ref": "#/definitions/AccessControl" | |
}, | |
"externalAccessControl": { | |
"type": "boolean" | |
} | |
}, | |
"required": [ | |
"externalAccessControl" | |
] | |
}, | |
"PolicyInformationPoints": { | |
"type": "object", | |
"properties": { | |
"internalInformationPoint": { | |
"type": "array", | |
"items": { | |
"$ref": "#/definitions/Reference" | |
} | |
}, | |
"externalInformationPoint": { | |
"type": "boolean" | |
} | |
}, | |
"required": [ | |
"externalInformationPoint" | |
] | |
}, | |
"PolicyEnforcementPoint": { | |
"type": "object", | |
"properties": { | |
"externalPolicyEnforcementPoint": { | |
"type": "boolean" | |
} | |
}, | |
"required": [ | |
"externalPolicyEnforcementPoint" | |
] | |
}, | |
"PolicyDecisionPoint": { | |
"type": "object", | |
"properties": { | |
"externalPolicyDecisionPoints": { | |
"type": "boolean" | |
} | |
}, | |
"required": [ | |
"externalPolicyDecisionPoints" | |
] | |
}, | |
"AccessControl": { | |
"type": "object", | |
"properties": { | |
"selectableSubjectAttributes": { | |
"$ref": "#/definitions/Reference" | |
}, | |
"defaultSubjectAttributes": { | |
"$ref": "#/definitions/Reference" | |
}, | |
"selectablePermissions": { | |
"$ref": "#/definitions/Reference" | |
}, | |
"defaultPermissions": { | |
"$ref": "#/definitions/Reference" | |
}, | |
"selectableEnvironmentAttributes": { | |
"$ref": "#/definitions/Reference" | |
}, | |
"defaultEnvironmentAttributes": { | |
"$ref": "#/definitions/Reference" | |
}, | |
"accessPermissionRule": { | |
"type": "array", | |
"items": { | |
"$ref": "#/definitions/AccessPermissionRule" | |
} | |
} | |
} | |
}, | |
"AccessPermissionRule": { | |
"allOf": [ | |
{ | |
"$ref": "#/definitions/Referable" | |
}, | |
{ | |
"$ref": "#/definitions/Qualifiable" | |
}, | |
{ | |
"properties": { | |
"targetSubjectAttributes": { | |
"type": "array", | |
"items": { | |
"$ref": "#/definitions/SubjectAttributes" | |
}, | |
"minItems":1 | |
}, | |
"permissionsPerObject": { | |
"type": "array", | |
"items": { | |
"$ref": "#/definitions/PermissionsPerObject" | |
} | |
} | |
}, | |
"required": [ | |
"targetSubjectAttributes" | |
] | |
} | |
] | |
}, | |
"SubjectAttributes": { | |
"type": "object", | |
"properties": { | |
"subjectAttributes": { | |
"type": "array", | |
"items": { | |
"$ref": "#/definitions/Reference" | |
}, | |
"minItems":1 | |
} | |
} | |
}, | |
"PermissionsPerObject": { | |
"type": "object", | |
"properties": { | |
"object": { | |
"$ref": "#/definitions/Reference" | |
}, | |
"targetObjectAttributes": { | |
"$ref": "#/definitions/ObjectAttributes" | |
}, | |
"permission": { | |
"type": "array", | |
"items": { | |
"$ref": "#/definitions/Permission" | |
} | |
} | |
} | |
}, | |
"ObjectAttributes": { | |
"type": "object", | |
"properties": { | |
"objectAttribute": { | |
"type": "array", | |
"items": { | |
"$ref": "#/definitions/Property" | |
}, | |
"minItems":1 | |
} | |
} | |
}, | |
"Permission": { | |
"type": "object", | |
"properties": { | |
"permission": { | |
"$ref": "#/definitions/Reference" | |
}, | |
"kindOfPermission": { | |
"type": "string", | |
"enum": [ | |
"Allow", | |
"Deny", | |
"NotApplicable", | |
"Undefined" | |
] | |
} | |
}, | |
"required": [ | |
"permission", | |
"kindOfPermission" | |
] | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment