{ "openapi": "3.0.1", "info": { "title": "TMF 638 Service Inventory Management", "description": "## TMF API Reference : TMF 638 - Service Inventory Management v4 Release 18.5 - Dec 2018 The intent of this API is to provide a consistent/standardized mechanism to query and manipulate the Service inventory. The Service Inventory API can be used to query the service instances for a customer via Self Service Portal or the Call Centre operator can query the service instances on behalf of the customer while a customer may have a complaint or a query. Note: Only the CustomerFacingServices instances will be presented to the customer. The Service Inventory API can be called by the Service Order Management to create a new service instance/ update an existing service instance in the Service Inventory. ### Service resource Service is an abstract base class for defining the Service hierarchy. All Services are characterized as either being possibly visible and usable by a Customer or not. This gives rise to the two subclasses of Service: CustomerFacingService and ResourceFacingService. ### Service Inventory API performs the following operations on service : - Retrieve a service or a collection of services depending on filter criteria - Partial update of a service (including updating rules) - Create a service (including default values and creation rules and for administration users only) - Delete a service (for administration users only) - Notification of events on service Copyright (c)TM Forum 2018. All Rights Reserved.", "license": { "name": "Apache 2.0", "url": "https://osl.etsi.org" }, "version": "4.0.0" }, "externalDocs": { "description": "TMF API Tables", "url": "https://www.tmforum.org/oda/open-apis/table" }, "servers": [ { "url": "https://portal.openslice.eu/tmf-api", "description": "Generated server url" } ], "security": [ { "security_auth": [] } ], "tags": [ { "name": "listener", "description": "the listener API" }, { "name": "service", "description": "the service API" }, { "name": "hub", "description": "the hub API" } ], "paths": { "/serviceInventory/v4/service": { "get": { "tags": [ "service" ], "summary": "List or find Service objects", "description": "This operation list or find Service entities", "operationId": "listService", "parameters": [ { "name": "fields", "in": "query", "description": "Comma-separated properties to be provided in response", "required": false, "schema": { "type": "string" } }, { "name": "offset", "in": "query", "description": "Requested index for start of resources to be provided in response", "required": false, "schema": { "type": "integer", "format": "int32" } }, { "name": "limit", "in": "query", "description": "Requested number of resources to be provided in response", "required": false, "schema": { "type": "integer", "format": "int32" } } ], "responses": { "500": { "description": "Internal Server Error", "content": { "application/json;charset=utf-8": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/Service" } } } } }, "409": { "description": "Conflict", "content": { "application/json;charset=utf-8": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/Service" } } } } }, "404": { "description": "Not Found", "content": { "application/json;charset=utf-8": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/Service" } } } } }, "403": { "description": "Forbidden", "content": { "application/json;charset=utf-8": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/Service" } } } } }, "400": { "description": "Bad Request", "content": { "application/json;charset=utf-8": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/Service" } } } } }, "405": { "description": "Method Not allowed", "content": { "application/json;charset=utf-8": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/Service" } } } } }, "200": { "description": "Success", "content": { "application/json;charset=utf-8": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/Service" } } } } }, "401": { "description": "Unauthorized", "content": { "application/json;charset=utf-8": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/Service" } } } } } } }, "post": { "tags": [ "service" ], "summary": "Creates a Service", "description": "This operation creates a Service entity.", "operationId": "createService", "requestBody": { "content": { "application/json;charset=utf-8": { "schema": { "$ref": "#/components/schemas/ServiceCreate" } } }, "required": true }, "responses": { "500": { "description": "Internal Server Error", "content": { "application/json;charset=utf-8": { "schema": { "$ref": "#/components/schemas/Service" } } } }, "409": { "description": "Conflict", "content": { "application/json;charset=utf-8": { "schema": { "$ref": "#/components/schemas/Service" } } } }, "403": { "description": "Forbidden", "content": { "application/json;charset=utf-8": { "schema": { "$ref": "#/components/schemas/Service" } } } }, "400": { "description": "Created", "content": { "application/json;charset=utf-8": { "schema": { "$ref": "#/components/schemas/Service" } } } }, "405": { "description": "Method Not allowed", "content": { "application/json;charset=utf-8": { "schema": { "$ref": "#/components/schemas/Service" } } } }, "401": { "description": "Unauthorized", "content": { "application/json;charset=utf-8": { "schema": { "$ref": "#/components/schemas/Service" } } } } } } }, "/serviceInventory/v4/listener/serviceStateChangeNotification": { "post": { "tags": [ "listener", "notification listeners (client side)" ], "summary": "Client listener for entity ServiceStateChangeNotification", "description": "Example of a client listener for receiving the notification ServiceStateChangeNotification", "operationId": "listenToServiceStateChangeNotification", "requestBody": { "content": { "application/json;charset=utf-8": { "schema": { "$ref": "#/components/schemas/ServiceStateChangeNotification" } } }, "required": true }, "responses": { "500": { "description": "Internal Server Error", "content": { "application/json;charset=utf-8": { "schema": { "$ref": "#/components/schemas/EventSubscription" } } } }, "400": { "description": "Bad Request", "content": { "application/json;charset=utf-8": { "schema": { "$ref": "#/components/schemas/EventSubscription" } } } }, "409": { "description": "Conflict", "content": { "application/json;charset=utf-8": { "schema": { "$ref": "#/components/schemas/EventSubscription" } } } }, "404": { "description": "Not Found", "content": { "application/json;charset=utf-8": { "schema": { "$ref": "#/components/schemas/EventSubscription" } } } }, "403": { "description": "Forbidden", "content": { "application/json;charset=utf-8": { "schema": { "$ref": "#/components/schemas/EventSubscription" } } } }, "405": { "description": "Method Not allowed", "content": { "application/json;charset=utf-8": { "schema": { "$ref": "#/components/schemas/EventSubscription" } } } }, "401": { "description": "Unauthorized", "content": { "application/json;charset=utf-8": { "schema": { "$ref": "#/components/schemas/EventSubscription" } } } } } } }, "/serviceInventory/v4/listener/serviceDeleteNotification": { "post": { "tags": [ "listener", "notification listeners (client side)" ], "summary": "Client listener for entity ServiceDeleteNotification", "description": "Example of a client listener for receiving the notification ServiceDeleteNotification", "operationId": "listenToServiceDeleteNotification", "requestBody": { "content": { "application/json;charset=utf-8": { "schema": { "$ref": "#/components/schemas/ServiceDeleteNotification" } } }, "required": true }, "responses": { "500": { "description": "Internal Server Error", "content": { "application/json;charset=utf-8": { "schema": { "$ref": "#/components/schemas/EventSubscription" } } } }, "400": { "description": "Bad Request", "content": { "application/json;charset=utf-8": { "schema": { "$ref": "#/components/schemas/EventSubscription" } } } }, "409": { "description": "Conflict", "content": { "application/json;charset=utf-8": { "schema": { "$ref": "#/components/schemas/EventSubscription" } } } }, "404": { "description": "Not Found", "content": { "application/json;charset=utf-8": { "schema": { "$ref": "#/components/schemas/EventSubscription" } } } }, "403": { "description": "Forbidden", "content": { "application/json;charset=utf-8": { "schema": { "$ref": "#/components/schemas/EventSubscription" } } } }, "405": { "description": "Method Not allowed", "content": { "application/json;charset=utf-8": { "schema": { "$ref": "#/components/schemas/EventSubscription" } } } }, "401": { "description": "Unauthorized", "content": { "application/json;charset=utf-8": { "schema": { "$ref": "#/components/schemas/EventSubscription" } } } } } } }, "/serviceInventory/v4/listener/serviceCreateNotification": { "post": { "tags": [ "listener", "notification listeners (client side)" ], "summary": "Client listener for entity ServiceCreateNotification", "description": "Example of a client listener for receiving the notification ServiceCreateNotification", "operationId": "listenToServiceCreateNotification", "requestBody": { "content": { "application/json;charset=utf-8": { "schema": { "$ref": "#/components/schemas/ServiceCreateNotification" } } }, "required": true }, "responses": { "500": { "description": "Internal Server Error", "content": { "application/json;charset=utf-8": { "schema": { "$ref": "#/components/schemas/EventSubscription" } } } }, "400": { "description": "Bad Request", "content": { "application/json;charset=utf-8": { "schema": { "$ref": "#/components/schemas/EventSubscription" } } } }, "409": { "description": "Conflict", "content": { "application/json;charset=utf-8": { "schema": { "$ref": "#/components/schemas/EventSubscription" } } } }, "404": { "description": "Not Found", "content": { "application/json;charset=utf-8": { "schema": { "$ref": "#/components/schemas/EventSubscription" } } } }, "403": { "description": "Forbidden", "content": { "application/json;charset=utf-8": { "schema": { "$ref": "#/components/schemas/EventSubscription" } } } }, "405": { "description": "Method Not allowed", "content": { "application/json;charset=utf-8": { "schema": { "$ref": "#/components/schemas/EventSubscription" } } } }, "401": { "description": "Unauthorized", "content": { "application/json;charset=utf-8": { "schema": { "$ref": "#/components/schemas/EventSubscription" } } } } } } }, "/serviceInventory/v4/listener/serviceBatchNotification": { "post": { "tags": [ "listener", "notification listeners (client side)" ], "summary": "Client listener for entity ServiceBatchNotification", "description": "Example of a client listener for receiving the notification ServiceBatchNotification", "operationId": "listenToServiceBatchNotification", "requestBody": { "content": { "application/json;charset=utf-8": { "schema": { "$ref": "#/components/schemas/ServiceBatchNotification" } } }, "required": true }, "responses": { "500": { "description": "Internal Server Error", "content": { "application/json;charset=utf-8": { "schema": { "$ref": "#/components/schemas/EventSubscription" } } } }, "400": { "description": "Bad Request", "content": { "application/json;charset=utf-8": { "schema": { "$ref": "#/components/schemas/EventSubscription" } } } }, "409": { "description": "Conflict", "content": { "application/json;charset=utf-8": { "schema": { "$ref": "#/components/schemas/EventSubscription" } } } }, "404": { "description": "Not Found", "content": { "application/json;charset=utf-8": { "schema": { "$ref": "#/components/schemas/EventSubscription" } } } }, "403": { "description": "Forbidden", "content": { "application/json;charset=utf-8": { "schema": { "$ref": "#/components/schemas/EventSubscription" } } } }, "405": { "description": "Method Not allowed", "content": { "application/json;charset=utf-8": { "schema": { "$ref": "#/components/schemas/EventSubscription" } } } }, "401": { "description": "Unauthorized", "content": { "application/json;charset=utf-8": { "schema": { "$ref": "#/components/schemas/EventSubscription" } } } } } } }, "/serviceInventory/v4/listener/serviceAttributeValueChangeNotification": { "post": { "tags": [ "listener", "notification listeners (client side)" ], "summary": "Client listener for entity ServiceAttributeValueChangeNotification", "description": "Example of a client listener for receiving the notification ServiceAttributeValueChangeNotification", "operationId": "listenToServiceAttributeValueChangeNotification", "requestBody": { "content": { "application/json;charset=utf-8": { "schema": { "$ref": "#/components/schemas/ServiceAttributeValueChangeNotification" } } }, "required": true }, "responses": { "500": { "description": "Internal Server Error", "content": { "application/json;charset=utf-8": { "schema": { "$ref": "#/components/schemas/EventSubscription" } } } }, "400": { "description": "Bad Request", "content": { "application/json;charset=utf-8": { "schema": { "$ref": "#/components/schemas/EventSubscription" } } } }, "409": { "description": "Conflict", "content": { "application/json;charset=utf-8": { "schema": { "$ref": "#/components/schemas/EventSubscription" } } } }, "404": { "description": "Not Found", "content": { "application/json;charset=utf-8": { "schema": { "$ref": "#/components/schemas/EventSubscription" } } } }, "403": { "description": "Forbidden", "content": { "application/json;charset=utf-8": { "schema": { "$ref": "#/components/schemas/EventSubscription" } } } }, "405": { "description": "Method Not allowed", "content": { "application/json;charset=utf-8": { "schema": { "$ref": "#/components/schemas/EventSubscription" } } } }, "401": { "description": "Unauthorized", "content": { "application/json;charset=utf-8": { "schema": { "$ref": "#/components/schemas/EventSubscription" } } } } } } }, "/serviceInventory/v4/hub": { "post": { "tags": [ "hub", "events subscription" ], "summary": "Register a listener", "description": "Sets the communication endpoint address the service instance must use to deliver information about its health state, execution state, failures and metrics.", "operationId": "registerListener", "requestBody": { "content": { "application/json;charset=utf-8": { "schema": { "$ref": "#/components/schemas/EventSubscriptionInput" } } }, "required": true }, "responses": { "500": { "description": "Internal Server Error", "content": { "application/json;charset=utf-8": { "schema": { "$ref": "#/components/schemas/EventSubscription" } } } }, "409": { "description": "Conflict", "content": { "application/json;charset=utf-8": { "schema": { "$ref": "#/components/schemas/EventSubscription" } } } }, "404": { "description": "Not Found", "content": { "application/json;charset=utf-8": { "schema": { "$ref": "#/components/schemas/EventSubscription" } } } }, "403": { "description": "Forbidden", "content": { "application/json;charset=utf-8": { "schema": { "$ref": "#/components/schemas/EventSubscription" } } } }, "400": { "description": "Subscribed", "content": { "application/json;charset=utf-8": { "schema": { "$ref": "#/components/schemas/EventSubscription" } } } }, "405": { "description": "Method Not allowed", "content": { "application/json;charset=utf-8": { "schema": { "$ref": "#/components/schemas/EventSubscription" } } } }, "401": { "description": "Unauthorized", "content": { "application/json;charset=utf-8": { "schema": { "$ref": "#/components/schemas/EventSubscription" } } } } } } }, "/serviceInventory/v4/service/{id}": { "get": { "tags": [ "service" ], "summary": "Retrieves a Service by ID", "description": "This operation retrieves a Service entity. Attribute selection is enabled for all first level attributes.", "operationId": "retrieveService", "parameters": [ { "name": "id", "in": "path", "description": "Identifier of the Service", "required": true, "schema": { "type": "string" } }, { "name": "fields", "in": "query", "description": "Comma-separated properties to provide in response", "required": false, "schema": { "type": "string" } } ], "responses": { "500": { "description": "Internal Server Error", "content": { "application/json;charset=utf-8": { "schema": { "$ref": "#/components/schemas/Service" } } } }, "409": { "description": "Conflict", "content": { "application/json;charset=utf-8": { "schema": { "$ref": "#/components/schemas/Service" } } } }, "404": { "description": "Not Found", "content": { "application/json;charset=utf-8": { "schema": { "$ref": "#/components/schemas/Service" } } } }, "403": { "description": "Forbidden", "content": { "application/json;charset=utf-8": { "schema": { "$ref": "#/components/schemas/Service" } } } }, "400": { "description": "Bad Request", "content": { "application/json;charset=utf-8": { "schema": { "$ref": "#/components/schemas/Service" } } } }, "405": { "description": "Method Not allowed", "content": { "application/json;charset=utf-8": { "schema": { "$ref": "#/components/schemas/Service" } } } }, "200": { "description": "Success", "content": { "application/json;charset=utf-8": { "schema": { "$ref": "#/components/schemas/Service" } } } }, "401": { "description": "Unauthorized", "content": { "application/json;charset=utf-8": { "schema": { "$ref": "#/components/schemas/Service" } } } } } }, "delete": { "tags": [ "service" ], "summary": "Deletes a Service", "description": "This operation deletes a Service entity.", "operationId": "deleteService", "parameters": [ { "name": "id", "in": "path", "description": "Identifier of the Service", "required": true, "schema": { "type": "string" } } ], "responses": { "500": { "description": "Internal Server Error" }, "204": { "description": "Deleted" }, "409": { "description": "Conflict" }, "404": { "description": "Not Found" }, "403": { "description": "Forbidden" }, "400": { "description": "Bad Request" }, "405": { "description": "Method Not allowed" }, "401": { "description": "Unauthorized" } } }, "patch": { "tags": [ "service" ], "summary": "Updates partially a Service", "description": "This operation updates partially a Service entity.", "operationId": "patchService", "parameters": [ { "name": "id", "in": "path", "description": "Identifier of the Service", "required": true, "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json;charset=utf-8": { "schema": { "$ref": "#/components/schemas/ServiceUpdate" } } }, "required": true }, "responses": { "500": { "description": "Internal Server Error", "content": { "application/json;charset=utf-8": { "schema": { "$ref": "#/components/schemas/Service" } } } }, "200": { "description": "Updated", "content": { "application/json;charset=utf-8": { "schema": { "$ref": "#/components/schemas/Service" } } } }, "409": { "description": "Conflict", "content": { "application/json;charset=utf-8": { "schema": { "$ref": "#/components/schemas/Service" } } } }, "404": { "description": "Not Found", "content": { "application/json;charset=utf-8": { "schema": { "$ref": "#/components/schemas/Service" } } } }, "403": { "description": "Forbidden", "content": { "application/json;charset=utf-8": { "schema": { "$ref": "#/components/schemas/Service" } } } }, "400": { "description": "Bad Request", "content": { "application/json;charset=utf-8": { "schema": { "$ref": "#/components/schemas/Service" } } } }, "405": { "description": "Method Not allowed", "content": { "application/json;charset=utf-8": { "schema": { "$ref": "#/components/schemas/Service" } } } }, "401": { "description": "Unauthorized", "content": { "application/json;charset=utf-8": { "schema": { "$ref": "#/components/schemas/Service" } } } } } } }, "/serviceInventory/v4/hub/{id}": { "delete": { "tags": [ "hub", "events subscription" ], "summary": "Unregister a listener", "description": "Resets the communication endpoint address the service instance must use to deliver information about its health state, execution state, failures and metrics.", "operationId": "unregisterListener", "parameters": [ { "name": "id", "in": "path", "description": "The id of the registered listener", "required": true, "schema": { "type": "string" } } ], "responses": { "500": { "description": "Internal Server Error" }, "400": { "description": "Bad request" }, "204": { "description": "Deleted" }, "405": { "description": "Method not allowed" }, "404": { "description": "Not Found" }, "403": { "description": "Forbidden" }, "401": { "description": "Unauthorized" } } } } }, "components": { "schemas": { "Characteristic": { "required": [ "value" ], "type": "object", "properties": { "uuid": { "type": "string" }, "value": { "type": "object", "description": "The value of the characteristic" }, "@baseType": { "type": "string", "description": "When sub-classing, this defines the super-class" }, "@schemaLocation": { "type": "string", "description": "A URI to a JSON-Schema file that defines additional attributes and relationships" }, "@type": { "type": "string" }, "href": { "type": "string", "description": "Unique reference of the entity" }, "name": { "type": "string", "description": "Name of the entity" }, "valueType": { "type": "string", "description": "Data type of the value of the characteristic" } }, "description": "Describes a given characteristic of an object or entity through a name/value pair." }, "Note": { "type": "object", "properties": { "uuid": { "type": "string" }, "date": { "type": "string", "description": "Date of the note" }, "@baseType": { "type": "string", "description": "When sub-classing, this defines the super-class" }, "@schemaLocation": { "type": "string", "description": "A URI to a JSON-Schema file that defines additional attributes and relationships" }, "@type": { "type": "string" }, "href": { "type": "string", "description": "Unique reference of the entity" }, "author": { "type": "string", "description": "Author of the note" }, "system": { "type": "string", "description": "Describes the system from which the action related to this note was done" }, "text": { "type": "string", "description": "Text of the note" } }, "description": "Extra information about a given entity" }, "Place": { "type": "object", "properties": { "uuid": { "type": "string" }, "@baseType": { "type": "string", "description": "When sub-classing, this defines the super-class" }, "@schemaLocation": { "type": "string", "description": "A URI to a JSON-Schema file that defines additional attributes and relationships" }, "@type": { "type": "string" }, "href": { "type": "string", "description": "Unique reference of the entity" }, "name": { "type": "string", "description": "Name of the entity" }, "id": { "type": "string", "description": "Unique identifier of the place" }, "role": { "type": "string", "description": "Role of the place, such as: [home delivery], [shop retrieval])" } }, "description": "Place reference. Place defines the places where the products are sold or delivered." }, "RelatedParty": { "type": "object", "properties": { "uuid": { "type": "string" }, "@baseType": { "type": "string", "description": "When sub-classing, this defines the super-class" }, "@schemaLocation": { "type": "string", "description": "A URI to a JSON-Schema file that defines additional attributes and relationships" }, "@type": { "type": "string" }, "href": { "type": "string", "description": "Unique reference of the entity" }, "name": { "type": "string", "description": "Name of the entity" }, "role": { "type": "string", "description": "Role of the related party." }, "@referredType": { "type": "string", "description": "The actual type of the target instance when needed for disambiguation." }, "id": { "type": "string" }, "extendedInfo": { "type": "string" } }, "description": "RelatedParty reference. A related party defines party or party role linked to a specific entity." }, "ResourceRef": { "required": [ "id" ], "type": "object", "properties": { "uuid": { "type": "string" }, "@baseType": { "type": "string", "description": "When sub-classing, this defines the super-class" }, "@schemaLocation": { "type": "string", "description": "A URI to a JSON-Schema file that defines additional attributes and relationships" }, "@type": { "type": "string" }, "href": { "type": "string", "description": "Unique reference of the entity" }, "name": { "type": "string", "description": "Name of the entity" }, "id": { "type": "string", "description": "Unique identifier of the supporting resource" }, "@referredType": { "type": "string", "description": "The actual type of the target instance when needed for disambiguation." } }, "description": "A list of supporting resources (SupportingResource [*]).Note: only Service of type RFS can be associated with Resources." }, "ServiceCreate": { "type": "object", "properties": { "endDate": { "type": "string", "description": "Date when the service ends" }, "startDate": { "type": "string", "description": "Date when the service starts" }, "category": { "type": "string", "description": "Is it a customer facing or resource facing service" }, "description": { "type": "string", "description": "Free-text description of the service" }, "hasStarted": { "type": "boolean", "description": "If TRUE, this Service has already been started" }, "isServiceEnabled": { "type": "boolean", "description": "If FALSE, this particular Service has NOT been enabled for use" }, "isStateful": { "type": "boolean", "description": "If TRUE, this Service can be changed without affecting any other services" }, "name": { "type": "string", "description": "Name of the service" }, "serviceDate": { "type": "string", "description": "Date when the service was created (whatever its status)." }, "serviceType": { "type": "string", "description": "Business type of the service" }, "startMode": { "type": "string", "description": "This attribute is an enumerated integer that indicates how the Service is started, such as: 0: Unknown; 1: Automatically by the managed environment; 2: Automatically by the owning device; 3: Manually by the Provider of the Service; 4: Manually by a Customer of the Provider; 5: Any of the above" }, "note": { "type": "array", "description": "A list of notes made on this service", "items": { "$ref": "#/components/schemas/Note" } }, "place": { "type": "array", "description": "A list of places related to this service, e.g. where the service is installed, a delivery address for equipment, etc.", "items": { "$ref": "#/components/schemas/Place" } }, "relatedParty": { "type": "array", "description": "A list of related party references (RelatedParty [1..*]). A related party defines party or party role linked to a specific entity.", "items": { "$ref": "#/components/schemas/RelatedParty" } }, "serviceCharacteristic": { "type": "array", "description": "A list of characteristics that characterize this service (ServiceCharacteristic [*]) ", "items": { "$ref": "#/components/schemas/Characteristic" } }, "serviceOrder": { "type": "array", "description": "A list of service orders related to this service", "items": { "$ref": "#/components/schemas/ServiceOrderRef" } }, "serviceSpecification": { "$ref": "#/components/schemas/ServiceSpecificationRef" }, "state": { "type": "string", "description": "The life cycle state of the service, such as: feasibilityChecked, designed, reserved, active, inactive, terminated", "enum": [ "feasibilityChecked", "designed", "reserved", "inactive", "active", "terminated" ] }, "supportingResource": { "type": "array", "description": "A list of supporting resources (SupportingResource [*]).Note: only Service of type RFS can be associated with Resources.", "items": { "$ref": "#/components/schemas/ResourceRef" } }, "supportingService": { "type": "array", "description": "A list of supporting services (SupportingService [*]). A collection of services that support this service (bundling, link CFS to RFS).", "items": { "$ref": "#/components/schemas/ServiceRef" } }, "serviceRelationship": { "type": "array", "description": "A list of service relationships (ServiceRelationship [*]). Describes links with other service(s) in the inventory (useful for describing relies-on, relies-from between CFS for example).", "items": { "$ref": "#/components/schemas/ServiceRelationship" } }, "@baseType": { "type": "string", "description": "When sub-classing, this defines the super-class" }, "@schemaLocation": { "type": "string", "description": "A URI to a JSON-Schema file that defines additional attributes and relationships" }, "@type": { "type": "string", "description": "When sub-classing, this defines the sub-class entity name" } }, "description": "The Service to be created" }, "ServiceOrderRef": { "required": [ "id" ], "type": "object", "properties": { "@baseType": { "type": "string", "description": "When sub-classing, this defines the super-class" }, "@schemaLocation": { "type": "string", "description": "A URI to a JSON-Schema file that defines additional attributes and relationships" }, "@type": { "type": "string" }, "href": { "type": "string", "description": "Unique reference of the entity" }, "id": { "type": "string", "description": "Unique identifier of the Service Order" }, "serviceOrderItemId": { "type": "string", "description": "Unique identifier of the Service Order Item within a service order, not populated if this is a reference to a service order" }, "@referredType": { "type": "string", "description": "The actual type of the target instance when needed for disambiguation." } }, "description": "Service Order reference. Useful to understand the which was the Service order through which the service was instantiated in the service inventory" }, "ServiceRef": { "required": [ "id" ], "type": "object", "properties": { "uuid": { "type": "string" }, "@baseType": { "type": "string", "description": "When sub-classing, this defines the super-class" }, "@schemaLocation": { "type": "string", "description": "A URI to a JSON-Schema file that defines additional attributes and relationships" }, "@type": { "type": "string" }, "href": { "type": "string", "description": "Unique reference of the entity" }, "name": { "type": "string", "description": "Name of the entity" }, "id": { "type": "string", "description": "Id of the service" }, "@referredType": { "type": "string", "description": "The actual type of the target instance when needed for disambiguation." } }, "description": "Service reference, for when Service is used by other entities" }, "ServiceRelationship": { "required": [ "relationshipType", "service" ], "type": "object", "properties": { "uuid": { "type": "string" }, "@baseType": { "type": "string", "description": "When sub-classing, this defines the super-class" }, "@schemaLocation": { "type": "string", "description": "A URI to a JSON-Schema file that defines additional attributes and relationships" }, "@type": { "type": "string" }, "href": { "type": "string", "description": "Unique reference of the entity" }, "relationshipType": { "type": "string", "description": "The type of relationship (e.g. depends on, enables)" }, "service": { "$ref": "#/components/schemas/ServiceRef" } }, "description": "Describes links with services of the same category (useful for bundled services)" }, "ServiceSpecificationRef": { "type": "object", "properties": { "@baseType": { "type": "string", "description": "When sub-classing, this defines the super-class" }, "@schemaLocation": { "type": "string", "description": "A URI to a JSON-Schema file that defines additional attributes and relationships" }, "@type": { "type": "string" }, "href": { "type": "string", "description": "Unique reference of the entity" }, "name": { "type": "string", "description": "Name of the entity" }, "version": { "type": "string", "description": "Service specification version" }, "targetServiceSchema": { "$ref": "#/components/schemas/TargetServiceSchema" }, "@referredType": { "type": "string", "description": "The actual type of the target instance when needed for disambiguation." }, "id": { "type": "string" } }, "description": "Service specification reference: ServiceSpecification(s) required to realize a ProductSpecification." }, "TargetServiceSchema": { "type": "object", "properties": { "uuid": { "type": "string" }, "@baseType": { "type": "string", "description": "When sub-classing, this defines the super-class" }, "@schemaLocation": { "type": "string", "description": "A URI to a JSON-Schema file that defines additional attributes and relationships" }, "@type": { "type": "string" }, "href": { "type": "string", "description": "Unique reference of the entity" } }, "description": "The reference object to the schema and type of target service which is described by service specification" }, "Service": { "type": "object", "properties": { "uuid": { "type": "string" }, "endDate": { "type": "string", "description": "Date when the service ends" }, "startDate": { "type": "string", "description": "Date when the service starts" }, "description": { "type": "string", "description": "Free-text description of the service" }, "@baseType": { "type": "string", "description": "When sub-classing, this defines the super-class" }, "@schemaLocation": { "type": "string", "description": "A URI to a JSON-Schema file that defines additional attributes and relationships" }, "@type": { "type": "string" }, "href": { "type": "string", "description": "Unique reference of the entity" }, "name": { "type": "string", "description": "Name of the entity" }, "id": { "type": "string", "description": "Unique identifier of the service" }, "category": { "type": "string", "description": "Is it a customer facing or resource facing service" }, "hasStarted": { "type": "boolean", "description": "If TRUE, this Service has already been started" }, "isServiceEnabled": { "type": "boolean", "description": "If FALSE, this particular Service has NOT been enabled for use" }, "isStateful": { "type": "boolean", "description": "If TRUE, this Service can be changed without affecting any other services" }, "serviceDate": { "type": "string", "description": "Date when the service was created (whatever its status)." }, "serviceType": { "type": "string", "description": "Business type of the service" }, "startMode": { "type": "string", "description": "This attribute is an enumerated integer that indicates how the Service is started, such as: 0: Unknown; 1: Automatically by the managed environment; 2: Automatically by the owning device; 3: Manually by the Provider of the Service; 4: Manually by a Customer of the Provider; 5: Any of the above" }, "note": { "uniqueItems": true, "type": "array", "description": "A list of notes made on this service", "items": { "$ref": "#/components/schemas/Note" } }, "place": { "uniqueItems": true, "type": "array", "description": "A list of places related to this service, e.g. where the service is installed, a delivery address for equipment, etc.", "items": { "$ref": "#/components/schemas/Place" } }, "relatedParty": { "uniqueItems": true, "type": "array", "description": "A list of related party references (RelatedParty [1..*]). A related party defines party or party role linked to a specific entity.", "items": { "$ref": "#/components/schemas/RelatedParty" } }, "serviceCharacteristic": { "uniqueItems": true, "type": "array", "description": "A list of characteristics that characterize this service (ServiceCharacteristic [*]) ", "items": { "$ref": "#/components/schemas/Characteristic" } }, "serviceOrder": { "uniqueItems": true, "type": "array", "description": "A list of service orders related to this service", "items": { "$ref": "#/components/schemas/ServiceOrderRef" } }, "serviceRelationship": { "uniqueItems": true, "type": "array", "description": "A list of service relationships (ServiceRelationship [*]). Describes links with other service(s) in the inventory (useful for describing relies-on, relies-from between CFS for example).", "items": { "$ref": "#/components/schemas/ServiceRelationship" } }, "serviceSpecification": { "$ref": "#/components/schemas/ServiceSpecificationRef" }, "state": { "type": "string", "description": "The life cycle state of the service, such as: feasibilityChecked, designed, reserved, active, inactive, terminated", "enum": [ "feasibilityChecked", "designed", "reserved", "inactive", "active", "terminated" ] }, "supportingResource": { "uniqueItems": true, "type": "array", "description": "A list of supporting resources (SupportingResource [*]).Note: only Service of type RFS can be associated with Resources.", "items": { "$ref": "#/components/schemas/ResourceRef" } }, "supportingService": { "uniqueItems": true, "type": "array", "description": "A list of supporting services (SupportingService [*]). A collection of services that support this service (bundling, link CFS to RFS).", "items": { "$ref": "#/components/schemas/ServiceRef" } } }, "description": "Service is a base class for defining the Service hierarchy. All Services are characterized as either being possibly visible and usable by a Customer or not. This gives rise to the two subclasses of Service: CustomerFacingService and ResourceFacingService." }, "ServiceStateChangeEvent": { "type": "object", "properties": { "service": { "$ref": "#/components/schemas/Service" } }, "description": "The event data structure" }, "ServiceStateChangeNotification": { "type": "object", "properties": { "eventTime": { "type": "string", "description": "Time of the event occurrence" }, "eventId": { "type": "string", "description": "The identifier of the notification" }, "eventType": { "type": "string", "description": "The type of the notification" }, "fieldPath": { "type": "string", "description": "The path identifying the object field concerned by this notification" }, "resourcePath": { "type": "string", "description": "The path identifying the resource object concerned by this notification" }, "event": { "$ref": "#/components/schemas/ServiceStateChangeEvent" } }, "description": "The event data" }, "EventSubscription": { "required": [ "callback", "id" ], "type": "object", "properties": { "id": { "type": "string", "description": "Id of the listener" }, "callback": { "type": "string", "description": "The callback being registered." }, "query": { "type": "string", "description": "additional data to be passed" } }, "description": "Sets the communication endpoint address the service instance must use to deliver notification information" }, "ServiceDeleteEvent": { "type": "object", "properties": { "service": { "$ref": "#/components/schemas/Service" } }, "description": "The event data structure" }, "ServiceDeleteNotification": { "type": "object", "properties": { "eventTime": { "type": "string", "description": "Time of the event occurrence" }, "eventId": { "type": "string", "description": "The identifier of the notification" }, "eventType": { "type": "string", "description": "The type of the notification" }, "fieldPath": { "type": "string", "description": "The path identifying the object field concerned by this notification" }, "resourcePath": { "type": "string", "description": "The path identifying the resource object concerned by this notification" }, "event": { "$ref": "#/components/schemas/ServiceDeleteEvent" } }, "description": "The event data" }, "ServiceCreateEvent": { "type": "object", "properties": { "service": { "$ref": "#/components/schemas/Service" } }, "description": "The event data structure" }, "ServiceCreateNotification": { "type": "object", "properties": { "eventTime": { "type": "string", "description": "Time of the event occurrence" }, "eventId": { "type": "string", "description": "The identifier of the notification" }, "eventType": { "type": "string", "description": "The type of the notification" }, "fieldPath": { "type": "string", "description": "The path identifying the object field concerned by this notification" }, "resourcePath": { "type": "string", "description": "The path identifying the resource object concerned by this notification" }, "event": { "$ref": "#/components/schemas/ServiceCreateEvent" } }, "description": "The event data" }, "ServiceBatchEvent": { "type": "object", "properties": { "service": { "$ref": "#/components/schemas/Service" } }, "description": "The event data structure" }, "ServiceBatchNotification": { "type": "object", "properties": { "eventTime": { "type": "string", "description": "Time of the event occurrence" }, "eventId": { "type": "string", "description": "The identifier of the notification" }, "eventType": { "type": "string", "description": "The type of the notification" }, "fieldPath": { "type": "string", "description": "The path identifying the object field concerned by this notification" }, "resourcePath": { "type": "string", "description": "The path identifying the resource object concerned by this notification" }, "event": { "$ref": "#/components/schemas/ServiceBatchEvent" } }, "description": "The event data" }, "ServiceAttributeValueChangeEvent": { "type": "object", "properties": { "service": { "$ref": "#/components/schemas/Service" } }, "description": "The event data structure" }, "ServiceAttributeValueChangeNotification": { "type": "object", "properties": { "eventTime": { "type": "string", "description": "Time of the event occurrence" }, "eventId": { "type": "string", "description": "The identifier of the notification" }, "eventType": { "type": "string", "description": "The type of the notification" }, "fieldPath": { "type": "string", "description": "The path identifying the object field concerned by this notification" }, "resourcePath": { "type": "string", "description": "The path identifying the resource object concerned by this notification" }, "event": { "$ref": "#/components/schemas/ServiceAttributeValueChangeEvent" } }, "description": "The event data" }, "EventSubscriptionInput": { "required": [ "callback" ], "type": "object", "properties": { "callback": { "type": "string", "description": "The callback being registered." }, "query": { "type": "string", "description": "additional data to be passed" } }, "description": "Data containing the callback endpoint to deliver the information" }, "ServiceUpdate": { "type": "object", "properties": { "endDate": { "type": "string", "description": "Date when the service ends" }, "startDate": { "type": "string", "description": "Date when the service starts" }, "category": { "type": "string", "description": "Is it a customer facing or resource facing service" }, "description": { "type": "string", "description": "Free-text description of the service" }, "hasStarted": { "type": "boolean", "description": "If TRUE, this Service has already been started" }, "isServiceEnabled": { "type": "boolean", "description": "If FALSE, this particular Service has NOT been enabled for use" }, "isStateful": { "type": "boolean", "description": "If TRUE, this Service can be changed without affecting any other services" }, "name": { "type": "string", "description": "Name of the service" }, "serviceDate": { "type": "string", "description": "Date when the service was created (whatever its status)." }, "serviceType": { "type": "string", "description": "Business type of the service" }, "startMode": { "type": "string", "description": "This attribute is an enumerated integer that indicates how the Service is started, such as: 0: Unknown; 1: Automatically by the managed environment; 2: Automatically by the owning device; 3: Manually by the Provider of the Service; 4: Manually by a Customer of the Provider; 5: Any of the above" }, "note": { "type": "array", "description": "A list of notes made on this service", "items": { "$ref": "#/components/schemas/Note" } }, "place": { "type": "array", "description": "A list of places related to this service, e.g. where the service is installed, a delivery address for equipment, etc.", "items": { "$ref": "#/components/schemas/Place" } }, "relatedParty": { "type": "array", "description": "A list of related party references (RelatedParty [1..*]). A related party defines party or party role linked to a specific entity.", "items": { "$ref": "#/components/schemas/RelatedParty" } }, "serviceCharacteristic": { "type": "array", "description": "A list of characteristics that characterize this service (ServiceCharacteristic [*]) ", "items": { "$ref": "#/components/schemas/Characteristic" } }, "serviceOrder": { "type": "array", "description": "A list of service orders related to this service", "items": { "$ref": "#/components/schemas/ServiceOrderRef" } }, "serviceSpecification": { "$ref": "#/components/schemas/ServiceSpecificationRef" }, "state": { "type": "string", "description": "The life cycle state of the service, such as: feasibilityChecked, designed, reserved, active, inactive, terminated", "enum": [ "feasibilityChecked", "designed", "reserved", "inactive", "active", "terminated" ] }, "supportingResource": { "type": "array", "description": "A list of supporting resources (SupportingResource [*]).Note: only Service of type RFS can be associated with Resources.", "items": { "$ref": "#/components/schemas/ResourceRef" } }, "supportingService": { "type": "array", "description": "A list of supporting services (SupportingService [*]). A collection of services that support this service (bundling, link CFS to RFS).", "items": { "$ref": "#/components/schemas/ServiceRef" } }, "serviceRelationship": { "type": "array", "description": "A list of service relationships (ServiceRelationship [*]). Describes links with other service(s) in the inventory (useful for describing relies-on, relies-from between CFS for example).", "items": { "$ref": "#/components/schemas/ServiceRelationship" } }, "@baseType": { "type": "string", "description": "When sub-classing, this defines the super-class" }, "@schemaLocation": { "type": "string", "description": "A URI to a JSON-Schema file that defines additional attributes and relationships" }, "@type": { "type": "string", "description": "When sub-classing, this defines the sub-class entity name" } }, "description": "The Service to be updated" } }, "securitySchemes": { "security_auth": { "type": "oauth2", "scheme": "bearer", "bearerFormat": "JWT", "flows": { "authorizationCode": { "authorizationUrl": "https://portal.openslice.eu/auth/realms/openslice/protocol/openid-connect/auth", "tokenUrl": "https://portal.openslice.eu/auth/realms/openslice/protocol/openid-connect/token", "scopes": { "read": "read scope", "write": "write scope" } } } } } } }