{ "copyright": [ "Copyright 2025 EUROCONTROL", "==========================================", "Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:", "1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.", "2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer ", " in the documentation and/or other materials provided with the distribution.", "3. Neither the name of the copyright holder nor the names of its contributors may be used to", " endorse or promote products derived from this software without specific prior written permission.", "THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS-IS AND ANY EXPRESS OR IMPLIED WARRANTIES,", "INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.", "IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES", "(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)", "HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT", "(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.", "==========================================", "Editorial note: this license is an instance of the BSD license template as provided by the Open Source Initiative: http://opensource.org/licenses/BSD-3-Clause", "Details on EUROCONTROL: http://www.eurocontrol.int" ], "title": "Service Metadata Schema for service definitions", "description": "JSON Schema for service definitions based on the requirements from the EUROCONTROL SWIM Service Definition Specification (EUROCONTROL-SPEC-195) Ed. 1.0.", "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "https://raw.githubusercontent.com/eurocontrol-swim/service-metadata-schema/refs/heads/main/definition/v3.0/service-definition.schema.json", "type": "object", "additionalProperties": false, "required": [ "informationServiceDefinition" ], "properties": { "informationServiceDefinition": { "description": "This object holds the set of information elements useful to detail the service definition in question [SWIM-DEFN-010]", "$ref": "#/$defs/InformationService" } }, "$defs": { "InformationService": { "description": "The information service being defined. [SWIM-DEFN-010]", "type": "object", "unevaluatedProperties": false, "allOf": [ { "$ref": "https://raw.githubusercontent.com/eurocontrol-swim/service-metadata-schema/refs/heads/main/common/v1.0/common-types.schema.json#/$defs/BaseInformationService" } ], "required": [ "title", "referenceDate", "edition", "serviceAbstract", "serviceDefinitionProvider", "serviceCategorisation", "generalDescription", "informationDescription", "technicalDescription", "serviceInterface", "serviceIdentification" ], "properties": { "serviceIdentification": { "description": "Information for identifying the service being defined. [SWIM-DEFN-040]", "$ref": "#/$defs/ServiceIdentification" }, "serviceDefinitionProvider": { "description": "Description about who developed the service definition, when and how it is supported. [SWIM-DEFN-085]", "$ref": "#/$defs/ServiceDefinitionProvider" }, "serviceCategorisation": { "description": "A taxonomy used to classify a service by the type of service provided or by some other technological or architectural solution. [SWIM-DEFN-090, SWIM-DEFN-095, SWIM-DEFN-100, SWIM-DEFN-210]", "$ref": "#/$defs/ServiceCategorisation" }, "generalDescription": { "description": "A container for information about what the service provides, its purpose and under which conditions and quality levels it is provided. [SWIM-DEFN-130, SWIM-DEFN-140, SWIM-DEFN-150, SWIM-DEFN-180, SWIM-DEFN-185, SWIM-DEFN-200, SWIM-DEFN-330]", "$ref": "#/$defs/ServiceGeneralDescription" }, "technicalDescription": { "description": "A container for information about the security mechanisms, technical constraints and monitoring of the information service. [SWIM-DEFN-220, SWIM-DEFN-230]", "$ref": "#/$defs/ServiceTechnicalDescription" }, "references": { "description": "A container for references to documents describing specific aspects of the service instance. [SWIM-DEFN-010, SWIM-DEFN-120]", "$ref": "#/$defs/ServiceReferences" }, "serviceInterface": { "description": "The means by which the underlying capabilities of a service are accessed. [SWIM-DEFN-240, SWIM-DEFN-250, SWIM-DEFN-270, SWIM-DEFN-280, SWIM-DEFN-320]", "type": "array", "items": { "$ref": "#/$defs/ServiceInterfaceItem" }, "minItems": 1 } } }, "ServiceDefinitionProvider": { "description": "An entity (person or organization) that provides the Service Definition. [SWIM-DEFN-085]", "allOf": [ { "$ref": "https://raw.githubusercontent.com/eurocontrol-swim/service-metadata-schema/refs/heads/main/common/v1.0/common-types.schema.json#/$defs/ServiceProvider" }, { "properties": { "pointOfContact": { "description": "List of persons or groups within the organization, suitable for making a human contact for any purpose.", "type": "array", "items": { "$ref": "https://raw.githubusercontent.com/eurocontrol-swim/service-metadata-schema/refs/heads/main/common/v1.0/common-types.schema.json#/$defs/BasePointOfContact" }, "minItems": 1 } } } ], "unevaluatedProperties": false }, "SwimTIProfile": { "description": "The SWIM TI Profile that has been selected for the implementation of the service interface. [SWIM-DEFN-250]", "type": "object", "additionalProperties": false, "required": [ "name", "version" ], "properties": { "name": { "description": "The name of the SWIM TI Profile. [SWIM-DEFN-250]", "type": "string", "minLength": 1 }, "version": { "description": "The version of the SWIM TI Profile. [SWIM-DEFN-250]", "type": "string", "minLength": 1 }, "reference": { "description": "A optional reference to the SWIM TI Profile Specification.", "$ref": "https://raw.githubusercontent.com/eurocontrol-swim/service-metadata-schema/refs/heads/main/common/v1.0/common-types.schema.json#/$defs/Reference" } } }, "ServiceInterfaceItem": { "allOf": [ { "$ref": "https://raw.githubusercontent.com/eurocontrol-swim/service-metadata-schema/refs/heads/main/common/v1.0/common-types.schema.json#/$defs/ServiceInterface" }, { "type": "object", "properties": { "swimTIProfile": { "description": "The SWIM TI Profile that has been selected for the implementation of the service interface. [SWIM-DEFN-250]", "$ref": "#/$defs/SwimTIProfile" } }, "required": [ "name", "description", "provisionSide", "operations", "swimTIProfile" ] } ], "unevaluatedProperties": false }, "ServiceCategorisation": { "description": "A taxonomy used to classify a service by the type of service provided or by some other technological or architectural solution. [SWIM-SERV-090, SWIM-DEFN-095, SWIM-SERV-100, SWIM-SERV-110, SWIM-SERV-210]", "allOf": [ { "$ref": "https://raw.githubusercontent.com/eurocontrol-swim/service-metadata-schema/refs/heads/main/common/v1.0/common-types.schema.json#/$defs/ServiceCategorisation" }, { "type": "object", "properties": { "intendedProvider": { "description": "The types of service provider from which this service is intended to be provided. [SWIM-DEFN-095]", "type": "array", "items": { "$ref": "https://raw.githubusercontent.com/eurocontrol-swim/service-metadata-schema/refs/heads/main/common/v1.0/reference-code-types.schema.json#/$defs/CodeStakeholderType" }, "minItems": 1 } }, "required": [ "informationCategory", "applicationMessageExchangePattern" ] } ], "unevaluatedProperties": false }, "ServiceGeneralDescription": { "description": "Description of the service in terms of what it provides, the purpose and under which conditions and quality levels the service is provided. [SWIM-DEFN-130, SWIM-DEFN-140, SWIM-DEFN-150, SWIM-DEFN-160, SWIM-DEFN-180, SWIM-DEFN-185, SWIM-DEFN-200, SWIM-DEFN-330]", "allOf": [ { "$ref": "https://raw.githubusercontent.com/eurocontrol-swim/service-metadata-schema/refs/heads/main/common/v1.0/common-types.schema.json#/$defs/ServiceGeneralDescription" }, { "type": "object", "properties": { "validation": { "description": "Activity whereby a service is checked for conformance with the service objectives and requirements. [SWIM-DEFN-200]", "$ref": "#/$defs/ValidationOfService" } }, "required": [ "qualityOfData" ] } ], "unevaluatedProperties": false }, "ValidationOfService": { "description": "An activity whereby a service is checked for conformance with the service objectives and requirements. Here information about any service prototyping activities or a reference to where to find such information can be provided [SWIM-DEFN-200]", "type": "object", "additionalProperties": false, "properties": { "description": { "description": "Information about any service prototyping activity that has been performed [SWIM-DEFN-200]", "type": "string" }, "reference": { "$ref": "https://raw.githubusercontent.com/eurocontrol-swim/service-metadata-schema/refs/heads/main/common/v1.0/common-types.schema.json#/$defs/Reference" } }, "minProperties": 1 }, "ServiceReferences": { "description": "References to complementary documents that provide additional details about the service. [SWIM-DEFN-010, SWIM-DEFN-120]", "unevaluatedProperties": false, "allOf": [ { "$ref": "https://raw.githubusercontent.com/eurocontrol-swim/service-metadata-schema/refs/heads/main/common/v1.0/common-types.schema.json#/$defs/ServiceReferences" } ] }, "ServiceIdentification": { "description": "Information for identifying the service being defined. [SWIM-DEFN-040]", "unevaluatedProperties": false, "allOf": [ { "$ref": "https://raw.githubusercontent.com/eurocontrol-swim/service-metadata-schema/refs/heads/main/common/v1.0/common-types.schema.json#/$defs/ServiceIdentification" } ] }, "ServiceTechnicalDescription": { "description": "A container for information about the security mechanisms, technical constraints and monitoring of the information service. [SWIM-DEFN-220, SWIM-DEFN-230]", "unevaluatedProperties": false, "allOf": [ { "$ref": "https://raw.githubusercontent.com/eurocontrol-swim/service-metadata-schema/refs/heads/main/common/v1.0/common-types.schema.json#/$defs/ServiceTechnicalDescription" } ] } } }