From 9c35f307e7019b702b600612bc8eaf6eafc214d3 Mon Sep 17 00:00:00 2001 From: MatthieuGeerebaert Date: Fri, 19 Oct 2018 16:55:55 +0200 Subject: [PATCH] Update doc - Remove old swagger - Update shcemas Change-Id: I8a262aab82c3fc55e60b6d570999b569d908d62a Issue-ID: EXTAPI-163 Signed-off-by: MatthieuGeerebaert --- .../images/ONAP_External_ID_Casablanca.jpg | Bin 127034 -> 126974 bytes .../offeredapis/swaggers/serviceCatalog_1_0_0.json | 652 ------------ .../offeredapis/swaggers/serviceCatalog_1_0_0.yaml | 492 --------- .../swaggers/serviceInventory_1_0_0.json | 620 ----------- .../swaggers/serviceInventory_1_0_0.yaml | 427 -------- docs/offeredapis/swaggers/serviceOrder_1_0_0.json | 1071 -------------------- docs/offeredapis/swaggers/serviceOrder_1_0_0.yaml | 772 -------------- 7 files changed, 4034 deletions(-) delete mode 100644 docs/offeredapis/swaggers/serviceCatalog_1_0_0.json delete mode 100644 docs/offeredapis/swaggers/serviceCatalog_1_0_0.yaml delete mode 100644 docs/offeredapis/swaggers/serviceInventory_1_0_0.json delete mode 100644 docs/offeredapis/swaggers/serviceInventory_1_0_0.yaml delete mode 100644 docs/offeredapis/swaggers/serviceOrder_1_0_0.json delete mode 100644 docs/offeredapis/swaggers/serviceOrder_1_0_0.yaml diff --git a/docs/offeredapis/images/ONAP_External_ID_Casablanca.jpg b/docs/offeredapis/images/ONAP_External_ID_Casablanca.jpg index a566e4224881ba3e17fba4b2e08af1a3c7dcf06e..721d9f2727e110a018c222dd7335cd484e3b23f1 100644 GIT binary patch delta 80033 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

yDImG38(8SrFuxvI{0H#FZWz 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�H?<_lcW<-p?(ipGw%kU|e}qQ)${ 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⋙Z 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 SZk_sZywo}HI=lz^wf}EM7|4wP diff --git a/docs/offeredapis/swaggers/serviceCatalog_1_0_0.json b/docs/offeredapis/swaggers/serviceCatalog_1_0_0.json deleted file mode 100644 index 74daf5a..0000000 --- a/docs/offeredapis/swaggers/serviceCatalog_1_0_0.json +++ /dev/null @@ -1,652 +0,0 @@ - -{ - "swagger": "2.0", - "info": { - "description": "serviceCatalog API designed for ONAP Beijing Release.\nThis API is build from TMF open API17.5\nonly operation GET (by id & byList) for resource serviceSpecification is available", - "version": "1.0.0", - "title": "API ServiceCatalog" - }, - "host": "serverRoot", - "basePath": "/nbi/api/v1", - "schemes": [ - "https" - ], - "consumes": [ - "application/json;charset=utf-8" - ], - "produces": [ - "application/json;charset=utf-8" - ], - "tags": [ - - { - "name": "ServiceSpecification", - "description": "" - } - ], - "paths": { - "/serviceSpecification": { - "get": { - "tags": [ - "ServiceSpecification" - ], - "operationId": "serviceSpecificationFind", - "summary": "List service specifications", - "description": "This operation returns service specifications from a catalog.\nOnly a predefined set of attribute is proposed : Based on SDC limitations, only attributes category and distributionStatus are available for serviceSpecification filtering\nFields attribute could be used to filter attributes retrieved\n\nSpecific business errors for current operation will be encapsulated in\n\nHTTP Response 422 Unprocessable entity\n", - "deprecated": false, - - "parameters": [ - - { - "name": "fields", - "required": false, - "in": "query", - "description": "Field selection - used to filtering the attributes to be retreived", - - "type": "string" - }, - { - "name": "category", - "required": false, - "in": "query", - "description": "Service Category (filter)", - - "type": "string" - }, - { - "name": "distributionStatus", - "required": false, - "in": "query", - "description": "Service distribution status (filter)", - - "type": "string" - } - ], - "responses": { - "200": { - "description": "Success", - "schema": { - "type": "array", - "items": { - "$ref": "#/definitions/ServiceSpecification" - } - } - - }, - "400": { - - "description": "Bad Request\n\nList of supported error codes:\n- 20: Invalid URL parameter value\n- 21: Missing body\n- 22: Invalid body\n- 23: Missing body field\n- 24: Invalid body field\n- 25: Missing header\n- 26: Invalid header value\n- 27: Missing query-string parameter\n- 28: Invalid query-string parameter value", - "schema": { - - "$ref": "#/definitions/ErrorRepresentation" - } - }, - "401": { - - "description": "Unauthorized\n\nList of supported error codes:\n- 40: Missing credentials\n- 41: Invalid credentials\n- 42: Expired credentials", - "schema": { - - "$ref": "#/definitions/ErrorRepresentation" - } - }, - "403": { - - "description": "Forbidden\n\nList of supported error codes:\n- 50: Access denied\n- 51: Forbidden requester\n- 52: Forbidden user\n- 53: Too many requests", - "schema": { - - "$ref": "#/definitions/ErrorRepresentation" - } - }, - "404": { - - "description": "Not Found\n\nList of supported error codes:\n- 60: Resource not found", - "schema": { - - "$ref": "#/definitions/ErrorRepresentation" - } - }, - "422": { - - "description": "Unprocessable entity\n\nFunctional error", - "schema": { - - "$ref": "#/definitions/ErrorRepresentation" - } - }, - "500": { - - "description": "Internal Server Error\n\nList of supported error codes:\n- 1: Internal error", - "schema": { - - "$ref": "#/definitions/ErrorRepresentation" - } - }, - "503": { - - "description": "Service Unavailable\n\nList of supported error codes:\n- 5: The service is temporarily unavailable\n- 6: Orange API is over capacity, retry later !", - "schema": { - - "$ref": "#/definitions/ErrorRepresentation" - } - } - } - } - }, - "/serviceSpecification/{id}": { - "get": { - "tags": [ - "ServiceSpecification" - ], - "operationId": "serviceSpecificationGet", - "summary": "Retrieve a service specification", - "description": "This operation returns a service specification by its id from a catalog. Attribute selection is enabled using the fields attribute.\n\nSpecific business errors for current operation will be encapsulated in\n\nHTTP Response 422 Unprocessable entity\n", - "deprecated": false, - - "parameters": [ - - { - "name": "id", - "in": "path", - "required": true, - "type": "string", - "description": "" - }, - { - "name": "fields", - "required": false, - "in": "query", - "description": "Attribute selection", - - "type": "string" - } - ], - "responses": { - "200": { - "description": "Success", - "schema": { - "$ref": "#/definitions/ServiceSpecification" - } - - }, - "400": { - - "description": "Bad Request\n\nList of supported error codes:\n- 20: Invalid URL parameter value\n- 21: Missing body\n- 22: Invalid body\n- 23: Missing body field\n- 24: Invalid body field\n- 25: Missing header\n- 26: Invalid header value\n- 27: Missing query-string parameter\n- 28: Invalid query-string parameter value", - "schema": { - - "$ref": "#/definitions/ErrorRepresentation" - } - }, - "401": { - - "description": "Unauthorized\n\nList of supported error codes:\n- 40: Missing credentials\n- 41: Invalid credentials\n- 42: Expired credentials", - "schema": { - - "$ref": "#/definitions/ErrorRepresentation" - } - }, - "403": { - - "description": "Forbidden\n\nList of supported error codes:\n- 50: Access denied\n- 51: Forbidden requester\n- 52: Forbidden user\n- 53: Too many requests", - "schema": { - - "$ref": "#/definitions/ErrorRepresentation" - } - }, - "404": { - - "description": "Not Found\n\nList of supported error codes:\n- 60: Resource not found", - "schema": { - - "$ref": "#/definitions/ErrorRepresentation" - } - }, - "422": { - - "description": "Unprocessable entity\n\nFunctional error", - "schema": { - - "$ref": "#/definitions/ErrorRepresentation" - } - }, - "500": { - - "description": "Internal Server Error\n\nList of supported error codes:\n- 1: Internal error", - "schema": { - - "$ref": "#/definitions/ErrorRepresentation" - } - }, - "503": { - - "description": "Service Unavailable\n\nList of supported error codes:\n- 5: The service is temporarily unavailable\n- 6: Orange API is over capacity, retry later !", - "schema": { - - "$ref": "#/definitions/ErrorRepresentation" - } - } - } - } - } - }, -"definitions": { - - "LifecycleStatusValues": { - "description": "Service lifecycle value from ONAP SDC", - - "type": "string", - "enum": [ - "NOT_CERTIFIED_CHECKOUT", - "NOT_CERTIFIED_CHECKIN", - "READY_FOR_CERTIFICATION", - "CERTIFICATION_IN_PROGRESS", - "CERTIFIED"] - - }, - "DistributionStatus": { - "description": "Service distribution status from ONAP.", - - "type": "string", - "enum": [ - "DISTRIBUTION_NOT_APPROVED", - "DISTRIBUTION_APPROVED", - "DISTRIBUTED", - "DISTRIBUTION_REJECTED"] - - }, - - "ErrorRepresentation": { - "description": "This class is used to describe error.\nfor nbi Beijing release we do not manage additional error for serviceCatalog", - - - "required": [ - - "code", - "reason" - ], - "type": "object", - "properties": { - "code": { - "description": "Application related code (as defined in the API or from a common list)", - "type": "integer", - "format": "int32" - }, - "reason": { - "description": "Text that explains the reason for error. This can be shown to a client user.", - "type": "string" - }, - "message": { - "description": "Text that provide more details and corrective actions related to the error. This can be shown to a client user", - "type": "string" - }, - "status": { - "description": "http error code extension like 400-2", - "type": "string" - }, - "referenceErrror": { - "description": "url pointing to documentation describing the error", - "type": "string" - }, - "@type": { - "description": "The class type of a REST resource.", - "type": "string" - }, - "@schemaLocation": { - "description": "it provides a link to the schema describing a REST resource.", - "type": "string" - } - } - - }, - - "TimePeriod": { - "description": "A time period", - - - "type": "object", - "properties": { - "startDateTime": { - "description": "Start date and time of the period", - "type": "string", - "format": "date-time" - }, - "endDateTime": { - "description": "End date and time of the period", - "type": "string", - "format": "date-time" - } - } - - }, - - "RelatedPartyRef": { - "description": "Party linked to the service catalog.\nin nbi we retrieve information about last updater of the service in SDC", - - - "type": "object", - "properties": { - "id": { - "description": "Unique identifier of the related party. Filled with lastUpdaterUserId", - "type": "string" - }, - "role": { - "description": "Role payed by the related party\nOnly role 'lastUpdater' is retrieved in Beijing release", - "type": "string" - }, - "name": { - "description": "Name of the related party - Filled with lastUpdatedFullName", - "type": "string" - } - } - - }, - - "ServiceSpecification": { - "description": "ServiceSpecification is a class that offers characteristics to describe a type of service. Functionally, it acts as a template by which Services may be instantiated. By sharing the same specification, these services would therefore share the same set of characteristics.\nthe service information are retrieved in SDC", - - - "required": [ - - "invariantUUID" - ], - "type": "object", - "properties": { - "id": { - "description": "Unique identifier of the service specification. Filled with SDC Service uuid", - "type": "string" - }, - "href": { - "description": "Reference of the service specification- not mapped in Beijing", - "type": "string" - }, - "name": { - "description": "Name of the service specification- Filled with SDC Service name", - "type": "string" - }, - "description": { - "description": "A narrative that explains in detail what the service specification is - Filled with SDC Service description", - "type": "string" - }, - "@type": { - "description": "This attribute allows to dynamically extends TMF class. Valued with 'ONAPservice'. We used this features to add following attributes:\ninvariantUUID\ntoscaModelURL\ntoscaResourceName\ncategory (1)\nsubcategory (1)\ndistributionStatus", - "type": "string", - - "default": "ONAPservice" - }, - "@schemaLocation": { - "description": "Not used for Beijing release", - "type": "string" - }, - "@baseType": { - "description": "Not used for Beijing release", - "type": "string" - }, - "invariantUUID": { - "description": "Additional attribute (not in the TMF API) - extended through @type - invariantUUID", - "type": "string" - }, - "toscaModelURL": { - "description": "Additional attribute (not in the TMF API) - extended through @type - toscaModelURL", - "type": "string" - }, - "toscaResourceName": { - "description": "Additional attribute (not in the TMF API) - extended through @type - toscaResourceName", - "type": "string" - }, - "category": { - "description": "Additional attribute - extended through @type - category\nPlease note that this attribute is managed in TMF - in future release we'll introduce category resource", - "type": "string" - }, - "subcategory": { - "description": "Additional attribute - extended through @type - category\nPlease note that this attribute is managed in TMF - in future release we'll introduce category resourc", - "type": "string" - }, - "distributionStatus": { - - "$ref": "#/definitions/DistributionStatus" - }, - "version": { - "description": "Service specification version - Filled with SDC Service version", - "type": "string" - }, - "lifecycleStatus": { - - "$ref": "#/definitions/LifecycleStatusValues" - }, - "targetServiceSchema": { - - "$ref": "#/definitions/TargetServiceSchemaRef" - }, - "attachment": { - - "type": "array", - "items": { - "$ref": "#/definitions/Attachment" - } - }, - "relatedParty": { - - "type": "array", - "items": { - "$ref": "#/definitions/RelatedPartyRef" - } - }, - "resourceSpecification": { - - "type": "array", - "items": { - "$ref": "#/definitions/ResourceSpecificationRef" - } - }, - "serviceSpecCharacteristic": { - - "type": "array", - "items": { - "$ref": "#/definitions/ServiceSpecCharacteristic" - } - } - } - - }, - - "ServiceSpecCharacteristic": { - "description": "A characteristic quality or distinctive feature of a ServiceSpecification. \nServiceSpecCharacteristic are retrieved in the serviceTosca file in the topology_template section in the inputs section.", - - - "type": "object", - "properties": { - "name": { - "description": "Name of the characteristic - Filled with parameter_name", - "type": "string" - }, - "description": { - "description": "A narrative that explains in detail what the characteristic is - Filled with parameter_description", - "type": "string" - }, - "valueType": { - "description": "A kind of value that the characteristic can take on, such as numeric, text and so forth - Filled with parameter_type", - "type": "string" - }, - "@type": { - "description": "This attribute allows to dynamically extends TMF class. Valued with: 'ONAPserviceCharacteristic'. We do not used this features in nbi Beijing release.", - "type": "string" - }, - "@schemaLocation": { - "description": "An url pointing to type description - we do not use it in nbi Beijing release", - "type": "string" - }, - "required": { - "description": "A parameter to define if the characteristic is mandatory - Filled from parameter_required – if not fielded by default ‘true’", - "type": "boolean", - - "default": true - }, - "status": { - "description": "Status of the characteristic - filled with status_value", - "type": "string" - }, - "serviceSpecCharacteristicValue": { - - "type": "array", - "items": { - "$ref": "#/definitions/ServiceSpecCharacteristicValue" - } - } - } - - }, - - "Attachment": { - "description": "An attachment is a file uses to describe the service.\nIn nbi we use attachment to retrieve ONAP artifacts.", - - - "type": "object", - "properties": { - "id": { - "description": "Unique identifier of the attachment - filled with artifactUUID.", - "type": "string" - }, - "name": { - "description": "Name of the attachment - filled with artifactName", - "type": "string" - }, - "description": { - "description": "Description of the attachment - filled with artifactDescription", - "type": "string" - }, - "@type": { - "description": "This attribute allows to dynamically extends TMF class. Valued with 'ONAPartifact'. We used this features to add following attributes: \nartifactLabel\nartifactGroupType\nartifactTimeout\nartifactChecksum\nartifactVersion\ngeneratedFromUUID", - "type": "string", - - "default": "ONAPartifact" - }, - "artifactLabel": { - "description": "Additional attribute (not in the TMF API) - extended through @type - artifactLabel", - "type": "string" - }, - "artifactGroupType": { - "description": "Additional attribute (not in the TMF API) - extended through @type - artifactGroupType", - "type": "string" - }, - "artifactTimeout": { - "description": "Additional attribute (not in the TMF API) - extended through @type - artifactTimeout", - "type": "string" - }, - "artifactChecksum": { - "description": "Additional attribute (not in the TMF API) - extended through @type - artifactChecksum", - "type": "string" - }, - "artifactVersion": { - "description": "Additional attribute (not in the TMF API) - extended through @type - artifactVersion", - "type": "string" - }, - "generatedFromUUID": { - "description": "Additional attribute (not in the TMF API) - extended through @type - generatedFromUUID", - "type": "string" - }, - "url": { - "description": "Uniform Resource Locator, is a web page address - filled with artifactURL", - "type": "string" - }, - "mimeType": { - "description": "Filled with artifactType", - "type": "string" - } - } - - }, - - "ServiceSpecCharacteristicValue": { - "description": "A number or text that can be assigned to a service specification characteristic.\nServiceSpecCharacteristicValue are retrieved in the service Tosca file", - - - "type": "object", - "properties": { - "valueType": { - "description": "A kind of value that the characteristic can take on, such as numeric, text, and so forth\nRetrieved in the Tosca in the topology_template section in the inputs section - parameter_type. \nWe do not manage parameter_type= list or map for Beijing release", - "type": "string" - }, - "isDefault": { - "description": "Information calculated from parameter default in the Tosca file", - "type": "boolean" - }, - "value": { - "description": "A discrete value that the characteristic can take on", - "type": "string" - } - } - - }, - - "ResourceSpecificationRef": { - "description": "A list of resourceSpec identified to deliver the service.\nfor nbi we retrieve resource information available in service description (through SDC api) bu as well information retrieved in the TOSCA file.", - - - "type": "object", - "properties": { - "id": { - "description": "Unique identifier of the resource specification - filled with resourceUUID", - "type": "string" - }, - "version": { - "description": "Version for this resource specification - filled with resourceVersion", - "type": "string" - }, - "name": { - "description": "Name of the resource specification - filled with resourceName", - "type": "string" - }, - "@type": { - "description": "This attribute allows to dynamically extends TMF class. Valued with: 'ONAPresource'. We used this features to add following attributes:\nresourceInstanceName\nresourceInvariantUUID\nresourceType\nmodelCustomizationName\nmodelCustomizationId", - "type": "string", - - "default": "ONAPresource" - }, - "resourceInstanceName": { - "description": "Additional attribute (not in the TMF API) - extended through @type - resourceInstanceName", - "type": "string" - }, - "resourceInvariantUUID": { - "description": "Additional attribute (not in the TMF API) - extended through @type - resourceInvariantUUID", - "type": "string" - }, - "resourceType": { - "description": "Additional attribute (not in the TMF API) - extended through @type - resoucreType", - "type": "string" - }, - "modelCustomizationName": { - "description": "Additional attribute (not in the TMF API) - extended through @type - Retrieved in the TOSCA file : attribute name in topology_template/node_template for the resource", - "type": "string" - }, - "modelCustomizationId": { - "description": "Additional attribute (not in the TMF API) - extended through @type - Retrieved in the TOSCA file : attribute customizationUUID in topology_template/node_template for the resource", - "type": "string" - } - } - - }, - - "TargetServiceSchemaRef": { - "description": "", - - - "required": [ - - "@type", - "@schemaLocation" - ], - "type": "object", - "properties": { - "@type": { - "description": "", - "type": "string" - }, - "@schemaLocation": { - "description": "", - "type": "string" - } - } - - } - } -} - \ No newline at end of file diff --git a/docs/offeredapis/swaggers/serviceCatalog_1_0_0.yaml b/docs/offeredapis/swaggers/serviceCatalog_1_0_0.yaml deleted file mode 100644 index ab6eaa9..0000000 --- a/docs/offeredapis/swaggers/serviceCatalog_1_0_0.yaml +++ /dev/null @@ -1,492 +0,0 @@ -# This work is licensed under a Creative Commons Attribution 4.0 International License. -# http://creativecommons.org/licenses/by/4.0 -# Copyright 2018 Orange - -swagger: "2.0" -info: - description: "serviceCatalog API designed for ONAP Beijing Release.\nThis API is\ - \ build from TMF open API17.5\nonly operation GET (by id & byList) for resource\ - \ serviceSpecification is available" - version: "1.0.0" - title: "API ServiceCatalog" -host: "serverRoot" -basePath: "/nbi/api/v1" -schemes: -- "https" -consumes: -- "application/json;charset=utf-8" -produces: -- "application/json;charset=utf-8" -tags: -- name: "ServiceSpecification" - description: "" -paths: - /serviceSpecification: - get: - tags: - - "ServiceSpecification" - operationId: "serviceSpecificationFind" - summary: "List service specifications" - description: "This operation returns service specifications from a catalog.\n\ - Only a predefined set of attribute is proposed : Based on SDC limitations,\ - \ only attributes category and distributionStatus are available for serviceSpecification\ - \ filtering\nFields attribute could be used to filter attributes retrieved\n\ - \nSpecific business errors for current operation will be encapsulated in\n\ - \nHTTP Response 422 Unprocessable entity\n" - deprecated: false - parameters: - - name: "fields" - required: false - in: "query" - description: "Field selection - used to filtering the attributes to be retreived" - type: "string" - - name: "category" - required: false - in: "query" - description: "Service Category (filter)" - type: "string" - - name: "distributionStatus" - required: false - in: "query" - description: "Service distribution status (filter)" - type: "string" - responses: - 200: - description: "Success" - schema: - type: "array" - items: - $ref: "#/definitions/ServiceSpecification" - 400: - description: "Bad Request\n\nList of supported error codes:\n- 20: Invalid\ - \ URL parameter value\n- 21: Missing body\n- 22: Invalid body\n- 23: Missing\ - \ body field\n- 24: Invalid body field\n- 25: Missing header\n- 26: Invalid\ - \ header value\n- 27: Missing query-string parameter\n- 28: Invalid query-string\ - \ parameter value" - schema: - $ref: "#/definitions/ErrorRepresentation" - 401: - description: "Unauthorized\n\nList of supported error codes:\n- 40: Missing\ - \ credentials\n- 41: Invalid credentials\n- 42: Expired credentials" - schema: - $ref: "#/definitions/ErrorRepresentation" - 403: - description: "Forbidden\n\nList of supported error codes:\n- 50: Access\ - \ denied\n- 51: Forbidden requester\n- 52: Forbidden user\n- 53: Too many\ - \ requests" - schema: - $ref: "#/definitions/ErrorRepresentation" - 404: - description: "Not Found\n\nList of supported error codes:\n- 60: Resource\ - \ not found" - schema: - $ref: "#/definitions/ErrorRepresentation" - 422: - description: "Unprocessable entity\n\nFunctional error" - schema: - $ref: "#/definitions/ErrorRepresentation" - 500: - description: "Internal Server Error\n\nList of supported error codes:\n\ - - 1: Internal error" - schema: - $ref: "#/definitions/ErrorRepresentation" - 503: - description: "Service Unavailable\n\nList of supported error codes:\n- 5:\ - \ The service is temporarily unavailable\n- 6: Orange API is over capacity,\ - \ retry later !" - schema: - $ref: "#/definitions/ErrorRepresentation" - /serviceSpecification/{id}: - get: - tags: - - "ServiceSpecification" - operationId: "serviceSpecificationGet" - summary: "Retrieve a service specification" - description: "This operation returns a service specification by its id from\ - \ a catalog. Attribute selection is enabled using the fields attribute.\n\n\ - Specific business errors for current operation will be encapsulated in\n\n\ - HTTP Response 422 Unprocessable entity\n" - deprecated: false - parameters: - - name: "id" - in: "path" - required: true - type: "string" - description: "" - - name: "fields" - required: false - in: "query" - description: "Attribute selection" - type: "string" - responses: - 200: - description: "Success" - schema: - $ref: "#/definitions/ServiceSpecification" - 400: - description: "Bad Request\n\nList of supported error codes:\n- 20: Invalid\ - \ URL parameter value\n- 21: Missing body\n- 22: Invalid body\n- 23: Missing\ - \ body field\n- 24: Invalid body field\n- 25: Missing header\n- 26: Invalid\ - \ header value\n- 27: Missing query-string parameter\n- 28: Invalid query-string\ - \ parameter value" - schema: - $ref: "#/definitions/ErrorRepresentation" - 401: - description: "Unauthorized\n\nList of supported error codes:\n- 40: Missing\ - \ credentials\n- 41: Invalid credentials\n- 42: Expired credentials" - schema: - $ref: "#/definitions/ErrorRepresentation" - 403: - description: "Forbidden\n\nList of supported error codes:\n- 50: Access\ - \ denied\n- 51: Forbidden requester\n- 52: Forbidden user\n- 53: Too many\ - \ requests" - schema: - $ref: "#/definitions/ErrorRepresentation" - 404: - description: "Not Found\n\nList of supported error codes:\n- 60: Resource\ - \ not found" - schema: - $ref: "#/definitions/ErrorRepresentation" - 422: - description: "Unprocessable entity\n\nFunctional error" - schema: - $ref: "#/definitions/ErrorRepresentation" - 500: - description: "Internal Server Error\n\nList of supported error codes:\n\ - - 1: Internal error" - schema: - $ref: "#/definitions/ErrorRepresentation" - 503: - description: "Service Unavailable\n\nList of supported error codes:\n- 5:\ - \ The service is temporarily unavailable\n- 6: Orange API is over capacity,\ - \ retry later !" - schema: - $ref: "#/definitions/ErrorRepresentation" -definitions: - LifecycleStatusValues: - description: "Service lifecycle value from ONAP SDC" - type: "string" - enum: - - "NOT_CERTIFIED_CHECKOUT" - - "NOT_CERTIFIED_CHECKIN" - - "READY_FOR_CERTIFICATION" - - "CERTIFICATION_IN_PROGRESS" - - "CERTIFIED" - DistributionStatus: - description: "Service distribution status from ONAP." - type: "string" - enum: - - "DISTRIBUTION_NOT_APPROVED" - - "DISTRIBUTION_APPROVED" - - "DISTRIBUTED" - - "DISTRIBUTION_REJECTED" - ErrorRepresentation: - description: "This class is used to describe error.\nfor nbi Beijing release we\ - \ do not manage additional error for serviceCatalog" - required: - - "code" - - "reason" - type: "object" - properties: - code: - description: "Application related code (as defined in the API or from a common\ - \ list)" - type: "integer" - format: "int32" - reason: - description: "Text that explains the reason for error. This can be shown to\ - \ a client user." - type: "string" - message: - description: "Text that provide more details and corrective actions related\ - \ to the error. This can be shown to a client user" - type: "string" - status: - description: "http error code extension like 400-2" - type: "string" - referenceErrror: - description: "url pointing to documentation describing the error" - type: "string" - '@type': - description: "The class type of a REST resource." - type: "string" - '@schemaLocation': - description: "it provides a link to the schema describing a REST resource." - type: "string" - TimePeriod: - description: "A time period" - type: "object" - properties: - startDateTime: - description: "Start date and time of the period" - type: "string" - format: "date-time" - endDateTime: - description: "End date and time of the period" - type: "string" - format: "date-time" - RelatedPartyRef: - description: "Party linked to the service catalog.\nin nbi we retrieve information\ - \ about last updater of the service in SDC" - type: "object" - properties: - id: - description: "Unique identifier of the related party. Filled with lastUpdaterUserId" - type: "string" - role: - description: "Role payed by the related party\nOnly role 'lastUpdater' is\ - \ retrieved in Beijing release" - type: "string" - name: - description: "Name of the related party - Filled with lastUpdatedFullName" - type: "string" - ServiceSpecification: - description: "ServiceSpecification is a class that offers characteristics to describe\ - \ a type of service. Functionally, it acts as a template by which Services may\ - \ be instantiated. By sharing the same specification, these services would therefore\ - \ share the same set of characteristics.\nthe service information are retrieved\ - \ in SDC" - required: - - "invariantUUID" - type: "object" - properties: - id: - description: "Unique identifier of the service specification. Filled with\ - \ SDC Service uuid" - type: "string" - href: - description: "Reference of the service specification- not mapped in Beijing" - type: "string" - name: - description: "Name of the service specification- Filled with SDC Service name" - type: "string" - description: - description: "A narrative that explains in detail what the service specification\ - \ is - Filled with SDC Service description" - type: "string" - '@type': - description: "This attribute allows to dynamically extends TMF class. Valued\ - \ with 'ONAPservice'. We used this features to add following attributes:\n\ - invariantUUID\ntoscaModelURL\ntoscaResourceName\ncategory (1)\nsubcategory\ - \ (1)\ndistributionStatus" - type: "string" - default: "ONAPservice" - '@schemaLocation': - description: "Not used for Beijing release" - type: "string" - '@baseType': - description: "Not used for Beijing release" - type: "string" - invariantUUID: - description: "Additional attribute (not in the TMF API) - extended through\ - \ @type - invariantUUID" - type: "string" - toscaModelURL: - description: "Additional attribute (not in the TMF API) - extended through\ - \ @type - toscaModelURL" - type: "string" - toscaResourceName: - description: "Additional attribute (not in the TMF API) - extended through\ - \ @type - toscaResourceName" - type: "string" - category: - description: "Additional attribute - extended through @type - category\nPlease\ - \ note that this attribute is managed in TMF - in future release we'll introduce\ - \ category resource" - type: "string" - subcategory: - description: "Additional attribute - extended through @type - category\nPlease\ - \ note that this attribute is managed in TMF - in future release we'll introduce\ - \ category resourc" - type: "string" - distributionStatus: - $ref: "#/definitions/DistributionStatus" - version: - description: "Service specification version - Filled with SDC Service version" - type: "string" - lifecycleStatus: - $ref: "#/definitions/LifecycleStatusValues" - targetServiceSchema: - $ref: "#/definitions/TargetServiceSchemaRef" - attachment: - type: "array" - items: - $ref: "#/definitions/Attachment" - relatedParty: - type: "array" - items: - $ref: "#/definitions/RelatedPartyRef" - resourceSpecification: - type: "array" - items: - $ref: "#/definitions/ResourceSpecificationRef" - serviceSpecCharacteristic: - type: "array" - items: - $ref: "#/definitions/ServiceSpecCharacteristic" - ServiceSpecCharacteristic: - description: "A characteristic quality or distinctive feature of a ServiceSpecification.\ - \ \nServiceSpecCharacteristic are retrieved in the serviceTosca file in the\ - \ topology_template section in the inputs section." - type: "object" - properties: - name: - description: "Name of the characteristic - Filled with parameter_name" - type: "string" - description: - description: "A narrative that explains in detail what the characteristic\ - \ is - Filled with parameter_description" - type: "string" - valueType: - description: "A kind of value that the characteristic can take on, such as\ - \ numeric, text and so forth - Filled with parameter_type" - type: "string" - '@type': - description: "This attribute allows to dynamically extends TMF class. Valued\ - \ with: 'ONAPserviceCharacteristic'. We do not used this features in nbi\ - \ Beijing release." - type: "string" - '@schemaLocation': - description: "An url pointing to type description - we do not use it in nbi\ - \ Beijing release" - type: "string" - required: - description: "A parameter to define if the characteristic is mandatory - Filled\ - \ from parameter_required – if not fielded by default ‘true’" - type: "boolean" - default: true - status: - description: "Status of the characteristic - filled with status_value" - type: "string" - serviceSpecCharacteristicValue: - type: "array" - items: - $ref: "#/definitions/ServiceSpecCharacteristicValue" - Attachment: - description: "An attachment is a file uses to describe the service.\nIn nbi we\ - \ use attachment to retrieve ONAP artifacts." - type: "object" - properties: - id: - description: "Unique identifier of the attachment - filled with artifactUUID." - type: "string" - name: - description: "Name of the attachment - filled with artifactName" - type: "string" - description: - description: "Description of the attachment - filled with artifactDescription" - type: "string" - '@type': - description: "This attribute allows to dynamically extends TMF class. Valued\ - \ with 'ONAPartifact'. We used this features to add following attributes:\ - \ \nartifactLabel\nartifactGroupType\nartifactTimeout\nartifactChecksum\n\ - artifactVersion\ngeneratedFromUUID" - type: "string" - default: "ONAPartifact" - artifactLabel: - description: "Additional attribute (not in the TMF API) - extended through\ - \ @type - artifactLabel" - type: "string" - artifactGroupType: - description: "Additional attribute (not in the TMF API) - extended through\ - \ @type - artifactGroupType" - type: "string" - artifactTimeout: - description: "Additional attribute (not in the TMF API) - extended through\ - \ @type - artifactTimeout" - type: "string" - artifactChecksum: - description: "Additional attribute (not in the TMF API) - extended through\ - \ @type - artifactChecksum" - type: "string" - artifactVersion: - description: "Additional attribute (not in the TMF API) - extended through\ - \ @type - artifactVersion" - type: "string" - generatedFromUUID: - description: "Additional attribute (not in the TMF API) - extended through\ - \ @type - generatedFromUUID" - type: "string" - url: - description: "Uniform Resource Locator, is a web page address - filled with\ - \ artifactURL" - type: "string" - mimeType: - description: "Filled with artifactType" - type: "string" - ServiceSpecCharacteristicValue: - description: "A number or text that can be assigned to a service specification\ - \ characteristic.\nServiceSpecCharacteristicValue are retrieved in the service\ - \ Tosca file" - type: "object" - properties: - valueType: - description: "A kind of value that the characteristic can take on, such as\ - \ numeric, text, and so forth\nRetrieved in the Tosca in the topology_template\ - \ section in the inputs section - parameter_type. \nWe do not manage parameter_type=\ - \ list or map for Beijing release" - type: "string" - isDefault: - description: "Information calculated from parameter default in the Tosca file" - type: "boolean" - value: - description: "A discrete value that the characteristic can take on" - type: "string" - ResourceSpecificationRef: - description: "A list of resourceSpec identified to deliver the service.\nfor nbi\ - \ we retrieve resource information available in service description (through\ - \ SDC api) bu as well information retrieved in the TOSCA file." - type: "object" - properties: - id: - description: "Unique identifier of the resource specification - filled with\ - \ resourceUUID" - type: "string" - version: - description: "Version for this resource specification - filled with resourceVersion" - type: "string" - name: - description: "Name of the resource specification - filled with resourceName" - type: "string" - '@type': - description: "This attribute allows to dynamically extends TMF class. Valued\ - \ with: 'ONAPresource'. We used this features to add following attributes:\n\ - resourceInstanceName\nresourceInvariantUUID\nresourceType\nmodelCustomizationName\n\ - modelCustomizationId" - type: "string" - default: "ONAPresource" - resourceInstanceName: - description: "Additional attribute (not in the TMF API) - extended through\ - \ @type - resourceInstanceName" - type: "string" - resourceInvariantUUID: - description: "Additional attribute (not in the TMF API) - extended through\ - \ @type - resourceInvariantUUID" - type: "string" - resourceType: - description: "Additional attribute (not in the TMF API) - extended through\ - \ @type - resoucreType" - type: "string" - modelCustomizationName: - description: "Additional attribute (not in the TMF API) - extended through\ - \ @type - Retrieved in the TOSCA file : attribute name in topology_template/node_template\ - \ for the resource" - type: "string" - modelCustomizationId: - description: "Additional attribute (not in the TMF API) - extended through\ - \ @type - Retrieved in the TOSCA file : attribute customizationUUID in topology_template/node_template\ - \ for the resource" - type: "string" - TargetServiceSchemaRef: - description: "" - required: - - "@type" - - "@schemaLocation" - type: "object" - properties: - '@type': - description: "" - type: "string" - '@schemaLocation': - description: "" - type: "string" diff --git a/docs/offeredapis/swaggers/serviceInventory_1_0_0.json b/docs/offeredapis/swaggers/serviceInventory_1_0_0.json deleted file mode 100644 index 5c2c7c5..0000000 --- a/docs/offeredapis/swaggers/serviceInventory_1_0_0.json +++ /dev/null @@ -1,620 +0,0 @@ - -{ - "swagger": "2.0", - "info": { - "description": "serviceInventory API designed for ONAP Beijing Release.\nThis API is build from TMF open API18.0 (applying TMF Guideline 3.0)\nonly operation GET (by id & byList) for resource serviceSpecification is available", - "version": "1.0.0", - "title": "API ServiceInventory" - }, - - "host": "serverRoot", - "basePath": "/nbi/api/v1", - "schemes": [ - "https" - ], - "consumes": [ - "application/json;charset=utf-8" - ], - "produces": [ - "application/json;charset=utf-8" - ], - "tags": [ - - { - "name": "Service", - "description": "" - } - ], - "paths": { - "/service": { - "get": { - "tags": [ - "Service" - ], - "operationId": "serviceFind", - "summary": "List services", - "description": "This operation list service entities. \nAttribute selection is restricted. \nfields attribute may be used to filter retrieved attribute(s) for each service\n\nSpecific business errors for current operation will be encapsulated in\n\nHTTP Response 422 Unprocessable entity\n", - "deprecated": false, - - "parameters": [ - - { - "name": "relatedParty.id", - "required": false, - "in": "query", - "description": "", - - "type": "string" - }, - { - "name": "serviceSpecification.id", - "required": false, - "in": "query", - "description": "", - - "type": "string" - }, - { - "name": "serviceSpecification.name", - "required": false, - "in": "query", - "description": "", - - "type": "string" - }, - { - "name": "id", - "required": false, - "in": "query", - "description": "", - - "type": "string" - }, - { - "name": "fields", - "required": false, - "in": "query", - "description": "", - - "type": "string" - } - ], - "responses": { - "200": { - "description": "Success", - "schema": { - "type": "array", - "items": { - "$ref": "#/definitions/ListService" - } - } - - }, - "400": { - - "description": "Bad Request\n\nList of supported error codes:\n- 20: Invalid URL parameter value\n- 21: Missing body\n- 22: Invalid body\n- 23: Missing body field\n- 24: Invalid body field\n- 25: Missing header\n- 26: Invalid header value\n- 27: Missing query-string parameter\n- 28: Invalid query-string parameter value", - "schema": { - - "$ref": "#/definitions/ErrorRepresentation" - } - }, - "401": { - - "description": "Unauthorized\n\nList of supported error codes:\n- 40: Missing credentials\n- 41: Invalid credentials\n- 42: Expired credentials", - "schema": { - - "$ref": "#/definitions/ErrorRepresentation" - } - }, - "403": { - - "description": "Forbidden\n\nList of supported error codes:\n- 50: Access denied\n- 51: Forbidden requester\n- 52: Forbidden user\n- 53: Too many requests", - "schema": { - - "$ref": "#/definitions/ErrorRepresentation" - } - }, - "404": { - - "description": "Not Found\n\nList of supported error codes:\n- 60: Resource not found", - "schema": { - - "$ref": "#/definitions/ErrorRepresentation" - } - }, - "422": { - - "description": "Unprocessable entity\n\nFunctional error", - "schema": { - - "$ref": "#/definitions/ErrorRepresentation" - } - }, - "500": { - - "description": "Internal Server Error\n\nList of supported error codes:\n- 1: Internal error", - "schema": { - - "$ref": "#/definitions/ErrorRepresentation" - } - }, - "503": { - - "description": "Service Unavailable\n\nList of supported error codes:\n- 5: The service is temporarily unavailable\n- 6: Orange API is over capacity, retry later !", - "schema": { - - "$ref": "#/definitions/ErrorRepresentation" - } - } - } - } - }, - "/service/{id}": { - "get": { - "tags": [ - "Service" - ], - "operationId": "serviceGet", - "summary": "Retrieve a service", - "description": "This operation retrieves a service entity. \nAttribute selection is enabled for all first level attributes.\n\nSpecific business errors for current operation will be encapsulated in\n\nHTTP Response 422 Unprocessable entity\n", - "deprecated": false, - - "parameters": [ - - { - "name": "id", - "in": "path", - "required": true, - "type": "string", - "description": "" - }, - { - "name": "relatedParty.id", - "required": false, - "in": "query", - "description": "", - - "type": "string" - }, - { - "name": "serviceSpecification.id", - "required": false, - "in": "query", - "description": "", - - "type": "string" - }, - { - "name": "serviceSpecification.name", - "required": false, - "in": "query", - "description": "", - - "type": "string" - } - ], - "responses": { - "200": { - "description": "Success", - "schema": { - "$ref": "#/definitions/Service" - } - - }, - "400": { - - "description": "Bad Request\n\nList of supported error codes:\n- 20: Invalid URL parameter value\n- 21: Missing body\n- 22: Invalid body\n- 23: Missing body field\n- 24: Invalid body field\n- 25: Missing header\n- 26: Invalid header value\n- 27: Missing query-string parameter\n- 28: Invalid query-string parameter value", - "schema": { - - "$ref": "#/definitions/ErrorRepresentation" - } - }, - "401": { - - "description": "Unauthorized\n\nList of supported error codes:\n- 40: Missing credentials\n- 41: Invalid credentials\n- 42: Expired credentials", - "schema": { - - "$ref": "#/definitions/ErrorRepresentation" - } - }, - "403": { - - "description": "Forbidden\n\nList of supported error codes:\n- 50: Access denied\n- 51: Forbidden requester\n- 52: Forbidden user\n- 53: Too many requests", - "schema": { - - "$ref": "#/definitions/ErrorRepresentation" - } - }, - "404": { - - "description": "Not Found\n\nList of supported error codes:\n- 60: Resource not found", - "schema": { - - "$ref": "#/definitions/ErrorRepresentation" - } - }, - "422": { - - "description": "Unprocessable entity\n\nFunctional error", - "schema": { - - "$ref": "#/definitions/ErrorRepresentation" - } - }, - "500": { - - "description": "Internal Server Error\n\nList of supported error codes:\n- 1: Internal error", - "schema": { - - "$ref": "#/definitions/ErrorRepresentation" - } - }, - "503": { - - "description": "Service Unavailable\n\nList of supported error codes:\n- 5: The service is temporarily unavailable\n- 6: Orange API is over capacity, retry later !", - "schema": { - - "$ref": "#/definitions/ErrorRepresentation" - } - } - } - } - } - }, -"definitions": { - - "stateValues": { - "description": "", - - "type": "string", - "enum": [ - "feasibilityChecked", - "designed", - "reserved", - "inactive", - "active", - "terminated"] - - }, - - "ErrorRepresentation": { - "description": "This class is used to describe error.\nfor nbi Beijing release we do not manage additional error for serviceCatalog", - - - "required": [ - - "code", - "reason" - ], - "type": "object", - "properties": { - "code": { - "description": "Application related code (as defined in the API or from a common list)", - "type": "integer", - "format": "int32" - }, - "reason": { - "description": "Text that explains the reason for error. This can be shown to a client user.", - "type": "string" - }, - "message": { - "description": "Text that provide more details and corrective actions related to the error. This can be shown to a client user.", - "type": "string" - }, - "status": { - "description": "http error code extension like 400-2", - "type": "string" - }, - "referenceError": { - "description": "url pointing to documentation describing the error", - "type": "string" - }, - "@type": { - "description": "The class type of a REST resource.", - "type": "string" - }, - "@schemaLocation": { - "description": "it provides a link to the schema describing a REST resource.", - "type": "string" - } - } - - }, - - "Service": { - "description": "Instantiated service (service_instance) in AAI", - - - "type": "object", - "properties": { - "id": { - "description": "Unique identifier of the service - Valued with service-instance-id", - "type": "string" - }, - "href": { - "description": "Reference of the service\nNot managed in Beijing release", - "type": "string" - }, - "name": { - "description": "Name of the service - Valued with service-instance-name", - "type": "string" - }, - "type": { - "description": "Service type - valued with 'service-instance'", - "type": "string" - }, - "state": { - - "$ref": "#/definitions/stateValues" - }, - "hasStarted": { - "description": "This is a Boolean attribute that, if TRUE, signifies that this Service has already been started. If the value of this attribute is FALSE, then this signifies that this Service has NOT been Started\nNot managed in Beijing release", - "type": "boolean" - }, - "@type": { - "description": "This attribute allows to dynamically extends TMF class. Not used in Beijing release.", - "type": "string" - }, - "@baseType": { - "description": "Not managed in Beijing release", - "type": "string" - }, - "@schemaLocation": { - "description": "Not managed in Beijing release", - "type": "string" - }, - "serviceSpecification": { - - "$ref": "#/definitions/ServiceSpecificationRef" - }, - "characteristic": { - - "type": "array", - "items": { - "$ref": "#/definitions/ServiceCharacteristic" - } - }, - "supportingResource": { - - "type": "array", - "items": { - "$ref": "#/definitions/SupportingResource" - } - }, - "relatedParty": { - - "type": "array", - "items": { - "$ref": "#/definitions/RelatedPartyRef" - } - } - } - - }, - - "ServiceSpecificationRef": { - "description": "Service specification reference: ServiceSpecification of this service (catalog information)", - - - "type": "object", - "properties": { - "id": { - "description": "Unique identifier of the service specification. valued to model-version-id", - "type": "string" - }, - "href": { - "description": "Reference of the service specification.\nnot managed in Beijing release.", - "type": "string" - }, - "name": { - "description": "Name of the required service specification", - "type": "string" - }, - "version": { - "description": "Service specification version.\nNot managed in Beijing release", - "type": "string" - }, - "@referredType": { - "description": "This attribute allows to dynamically extends TMF class. Valued with 'ONAPservice'. We used this features to add following attribute: invariantUUID", - "type": "string" - }, - "@schemaLocation": { - "description": "Not managed in Beijing release", - "type": "string" - }, - "invariantUUID": { - "description": "Additional attribute (not in the TMF API) - extended through @referredType - model-invariant-id", - "type": "string" - } - } - - }, - - "ServiceCharacteristic": { - "description": "A list of name value pairs that define the service characteristics\nNot managed in Beijing release.", - - - "required": [ - - "name" - ], - "type": "object", - "properties": { - "name": { - "description": "Name of the characteristic\nNot managed in Beijing release.", - "type": "string" - }, - "valueType": { - "description": "Type of value for this characteristic.\nNot managed in Beijing release.", - "type": "string" - }, - "value": { - - "$ref": "#/definitions/Value" - } - } - - }, - - "SupportingResource": { - "description": "Supporting resource - A supportingResource will be retrieved for each relationship of the relationship-list where related-link describe a vnf", - - - "type": "object", - "properties": { - "id": { - "description": "Unique identifier of the supporting resource - Valued to vnf-id", - "type": "string" - }, - "href": { - "description": "Reference of the supporting resource", - "type": "string" - }, - "role": { - "description": "Not managed in Beijing release.", - "type": "string" - }, - "name": { - "description": "Name of the supporting resource - Valued with vnf_-name", - "type": "string" - }, - "@referredType": { - "description": "This attribute allows to dynamically extends TMF class. Valued with 'ONAP resource'. We used this features to add following attributes:\n status\t\n modelInvariantId\n modelVersionId\n modelCustomisationId", - "type": "string" - }, - "@schemaLocation": { - "description": "Not managed in Beijing release.", - "type": "string" - }, - "status": { - "description": "Additional attribute (not in the TMF API) - extended through @referredType - valued with prov-status", - "type": "string" - }, - "modelInvariantId": { - "description": "Additional attribute (not in the TMF API) - extended through @referredType - valued with model-invariant-id", - "type": "string" - }, - "modelVersionId": { - "description": "Additional attribute (not in the TMF API) - extended through @referredType - valued with model-verson-id", - "type": "string" - }, - "modelCustomisationId": { - "description": "Additional attribute (not in the TMF API) - extended through @referredType - valued with model-customisation-id", - "type": "string" - } - } - - }, - - "RelatedPartyRef": { - "description": "RelatedParty reference. A related party defines party or party role linked to a specific entity.\nOnly ONAP Customer is managed in Beijing release.", - - - "type": "object", - "properties": { - "id": { - "description": "Unique identifier of a related party", - "type": "string" - }, - "href": { - "description": "Reference of a related party.\nNot filled in Beijing release.", - "type": "string" - }, - "role": { - "description": "Role played by the related party.\nFilled with 'ONAPcustomer'", - "type": "string" - }, - "@referredType": { - "description": "Not managed in the Beijing release.", - "type": "string" - } - } - - }, - - "Value": { - "description": "Structure used to describe characteristic value.\nNot managed in Beijing release.", - - - "type": "object", - "properties": { - "@type": { - "description": "Not managed in Beijing release.", - "type": "string" - }, - "@schemaLocation": { - "description": "Not managed in Beijing release.", - "type": "string" - }, - "serviceCharacteristicValue": { - "description": "Not managed in Beijing release.", - "type": "string" - } - } - - }, - - "ListRelatedPartyRef": { - "description": "This class is used to structure list of service(s) retrieved", - - - "type": "object", - "properties": { - "id": { - "description": "Unique identifier of a related party", - "type": "string" - }, - "role": { - "description": "Role played by the related party - only role “ONAPcustomer” is managed in Beijing release.", - "type": "string" - } - } - - }, - - "ListServiceSpecificationRef": { - "description": "This class is used to structure list of service(s) retrieved", - - - "type": "object", - "properties": { - "id": { - "description": "Unique identifier of the service specification", - "type": "string" - }, - "name": { - "description": "Name of the required service specification", - "type": "string" - } - } - - }, - - "ListService": { - "description": "This class is used to structure list of service(s) retrieved", - - - "type": "object", - "properties": { - "id": { - "description": "Unique identifier of the service", - "type": "string" - }, - "name": { - "description": "Name of the service", - "type": "string" - }, - "serviceSpecification": { - - "$ref": "#/definitions/ListServiceSpecificationRef" - }, - "relatedParty": { - - "$ref": "#/definitions/ListRelatedPartyRef" - } - } - - } - } -} - \ No newline at end of file diff --git a/docs/offeredapis/swaggers/serviceInventory_1_0_0.yaml b/docs/offeredapis/swaggers/serviceInventory_1_0_0.yaml deleted file mode 100644 index c4a169e..0000000 --- a/docs/offeredapis/swaggers/serviceInventory_1_0_0.yaml +++ /dev/null @@ -1,427 +0,0 @@ -# This work is licensed under a Creative Commons Attribution 4.0 International License. -# http://creativecommons.org/licenses/by/4.0 -# Copyright 2018 Orange - -swagger: "2.0" -info: - description: "serviceInventory API designed for ONAP Beijing Release.\nThis API\ - \ is build from TMF open API18.0 (applying TMF Guideline 3.0)\nonly operation\ - \ GET (by id & byList) for resource serviceSpecification is available" - version: "1.0.0" - title: "API ServiceInventory" -host: "serverRoot" -basePath: "/nbi/api/v1" -schemes: -- "https" -consumes: -- "application/json;charset=utf-8" -produces: -- "application/json;charset=utf-8" -tags: -- name: "Service" - description: "" -paths: - /service: - get: - tags: - - "Service" - operationId: "serviceFind" - summary: "List services" - description: "This operation list service entities. \nAttribute selection is\ - \ restricted. \nfields attribute may be used to filter retrieved attribute(s)\ - \ for each service\n\nSpecific business errors for current operation will\ - \ be encapsulated in\n\nHTTP Response 422 Unprocessable entity\n" - deprecated: false - parameters: - - name: "relatedParty.id" - required: false - in: "query" - description: "" - type: "string" - - name: "serviceSpecification.id" - required: false - in: "query" - description: "" - type: "string" - - name: "serviceSpecification.name" - required: false - in: "query" - description: "" - type: "string" - - name: "id" - required: false - in: "query" - description: "" - type: "string" - - name: "fields" - required: false - in: "query" - description: "" - type: "string" - responses: - 200: - description: "Success" - schema: - type: "array" - items: - $ref: "#/definitions/ListService" - 400: - description: "Bad Request\n\nList of supported error codes:\n- 20: Invalid\ - \ URL parameter value\n- 21: Missing body\n- 22: Invalid body\n- 23: Missing\ - \ body field\n- 24: Invalid body field\n- 25: Missing header\n- 26: Invalid\ - \ header value\n- 27: Missing query-string parameter\n- 28: Invalid query-string\ - \ parameter value" - schema: - $ref: "#/definitions/ErrorRepresentation" - 401: - description: "Unauthorized\n\nList of supported error codes:\n- 40: Missing\ - \ credentials\n- 41: Invalid credentials\n- 42: Expired credentials" - schema: - $ref: "#/definitions/ErrorRepresentation" - 403: - description: "Forbidden\n\nList of supported error codes:\n- 50: Access\ - \ denied\n- 51: Forbidden requester\n- 52: Forbidden user\n- 53: Too many\ - \ requests" - schema: - $ref: "#/definitions/ErrorRepresentation" - 404: - description: "Not Found\n\nList of supported error codes:\n- 60: Resource\ - \ not found" - schema: - $ref: "#/definitions/ErrorRepresentation" - 422: - description: "Unprocessable entity\n\nFunctional error" - schema: - $ref: "#/definitions/ErrorRepresentation" - 500: - description: "Internal Server Error\n\nList of supported error codes:\n\ - - 1: Internal error" - schema: - $ref: "#/definitions/ErrorRepresentation" - 503: - description: "Service Unavailable\n\nList of supported error codes:\n- 5:\ - \ The service is temporarily unavailable\n- 6: Orange API is over capacity,\ - \ retry later !" - schema: - $ref: "#/definitions/ErrorRepresentation" - /service/{id}: - get: - tags: - - "Service" - operationId: "serviceGet" - summary: "Retrieve a service" - description: "This operation retrieves a service entity. \nAttribute selection\ - \ is enabled for all first level attributes.\n\nSpecific business errors for\ - \ current operation will be encapsulated in\n\nHTTP Response 422 Unprocessable\ - \ entity\n" - deprecated: false - parameters: - - name: "id" - in: "path" - required: true - type: "string" - description: "" - - name: "relatedParty.id" - required: false - in: "query" - description: "" - type: "string" - - name: "serviceSpecification.id" - required: false - in: "query" - description: "" - type: "string" - - name: "serviceSpecification.name" - required: false - in: "query" - description: "" - type: "string" - responses: - 200: - description: "Success" - schema: - $ref: "#/definitions/Service" - 400: - description: "Bad Request\n\nList of supported error codes:\n- 20: Invalid\ - \ URL parameter value\n- 21: Missing body\n- 22: Invalid body\n- 23: Missing\ - \ body field\n- 24: Invalid body field\n- 25: Missing header\n- 26: Invalid\ - \ header value\n- 27: Missing query-string parameter\n- 28: Invalid query-string\ - \ parameter value" - schema: - $ref: "#/definitions/ErrorRepresentation" - 401: - description: "Unauthorized\n\nList of supported error codes:\n- 40: Missing\ - \ credentials\n- 41: Invalid credentials\n- 42: Expired credentials" - schema: - $ref: "#/definitions/ErrorRepresentation" - 403: - description: "Forbidden\n\nList of supported error codes:\n- 50: Access\ - \ denied\n- 51: Forbidden requester\n- 52: Forbidden user\n- 53: Too many\ - \ requests" - schema: - $ref: "#/definitions/ErrorRepresentation" - 404: - description: "Not Found\n\nList of supported error codes:\n- 60: Resource\ - \ not found" - schema: - $ref: "#/definitions/ErrorRepresentation" - 422: - description: "Unprocessable entity\n\nFunctional error" - schema: - $ref: "#/definitions/ErrorRepresentation" - 500: - description: "Internal Server Error\n\nList of supported error codes:\n\ - - 1: Internal error" - schema: - $ref: "#/definitions/ErrorRepresentation" - 503: - description: "Service Unavailable\n\nList of supported error codes:\n- 5:\ - \ The service is temporarily unavailable\n- 6: Orange API is over capacity,\ - \ retry later !" - schema: - $ref: "#/definitions/ErrorRepresentation" -definitions: - stateValues: - description: "" - type: "string" - enum: - - "feasibilityChecked" - - "designed" - - "reserved" - - "inactive" - - "active" - - "terminated" - ErrorRepresentation: - description: "This class is used to describe error.\nfor nbi Beijing release we\ - \ do not manage additional error for serviceCatalog" - required: - - "code" - - "reason" - type: "object" - properties: - code: - description: "Application related code (as defined in the API or from a common\ - \ list)" - type: "integer" - format: "int32" - reason: - description: "Text that explains the reason for error. This can be shown to\ - \ a client user." - type: "string" - message: - description: "Text that provide more details and corrective actions related\ - \ to the error. This can be shown to a client user." - type: "string" - status: - description: "http error code extension like 400-2" - type: "string" - referenceError: - description: "url pointing to documentation describing the error" - type: "string" - '@type': - description: "The class type of a REST resource." - type: "string" - '@schemaLocation': - description: "it provides a link to the schema describing a REST resource." - type: "string" - Service: - description: "Instantiated service (service_instance) in AAI" - type: "object" - properties: - id: - description: "Unique identifier of the service - Valued with service-instance-id" - type: "string" - href: - description: "Reference of the service\nNot managed in Beijing release" - type: "string" - name: - description: "Name of the service - Valued with service-instance-name" - type: "string" - type: - description: "Service type - valued with 'service-instance'" - type: "string" - state: - $ref: "#/definitions/stateValues" - hasStarted: - description: "This is a Boolean attribute that, if TRUE, signifies that this\ - \ Service has already been started. If the value of this attribute is FALSE,\ - \ then this signifies that this Service has NOT been Started\nNot managed\ - \ in Beijing release" - type: "boolean" - '@type': - description: "This attribute allows to dynamically extends TMF class. Not\ - \ used in Beijing release." - type: "string" - '@baseType': - description: "Not managed in Beijing release" - type: "string" - '@schemaLocation': - description: "Not managed in Beijing release" - type: "string" - serviceSpecification: - $ref: "#/definitions/ServiceSpecificationRef" - characteristic: - type: "array" - items: - $ref: "#/definitions/ServiceCharacteristic" - supportingResource: - type: "array" - items: - $ref: "#/definitions/SupportingResource" - relatedParty: - type: "array" - items: - $ref: "#/definitions/RelatedPartyRef" - ServiceSpecificationRef: - description: "Service specification reference: ServiceSpecification of this service\ - \ (catalog information)" - type: "object" - properties: - id: - description: "Unique identifier of the service specification. valued to model-version-id" - type: "string" - href: - description: "Reference of the service specification.\nnot managed in Beijing\ - \ release." - type: "string" - name: - description: "Name of the required service specification" - type: "string" - version: - description: "Service specification version.\nNot managed in Beijing release" - type: "string" - '@referredType': - description: "This attribute allows to dynamically extends TMF class. Valued\ - \ with 'ONAPservice'. We used this features to add following attribute:\ - \ invariantUUID" - type: "string" - '@schemaLocation': - description: "Not managed in Beijing release" - type: "string" - invariantUUID: - description: "Additional attribute (not in the TMF API) - extended through\ - \ @referredType - model-invariant-id" - type: "string" - ServiceCharacteristic: - description: "A list of name value pairs that define the service characteristics\n\ - Not managed in Beijing release." - required: - - "name" - type: "object" - properties: - name: - description: "Name of the characteristic\nNot managed in Beijing release." - type: "string" - valueType: - description: "Type of value for this characteristic.\nNot managed in Beijing\ - \ release." - type: "string" - value: - $ref: "#/definitions/Value" - SupportingResource: - description: "Supporting resource - A supportingResource will be retrieved for\ - \ each relationship of the relationship-list where related-link describe a vnf" - type: "object" - properties: - id: - description: "Unique identifier of the supporting resource - Valued to vnf-id" - type: "string" - href: - description: "Reference of the supporting resource" - type: "string" - role: - description: "Not managed in Beijing release." - type: "string" - name: - description: "Name of the supporting resource - Valued with vnf_-name" - type: "string" - '@referredType': - description: "This attribute allows to dynamically extends TMF class. Valued\ - \ with 'ONAP resource'. We used this features to add following attributes:\n\ - \ status\t\n modelInvariantId\n modelVersionId\n modelCustomisationId" - type: "string" - '@schemaLocation': - description: "Not managed in Beijing release." - type: "string" - status: - description: "Additional attribute (not in the TMF API) - extended through\ - \ @referredType - valued with prov-status" - type: "string" - modelInvariantId: - description: "Additional attribute (not in the TMF API) - extended through\ - \ @referredType - valued with model-invariant-id" - type: "string" - modelVersionId: - description: "Additional attribute (not in the TMF API) - extended through\ - \ @referredType - valued with model-verson-id" - type: "string" - modelCustomisationId: - description: "Additional attribute (not in the TMF API) - extended through\ - \ @referredType - valued with model-customisation-id" - type: "string" - RelatedPartyRef: - description: "RelatedParty reference. A related party defines party or party role\ - \ linked to a specific entity.\nOnly ONAP Customer is managed in Beijing release." - type: "object" - properties: - id: - description: "Unique identifier of a related party" - type: "string" - href: - description: "Reference of a related party.\nNot filled in Beijing release." - type: "string" - role: - description: "Role played by the related party.\nFilled with 'ONAPcustomer'" - type: "string" - '@referredType': - description: "Not managed in the Beijing release." - type: "string" - Value: - description: "Structure used to describe characteristic value.\nNot managed in\ - \ Beijing release." - type: "object" - properties: - '@type': - description: "Not managed in Beijing release." - type: "string" - '@schemaLocation': - description: "Not managed in Beijing release." - type: "string" - serviceCharacteristicValue: - description: "Not managed in Beijing release." - type: "string" - ListRelatedPartyRef: - description: "This class is used to structure list of service(s) retrieved" - type: "object" - properties: - id: - description: "Unique identifier of a related party" - type: "string" - role: - description: "Role played by the related party - only role “ONAPcustomer”\ - \ is managed in Beijing release." - type: "string" - ListServiceSpecificationRef: - description: "This class is used to structure list of service(s) retrieved" - type: "object" - properties: - id: - description: "Unique identifier of the service specification" - type: "string" - name: - description: "Name of the required service specification" - type: "string" - ListService: - description: "This class is used to structure list of service(s) retrieved" - type: "object" - properties: - id: - description: "Unique identifier of the service" - type: "string" - name: - description: "Name of the service" - type: "string" - serviceSpecification: - $ref: "#/definitions/ListServiceSpecificationRef" - relatedParty: - $ref: "#/definitions/ListRelatedPartyRef" diff --git a/docs/offeredapis/swaggers/serviceOrder_1_0_0.json b/docs/offeredapis/swaggers/serviceOrder_1_0_0.json deleted file mode 100644 index b2ffb2c..0000000 --- a/docs/offeredapis/swaggers/serviceOrder_1_0_0.json +++ /dev/null @@ -1,1071 +0,0 @@ - -{ - "swagger": "2.0", - "info": { - "description": "serviceOrder API designed for ONAP Beijing Release.\nThis API is build from TMF open API18.0 (applying TMF Guideline 3.0);\nOnly operations GET (by id and list) and POST are available.", - "version": "1.0.0_inProgress", - "title": "API ServiceOrder", - "x-logo": { - "url": "/redoc/logo.png", - "backgroundColor": "#FFFFFF" - } - }, - - "host": "serverRoot", - "basePath": "/nbi/api/v1", - "schemes": [ - "https" - ], - "consumes": [ - "application/json;charset=utf-8" - ], - "produces": [ - "application/json;charset=utf-8" - ], - "tags": [ - - { - "name": "ServiceOrder", - "description": "A Service Order is a type of order which can be used to describe a group of operations on service – one service order item per service. An action at the level of the service order item describe the operation to be done on a service (add, terminate for example). The service order is triggered from the BSS system in charge of the product order management to ONAP that will manage the service fulfillment." - } - ], - "paths": { - "/serviceOrder": { - "post": { - "tags": [ - "ServiceOrder" - ], - "operationId": "serviceOrderCreate", - "summary": "Create a service order", - "description": "This operation creates a service order entity.\nThe TMF Open API specification document provides the list of mandatory and non mandatory attributes when creating a ServiceOrder, including any possible rule conditions and applicable default values.\nPOST should be used without specifying the id and the href, the Service Order Management system is in charge of generating the id + href for the ServiceOrder.\n\nSpecific business errors for current operation will be encapsulated in\n\nHTTP Response 422 Unprocessable entity\n\n - 100: OrderItem with 'add' action but serviceSpecification id missing\n \n - 101: OrderItem with 'change'/'noChange'/'remove' but service id missing\n \n - 102: OrderItem with 'add' action - serviceSpecification id provided but not existing\n \n - 103: OrderItem with 'add' action but service id already existing in the inventory\n \n - 104: A customer for existing service(s) is provided but he did not exist\n \n - 105: OrderItem with 'change'/'noChange'/'remove' - Service id provided but it is not existing in the inventory\n \n - 106: [Not managed for current Relese] Issue with lcpCloudRegionId and tenantId provided\n ", - "deprecated": false, - - "parameters": [ - - { - "name": "serviceOrder", - "required": true, - "in": "body", - "description": "", - "schema": { - "$ref": "#/definitions/CreateServiceOrder" - } - } - ], - "responses": { - "201": { - "description": "Success", - "schema": { - "$ref": "#/definitions/ServiceOrder" - } - - }, - "400": { - - "description": "Bad Request\n\nList of supported error codes:\n- 20: Invalid URL parameter value\n- 21: Missing body\n- 22: Invalid body\n- 23: Missing body field\n- 24: Invalid body field\n- 25: Missing header\n- 26: Invalid header value\n- 27: Missing query-string parameter\n- 28: Invalid query-string parameter value", - "schema": { - - "$ref": "#/definitions/ErrorRepresentation" - } - }, - "401": { - - "description": "Unauthorized\n\nList of supported error codes:\n- 40: Missing credentials\n- 41: Invalid credentials\n- 42: Expired credentials", - "schema": { - - "$ref": "#/definitions/ErrorRepresentation" - } - }, - "403": { - - "description": "Forbidden\n\nList of supported error codes:\n- 50: Access denied\n- 51: Forbidden requester\n- 52: Forbidden user\n- 53: Too many requests", - "schema": { - - "$ref": "#/definitions/ErrorRepresentation" - } - }, - "404": { - - "description": "Not Found\n\nList of supported error codes:\n- 60: Resource not found", - "schema": { - - "$ref": "#/definitions/ErrorRepresentation" - } - }, - "422": { - - "description": "Unprocessable entity\n\nFunctional error\n\nSpecific encapsulated business errors for current operation\n\n - 100: OrderItem with 'add' action but serviceSpecification id missing\n \n - 101: OrderItem with 'change'/'noChange'/'remove' but service id missing\n \n - 102: OrderItem with 'add' action - serviceSpecification id provided but not existing\n \n - 103: OrderItem with 'add' action but service id already existing in the inventory\n \n - 104: A customer for existing service(s) is provided but he did not exist\n \n - 105: OrderItem with 'change'/'noChange'/'remove' - Service id provided but it is not existing in the inventory\n \n - 106: [Not managed for current Relese] Issue with lcpCloudRegionId and tenantId provided\n ", - "schema": { - - "$ref": "#/definitions/ErrorRepresentation" - } - }, - "500": { - - "description": "Internal Server Error\n\nList of supported error codes:\n- 1: Internal error", - "schema": { - - "$ref": "#/definitions/ErrorRepresentation" - } - }, - "503": { - - "description": "Service Unavailable\n\nList of supported error codes:\n- 5: The service is temporarily unavailable\n- 6: Orange API is over capacity, retry later !", - "schema": { - - "$ref": "#/definitions/ErrorRepresentation" - } - } - } - }, - "get": { - "tags": [ - "ServiceOrder" - ], - "operationId": "serviceOrderFind", - "summary": "List service orders", - "description": "Retrieve and list service order entities according to given criteria.\nOnly a predefined set of attribute is proposed.\nAttribute selection could be described in the fields attribute.\n\nSpecific business errors for current operation will be encapsulated in\n\nHTTP Response 422 Unprocessable entity\n", - "deprecated": false, - - "parameters": [ - - { - "name": "externalId", - "required": false, - "in": "query", - "description": "", - - "type": "string" - }, - { - "name": "state", - "required": false, - "in": "query", - "description": "state of the order(s) to be retrieved", - - "type": "string" - }, - { - "name": "description", - "required": false, - "in": "query", - "description": "", - - "type": "string" - }, - { - "name": "orderDate.gt", - "required": false, - "in": "query", - "description": "order date greather than", - - "type": "string" - }, - { - "name": "orderDate.lt", - "required": false, - "in": "query", - "description": "order date lower than", - - "type": "string" - }, - { - "name": "fields", - "required": false, - "in": "query", - "description": "this attribute could be used to filter retrieved attribute(s) and/or sort SO.", - - "type": "string" - }, - { - "name": "offset", - "required": false, - "in": "query", - "description": "The index of the first element to retrieve. Zero is the first element of the collection.", - - "type": "integer", - "format": "int32" - }, - { - "name": "limit", - "required": false, - "in": "query", - "description": "The maximum number of elements to retrieve (it can be greater than the actual available number of items).", - - "type": "integer", - "format": "int32" - } - ], - "responses": { - "200": { - "description": "Success", - "schema": { - "type": "array", - "items": { - "$ref": "#/definitions/ServiceOrder" - } - }, - "headers": { - "X-Total-Count": { - "description": "", - "type": "integer", - "format": "int32" - }, - "X-Result-Count": { - "description": "", - "type": "integer", - "format": "int32" - } - } - - }, - "400": { - - "description": "Bad Request\n\nList of supported error codes:\n- 20: Invalid URL parameter value\n- 21: Missing body\n- 22: Invalid body\n- 23: Missing body field\n- 24: Invalid body field\n- 25: Missing header\n- 26: Invalid header value\n- 27: Missing query-string parameter\n- 28: Invalid query-string parameter value", - "schema": { - - "$ref": "#/definitions/ErrorRepresentation" - } - }, - "401": { - - "description": "Unauthorized\n\nList of supported error codes:\n- 40: Missing credentials\n- 41: Invalid credentials\n- 42: Expired credentials", - "schema": { - - "$ref": "#/definitions/ErrorRepresentation" - } - }, - "403": { - - "description": "Forbidden\n\nList of supported error codes:\n- 50: Access denied\n- 51: Forbidden requester\n- 52: Forbidden user\n- 53: Too many requests", - "schema": { - - "$ref": "#/definitions/ErrorRepresentation" - } - }, - "404": { - - "description": "Not Found\n\nList of supported error codes:\n- 60: Resource not found", - "schema": { - - "$ref": "#/definitions/ErrorRepresentation" - } - }, - "422": { - - "description": "Unprocessable entity\n\nFunctional error", - "schema": { - - "$ref": "#/definitions/ErrorRepresentation" - } - }, - "500": { - - "description": "Internal Server Error\n\nList of supported error codes:\n- 1: Internal error", - "schema": { - - "$ref": "#/definitions/ErrorRepresentation" - } - }, - "503": { - - "description": "Service Unavailable\n\nList of supported error codes:\n- 5: The service is temporarily unavailable\n- 6: Orange API is over capacity, retry later !", - "schema": { - - "$ref": "#/definitions/ErrorRepresentation" - } - } - } - } - }, - "/serviceOrder/{id}": { - "get": { - "tags": [ - "ServiceOrder" - ], - "operationId": "serviceOrderGet", - "summary": "Retrieve a service order", - "description": "This operation retrieves a service order entity. \nAttribute selection is enabled for all first level attributes.\n\nSpecific business errors for current operation will be encapsulated in\n\nHTTP Response 422 Unprocessable entity\n", - "deprecated": false, - - "parameters": [ - - { - "name": "id", - "in": "path", - "required": true, - "type": "string", - "description": "" - }, - { - "name": "fields", - "required": false, - "in": "query", - "description": "Attribute selection", - - "type": "string" - } - ], - "responses": { - "200": { - "description": "Success", - "schema": { - "$ref": "#/definitions/ServiceOrder" - } - - }, - "400": { - - "description": "Bad Request\n\nList of supported error codes:\n- 20: Invalid URL parameter value\n- 21: Missing body\n- 22: Invalid body\n- 23: Missing body field\n- 24: Invalid body field\n- 25: Missing header\n- 26: Invalid header value\n- 27: Missing query-string parameter\n- 28: Invalid query-string parameter value", - "schema": { - - "$ref": "#/definitions/ErrorRepresentation" - } - }, - "401": { - - "description": "Unauthorized\n\nList of supported error codes:\n- 40: Missing credentials\n- 41: Invalid credentials\n- 42: Expired credentials", - "schema": { - - "$ref": "#/definitions/ErrorRepresentation" - } - }, - "403": { - - "description": "Forbidden\n\nList of supported error codes:\n- 50: Access denied\n- 51: Forbidden requester\n- 52: Forbidden user\n- 53: Too many requests", - "schema": { - - "$ref": "#/definitions/ErrorRepresentation" - } - }, - "404": { - - "description": "Not Found\n\nList of supported error codes:\n- 60: Resource not found", - "schema": { - - "$ref": "#/definitions/ErrorRepresentation" - } - }, - "422": { - - "description": "Unprocessable entity\n\nFunctional error", - "schema": { - - "$ref": "#/definitions/ErrorRepresentation" - } - }, - "500": { - - "description": "Internal Server Error\n\nList of supported error codes:\n- 1: Internal error", - "schema": { - - "$ref": "#/definitions/ErrorRepresentation" - } - }, - "503": { - - "description": "Service Unavailable\n\nList of supported error codes:\n- 5: The service is temporarily unavailable\n- 6: Orange API is over capacity, retry later !", - "schema": { - - "$ref": "#/definitions/ErrorRepresentation" - } - } - } - } - } - }, -"definitions": { - - "ActionType": { - "description": "Action type to be describer on the order item.\nmodify is not managed in Beijing release", - - "type": "string", - "enum": [ - "add", - "modify", - "delete", - "noChange"] - - }, - "StateType": { - "description": "List of possible state for the order and the orderItem.", - - "type": "string", - "enum": [ - "acknowledged", - "rejected", - "pending", - "held", - "inProgress", - "cancelled", - "completed", - "failed", - "partial"] - - }, - "RelationshipType": { - "description": "Relationship type;\nOnly reliesOn is managed in Beijing release.", - - "type": "string", - "enum": [ - "reliesOn"] - - }, - - "ErrorRepresentation": { - "description": "Representation of an error.", - - - "required": [ - - "code", - "reason" - ], - "type": "object", - "properties": { - "code": { - "description": "Application related code (as defined in the API or from a common list)", - "type": "integer", - "format": "int32" - }, - "reason": { - "description": "Text that explains the reason for error. This can be shown to a client user.", - "type": "string" - }, - "message": { - "description": "Text that provide more details and corrective actions related to the error. This can be shown to a client user", - "type": "string" - }, - "status": { - "description": "http error code extension like 400-2", - "type": "string" - }, - "referenceError": { - "description": "url pointing to documentation describing the error", - "type": "string" - }, - "@type": { - "description": "The class type of a REST resource", - "type": "string" - }, - "@schemaLocation": { - "description": "it provides a link to the schema describing a REST resource", - "type": "string" - } - } - - }, - - "ServiceRelationship": { - "description": "Linked Services to the one instantiate\nnbi component used this relationship to sort request to ONAP.", - - - "required": [ - - "type", - "service" - ], - "type": "object", - "properties": { - "type": { - - "$ref": "#/definitions/RelationshipType" - }, - "service": { - - "$ref": "#/definitions/Service" - } - } - - }, - - "ServiceRef": { - "description": "Service references", - - - "required": [ - - "id" - ], - "type": "object", - "properties": { - "id": { - "description": "Unique identifier of the service", - "type": "string" - }, - "href": { - "description": "Reference of the service", - "type": "string" - } - } - - }, - - "ServiceCharacteristic": { - "description": "ServiceCharacteristic", - - - "required": [ - - "name" - ], - "type": "object", - "properties": { - "name": { - "description": "Name of characteristic", - "type": "string" - }, - "valueType": { - "description": "", - "type": "string" - }, - "value": { - - "$ref": "#/definitions/Value" - } - } - - }, - - "RelatedParty": { - "description": "A related party defines party which are involved in this order and the role they are playing.\nfor Beijing release:\nWith the current version of APIs used from SO and AAI we need to manage a ‘customer’. This customer concept is confusing with Customer BSS concept. We took the following rules to manage the ‘customer’ information:\no\tIt could be provided through a serviceOrder in the service Order a relatedParty with role ‘ONAPcustomer’ should be provided in the serviceOrder header (we will not consider in this release the party at item level); External API component will check if this customer exists and create it in AAI if not.\no\tIf no relatedParty are provided the service will be affected to ‘generic’ customer (dummy customer) – we assume this ‘generic’ customer always exists.", - - - "required": [ - - "id", - "role" - ], - "type": "object", - "properties": { - "id": { - "description": "Unique identifier of a related party", - "type": "string" - }, - "href": { - "description": "An hyperlink to the party - not used in Beijnig release", - "type": "string" - }, - "role": { - "description": "The role of the related party (e.g. Owner, requester, fullfiller etc).\nONLY 'ONAPcustomer' is considered", - "type": "string" - }, - "name": { - "description": "Name of the related party", - "type": "string" - }, - "@referredType": { - "description": "", - "type": "string" - } - } - - }, - - "ServiceSpecificationRef": { - "description": "The service specification (these attributes are fetched from the catalogue).", - - - "required": [ - - "id" - ], - "type": "object", - "properties": { - "id": { - "description": "Unique identifier of the service specification\nThis information will be used to retrieve SDC information + mapped to SO ModelNameVersionIdin the request.", - "type": "string" - }, - "href": { - "description": "Reference of the service specification\nNot used in Beijing release.", - "type": "string" - }, - "name": { - "description": "Name of the service specification\nNot used in Beijing release", - "type": "string" - }, - "version": { - "description": "Version of the service Specification\nNot used in Beijing release", - "type": "string" - }, - "targetServiceSchema": { - - "$ref": "#/definitions/TargetServiceSchema" - }, - "@type": { - "description": "Not used in Beijing release", - "type": "string" - }, - "@schemaLocation": { - "description": "Not used in Beijing release", - "type": "string" - }, - "@baseType": { - "description": "Not used in Beijing release", - "type": "string" - } - } - - }, - - "Service": { - "description": "Service (to be added, modified, deleted) description", - - - "required": [ - - "id" - ], - "type": "object", - "properties": { - "id": { - "description": "Identifier of a service instance.\nIt must be valued if orderItem action is 'delete' and corresponds to a AAI service.id", - "type": "string" - }, - "href": { - "description": "Reference to the Service (useful for delete or modify command).\nNot managed in Beijing release.", - "type": "string" - }, - "name": { - "description": "Name of the service - When orderItem action is 'add' this name will be used in ONAP/SO request as InstaceName.", - "type": "string" - }, - "serviceState": { - "description": "The lifecycle state of the service requested;\nNot managed in Beijing release.", - "type": "string" - }, - "@type": { - "description": "To define the service type\nNot managed in Beijing Release", - "type": "string" - }, - "@schemaLocation": { - "description": "The URL to get the resource schema.\nNot managed in Beijing Release", - "type": "string" - }, - "serviceCharacteristic": { - - "type": "array", - "items": { - "$ref": "#/definitions/ServiceCharacteristic" - } - }, - "serviceRelationship": { - - "type": "array", - "items": { - "$ref": "#/definitions/ServiceRelationship" - } - }, - "relatedParty": { - - "type": "array", - "items": { - "$ref": "#/definitions/RelatedParty" - } - }, - "serviceSpecification": { - - "$ref": "#/definitions/ServiceSpecificationRef" - } - } - - }, - - "OrderItemRelationship": { - "description": "Linked order item to the one containing this attribute.\nnbi component used this relationship to sort request to ONAP.", - - - "required": [ - - "type", - "id" - ], - "type": "object", - "properties": { - "type": { - - "$ref": "#/definitions/RelationshipType" - }, - "id": { - "description": "Unique identifier of an order item", - "type": "string" - } - } - - }, - - "ServiceOrderItem": { - "description": "An identified part of the order. A service order is decomposed into one or more order items.", - - - "required": [ - - "id", - "service" - ], - "type": "object", - "properties": { - "id": { - "description": "Identifier of the line item (generally it is a sequence number 01, 02, 03, …)", - "type": "string" - }, - "action": { - - "$ref": "#/definitions/ActionType" - }, - "state": { - - "$ref": "#/definitions/StateType" - }, - "@type": { - "description": "Used to extend the order item.\nnot used in Beijing relase", - "type": "string" - }, - "@schemaLocation": { - "description": "not used in Beijing relase", - "type": "string" - }, - "@baseType": { - "description": "not used in Beijing relase", - "type": "string" - }, - "orderItemRelationship": { - - "type": "array", - "items": { - "$ref": "#/definitions/OrderItemRelationship" - } - }, - "service": { - - "$ref": "#/definitions/Service" - } - } - - }, - - "ServiceOrder": { - "description": "A Service Order is a type of order which can be used to place an order between a customer and a service provider or between a service provider and a partner and vice versa", - - - "required": [ - - "id" - ], - "type": "object", - "properties": { - "id": { - "description": "ID created on repository side", - "type": "string" - }, - "href": { - "description": "Hyperlink to access the order", - "type": "string" - }, - "externalId": { - "description": "ID given by the consumer and only understandable by him (to facilitate his searches)", - "type": "string" - }, - "priority": { - "description": "A way that can be used by consumers to prioritize orders in Service Order Management system (from 0 to 4 : 0 is the highest priority, and 4 the lowest)", - "type": "string" - }, - "description": { - "description": "A free-text description of the service order", - "type": "string" - }, - "category": { - "description": "Used to categorize the order that can be useful for the OM system (e.g. “broadband”, “TVOption”, ...)", - "type": "string" - }, - "state": { - - "$ref": "#/definitions/StateType" - }, - "orderDate": { - "description": "", - "type": "string", - "format": "date-time" - }, - "completionDateTime": { - "description": "Date when the order was completed", - "type": "string", - "format": "date-time" - }, - "requestedStartDate": { - "description": "Order start date wished by the requestor", - "type": "string", - "format": "date-time" - }, - "requestedCompletionDate": { - "description": "Requested delivery date from the requestor perspective", - "type": "string", - "format": "date-time" - }, - "expectedCompletionDate": { - "description": "", - "type": "string", - "format": "date-time" - }, - "startDate": { - "description": "Date when the order was started for processing", - "type": "string", - "format": "date-time" - }, - "@baseType": { - "description": "", - "type": "string" - }, - "@type": { - "description": "", - "type": "string" - }, - "@schemaLocation": { - "description": "", - "type": "string" - }, - "relatedParty": { - - "type": "array", - "items": { - "$ref": "#/definitions/RelatedParty" - } - }, - "orderRelationship": { - - "type": "array", - "items": { - "$ref": "#/definitions/OrderRelationship" - } - }, - "orderItem": { - - "type": "array", - "items": { - "$ref": "#/definitions/ServiceOrderItem" - } - } - } - - }, - - "OrderRelationship": { - "description": "Linked order to the one containing this attribute.\nThis relationship is not used to sort ONAP request.", - - - "required": [ - - "id" - ], - "type": "object", - "properties": { - "type": { - "description": "The type of related order, can be : “dependency” if the order needs to be “not started” until another order item is complete (a service order in this case) or “cross-ref” to keep track of the source order (a productOrder)", - "type": "string" - }, - "id": { - "description": "The id of the related order", - "type": "string" - }, - "href": { - "description": "A hyperlink to the related order", - "type": "string" - }, - "@referredType": { - "description": "Type of the referred order.", - "type": "string" - } - } - - }, - - "TargetServiceSchema": { - "description": "Target to the schema describing the service spec resource", - - - "required": [ - - "@type", - "@schemaLocation" - ], - "type": "object", - "properties": { - "@type": { - "description": "Indicates the (class) type of resource.", - "type": "string" - }, - "@schemaLocation": { - "description": "This field provided a link to the schema describing this REST resource.", - "type": "string" - } - } - - }, - - "Value": { - "description": "Value is a descriptive structure for service characteristic;\nFor Beijing we only manage 'basic' attribute - the serviceCharacteristicValue must be used.", - - - "type": "object", - "properties": { - "@type": { - "description": "Indicates the (class) type of resource.\nNot used in Beijing Release", - "type": "string" - }, - "@schemaLocation": { - "description": "This field provided a link to the schema describing this REST resource.\nNot used in Beijing Release", - "type": "string" - }, - "serviceCharacteristicValue": { - "description": "Value of the characteristic.\nThis attribute must be used in Beijing Release to provide characteristic value.", - "type": "string" - } - } - - }, - - "CreateServiceOrderItem": { - "description": "This structure is used in the operation POST for a serviceOrder request to describe an item.\nAttribute description is not accurate and should be find in the serviceOrderItem class.", - - - "required": [ - - "id", - "service" - ], - "type": "object", - "properties": { - "id": { - "description": "Identifier of the line item (generally it is a sequence number 01, 02, 03, …)", - "type": "string" - }, - "action": { - - "$ref": "#/definitions/ActionType" - }, - "@type": { - "description": "Indicates the type of resource.", - "type": "string" - }, - "@schemaLocation": { - "description": "A link to the schema describing this REST resource", - "type": "string" - }, - "@baseType": { - "description": "Indicates the base type of the resource.", - "type": "string" - }, - "orderItemRelationship": { - - "type": "array", - "items": { - "$ref": "#/definitions/OrderItemRelationship" - } - }, - "service": { - - "$ref": "#/definitions/Service" - } - } - - }, - - "CreateServiceOrder": { - "description": "This structure is used in the operation POST for a serviceOrder request.\nAttribute description is not accurate and should be find in the serviceOrder class.", - - - "type": "object", - "properties": { - "externalId": { - "description": "ID given by the consumer and only understandable by him (to facilitate his searches)", - "type": "string" - }, - "priority": { - "description": "A way that can be used by consumers to prioritize orders in Service Order Management system (from 0 to 4 : 0 is the highest priority, and 4 the lowest)", - "type": "string" - }, - "description": { - "description": "A free-text description of the service order", - "type": "string" - }, - "category": { - "description": "Used to categorize the order that can be useful for the OM system (e.g. “broadband”, “TVOption”, ...)", - "type": "string" - }, - "requestedStartDate": { - "description": "Order start date wished by the requestor", - "type": "string", - "format": "date-time" - }, - "requestedCompletionDate": { - "description": "Requested delivery date from the requestor perspective", - "type": "string", - "format": "date-time" - }, - "@baseType": { - "description": "", - "type": "string" - }, - "@type": { - "description": "", - "type": "string" - }, - "@schemaLocation": { - "description": "", - "type": "string" - }, - "relatedParty": { - - "type": "array", - "items": { - "$ref": "#/definitions/RelatedParty" - } - }, - "orderRelationship": { - - "type": "array", - "items": { - "$ref": "#/definitions/OrderRelationship" - } - }, - "orderItem": { - - "type": "array", - "items": { - "$ref": "#/definitions/CreateServiceOrderItem" - } - } - } - - }, - - "Hub": { - "description": "An HUB resource is used by client side to subscribe to notification.\nNot managed in the Beijing release.", - - - "discriminator": "id", - - "required": [ - - "callback" - ], - "type": "object", - "properties": { - "id": { - "description": "", - "type": "string" - }, - "query": { - "description": "", - "type": "string" - }, - "callback": { - "description": "", - "type": "string" - } - } - - } - } -} - \ No newline at end of file diff --git a/docs/offeredapis/swaggers/serviceOrder_1_0_0.yaml b/docs/offeredapis/swaggers/serviceOrder_1_0_0.yaml deleted file mode 100644 index b881150..0000000 --- a/docs/offeredapis/swaggers/serviceOrder_1_0_0.yaml +++ /dev/null @@ -1,772 +0,0 @@ -# This work is licensed under a Creative Commons Attribution 4.0 International License. -# http://creativecommons.org/licenses/by/4.0 -# Copyright 2018 Orange - -swagger: "2.0" -info: - description: "serviceOrder API designed for ONAP Beijing Release.\nThis API is build\ - \ from TMF open API18.0 (applying TMF Guideline 3.0);\nOnly operations GET (by\ - \ id and list) and POST are available." - version: "1.0.0_inProgress" - title: "API ServiceOrder" - x-logo: - url: "/redoc/logo.png" - backgroundColor: "#FFFFFF" -host: "serverRoot" -basePath: "/nbi/api/v1" -schemes: -- "https" -consumes: -- "application/json;charset=utf-8" -produces: -- "application/json;charset=utf-8" -tags: -- name: "ServiceOrder" - description: "A Service Order is a type of order which can be used to describe a\ - \ group of operations on service – one service order item per service. An action\ - \ at the level of the service order item describe the operation to be done on\ - \ a service (add, terminate for example). The service order is triggered from\ - \ the BSS system in charge of the product order management to ONAP that will manage\ - \ the service fulfillment." -paths: - /serviceOrder: - post: - tags: - - "ServiceOrder" - operationId: "serviceOrderCreate" - summary: "Create a service order" - description: "This operation creates a service order entity.\nThe TMF Open API\ - \ specification document provides the list of mandatory and non mandatory\ - \ attributes when creating a ServiceOrder, including any possible rule conditions\ - \ and applicable default values.\nPOST should be used without specifying the\ - \ id and the href, the Service Order Management system is in charge of generating\ - \ the id + href for the ServiceOrder.\n\nSpecific business errors for current\ - \ operation will be encapsulated in\n\nHTTP Response 422 Unprocessable entity\n\ - \n - 100: OrderItem with 'add' action but serviceSpecification id missing\n\ - \ \n - 101: OrderItem with 'change'/'noChange'/'remove' but service id missing\n\ - \ \n - 102: OrderItem with 'add' action - serviceSpecification id provided\ - \ but not existing\n \n - 103: OrderItem with 'add' action but service id\ - \ already existing in the inventory\n \n - 104: A customer for existing\ - \ service(s) is provided but he did not exist\n \n - 105: OrderItem with\ - \ 'change'/'noChange'/'remove' - Service id provided but it is not existing\ - \ in the inventory\n \n - 106: [Not managed for current Relese] Issue with\ - \ lcpCloudRegionId and tenantId provided\n " - deprecated: false - parameters: - - name: "serviceOrder" - required: true - in: "body" - description: "" - schema: - $ref: "#/definitions/CreateServiceOrder" - responses: - 201: - description: "Success" - schema: - $ref: "#/definitions/ServiceOrder" - 400: - description: "Bad Request\n\nList of supported error codes:\n- 20: Invalid\ - \ URL parameter value\n- 21: Missing body\n- 22: Invalid body\n- 23: Missing\ - \ body field\n- 24: Invalid body field\n- 25: Missing header\n- 26: Invalid\ - \ header value\n- 27: Missing query-string parameter\n- 28: Invalid query-string\ - \ parameter value" - schema: - $ref: "#/definitions/ErrorRepresentation" - 401: - description: "Unauthorized\n\nList of supported error codes:\n- 40: Missing\ - \ credentials\n- 41: Invalid credentials\n- 42: Expired credentials" - schema: - $ref: "#/definitions/ErrorRepresentation" - 403: - description: "Forbidden\n\nList of supported error codes:\n- 50: Access\ - \ denied\n- 51: Forbidden requester\n- 52: Forbidden user\n- 53: Too many\ - \ requests" - schema: - $ref: "#/definitions/ErrorRepresentation" - 404: - description: "Not Found\n\nList of supported error codes:\n- 60: Resource\ - \ not found" - schema: - $ref: "#/definitions/ErrorRepresentation" - 422: - description: "Unprocessable entity\n\nFunctional error\n\nSpecific encapsulated\ - \ business errors for current operation\n\n - 100: OrderItem with 'add'\ - \ action but serviceSpecification id missing\n \n - 101: OrderItem with\ - \ 'change'/'noChange'/'remove' but service id missing\n \n - 102: OrderItem\ - \ with 'add' action - serviceSpecification id provided but not existing\n\ - \ \n - 103: OrderItem with 'add' action but service id already existing\ - \ in the inventory\n \n - 104: A customer for existing service(s) is\ - \ provided but he did not exist\n \n - 105: OrderItem with 'change'/'noChange'/'remove'\ - \ - Service id provided but it is not existing in the inventory\n \n\ - \ - 106: [Not managed for current Relese] Issue with lcpCloudRegionId\ - \ and tenantId provided\n " - schema: - $ref: "#/definitions/ErrorRepresentation" - 500: - description: "Internal Server Error\n\nList of supported error codes:\n\ - - 1: Internal error" - schema: - $ref: "#/definitions/ErrorRepresentation" - 503: - description: "Service Unavailable\n\nList of supported error codes:\n- 5:\ - \ The service is temporarily unavailable\n- 6: Orange API is over capacity,\ - \ retry later !" - schema: - $ref: "#/definitions/ErrorRepresentation" - get: - tags: - - "ServiceOrder" - operationId: "serviceOrderFind" - summary: "List service orders" - description: "Retrieve and list service order entities according to given criteria.\n\ - Only a predefined set of attribute is proposed.\nAttribute selection could\ - \ be described in the fields attribute.\n\nSpecific business errors for current\ - \ operation will be encapsulated in\n\nHTTP Response 422 Unprocessable entity\n" - deprecated: false - parameters: - - name: "externalId" - required: false - in: "query" - description: "" - type: "string" - - name: "state" - required: false - in: "query" - description: "state of the order(s) to be retrieved" - type: "string" - - name: "description" - required: false - in: "query" - description: "" - type: "string" - - name: "orderDate.gt" - required: false - in: "query" - description: "order date greather than" - type: "string" - - name: "orderDate.lt" - required: false - in: "query" - description: "order date lower than" - type: "string" - - name: "fields" - required: false - in: "query" - description: "this attribute could be used to filter retrieved attribute(s)\ - \ and/or sort SO." - type: "string" - - name: "offset" - required: false - in: "query" - description: "The index of the first element to retrieve. Zero is the first\ - \ element of the collection." - type: "integer" - format: "int32" - - name: "limit" - required: false - in: "query" - description: "The maximum number of elements to retrieve (it can be greater\ - \ than the actual available number of items)." - type: "integer" - format: "int32" - responses: - 200: - description: "Success" - schema: - type: "array" - items: - $ref: "#/definitions/ServiceOrder" - headers: - X-Total-Count: - description: "" - type: "integer" - format: "int32" - X-Result-Count: - description: "" - type: "integer" - format: "int32" - 400: - description: "Bad Request\n\nList of supported error codes:\n- 20: Invalid\ - \ URL parameter value\n- 21: Missing body\n- 22: Invalid body\n- 23: Missing\ - \ body field\n- 24: Invalid body field\n- 25: Missing header\n- 26: Invalid\ - \ header value\n- 27: Missing query-string parameter\n- 28: Invalid query-string\ - \ parameter value" - schema: - $ref: "#/definitions/ErrorRepresentation" - 401: - description: "Unauthorized\n\nList of supported error codes:\n- 40: Missing\ - \ credentials\n- 41: Invalid credentials\n- 42: Expired credentials" - schema: - $ref: "#/definitions/ErrorRepresentation" - 403: - description: "Forbidden\n\nList of supported error codes:\n- 50: Access\ - \ denied\n- 51: Forbidden requester\n- 52: Forbidden user\n- 53: Too many\ - \ requests" - schema: - $ref: "#/definitions/ErrorRepresentation" - 404: - description: "Not Found\n\nList of supported error codes:\n- 60: Resource\ - \ not found" - schema: - $ref: "#/definitions/ErrorRepresentation" - 422: - description: "Unprocessable entity\n\nFunctional error" - schema: - $ref: "#/definitions/ErrorRepresentation" - 500: - description: "Internal Server Error\n\nList of supported error codes:\n\ - - 1: Internal error" - schema: - $ref: "#/definitions/ErrorRepresentation" - 503: - description: "Service Unavailable\n\nList of supported error codes:\n- 5:\ - \ The service is temporarily unavailable\n- 6: Orange API is over capacity,\ - \ retry later !" - schema: - $ref: "#/definitions/ErrorRepresentation" - /serviceOrder/{id}: - get: - tags: - - "ServiceOrder" - operationId: "serviceOrderGet" - summary: "Retrieve a service order" - description: "This operation retrieves a service order entity. \nAttribute selection\ - \ is enabled for all first level attributes.\n\nSpecific business errors for\ - \ current operation will be encapsulated in\n\nHTTP Response 422 Unprocessable\ - \ entity\n" - deprecated: false - parameters: - - name: "id" - in: "path" - required: true - type: "string" - description: "" - - name: "fields" - required: false - in: "query" - description: "Attribute selection" - type: "string" - responses: - 200: - description: "Success" - schema: - $ref: "#/definitions/ServiceOrder" - 400: - description: "Bad Request\n\nList of supported error codes:\n- 20: Invalid\ - \ URL parameter value\n- 21: Missing body\n- 22: Invalid body\n- 23: Missing\ - \ body field\n- 24: Invalid body field\n- 25: Missing header\n- 26: Invalid\ - \ header value\n- 27: Missing query-string parameter\n- 28: Invalid query-string\ - \ parameter value" - schema: - $ref: "#/definitions/ErrorRepresentation" - 401: - description: "Unauthorized\n\nList of supported error codes:\n- 40: Missing\ - \ credentials\n- 41: Invalid credentials\n- 42: Expired credentials" - schema: - $ref: "#/definitions/ErrorRepresentation" - 403: - description: "Forbidden\n\nList of supported error codes:\n- 50: Access\ - \ denied\n- 51: Forbidden requester\n- 52: Forbidden user\n- 53: Too many\ - \ requests" - schema: - $ref: "#/definitions/ErrorRepresentation" - 404: - description: "Not Found\n\nList of supported error codes:\n- 60: Resource\ - \ not found" - schema: - $ref: "#/definitions/ErrorRepresentation" - 422: - description: "Unprocessable entity\n\nFunctional error" - schema: - $ref: "#/definitions/ErrorRepresentation" - 500: - description: "Internal Server Error\n\nList of supported error codes:\n\ - - 1: Internal error" - schema: - $ref: "#/definitions/ErrorRepresentation" - 503: - description: "Service Unavailable\n\nList of supported error codes:\n- 5:\ - \ The service is temporarily unavailable\n- 6: Orange API is over capacity,\ - \ retry later !" - schema: - $ref: "#/definitions/ErrorRepresentation" -definitions: - ActionType: - description: "Action type to be describer on the order item.\nmodify is not managed\ - \ in Beijing release" - type: "string" - enum: - - "add" - - "modify" - - "delete" - - "noChange" - StateType: - description: "List of possible state for the order and the orderItem." - type: "string" - enum: - - "acknowledged" - - "rejected" - - "pending" - - "held" - - "inProgress" - - "cancelled" - - "completed" - - "failed" - - "partial" - RelationshipType: - description: "Relationship type;\nOnly reliesOn is managed in Beijing release." - type: "string" - enum: - - "reliesOn" - ErrorRepresentation: - description: "Representation of an error." - required: - - "code" - - "reason" - type: "object" - properties: - code: - description: "Application related code (as defined in the API or from a common\ - \ list)" - type: "integer" - format: "int32" - reason: - description: "Text that explains the reason for error. This can be shown to\ - \ a client user." - type: "string" - message: - description: "Text that provide more details and corrective actions related\ - \ to the error. This can be shown to a client user" - type: "string" - status: - description: "http error code extension like 400-2" - type: "string" - referenceError: - description: "url pointing to documentation describing the error" - type: "string" - '@type': - description: "The class type of a REST resource" - type: "string" - '@schemaLocation': - description: "it provides a link to the schema describing a REST resource" - type: "string" - ServiceRelationship: - description: "Linked Services to the one instantiate\nnbi component used this\ - \ relationship to sort request to ONAP." - required: - - "type" - - "service" - type: "object" - properties: - type: - $ref: "#/definitions/RelationshipType" - service: - $ref: "#/definitions/Service" - ServiceRef: - description: "Service references" - required: - - "id" - type: "object" - properties: - id: - description: "Unique identifier of the service" - type: "string" - href: - description: "Reference of the service" - type: "string" - ServiceCharacteristic: - description: "ServiceCharacteristic" - required: - - "name" - type: "object" - properties: - name: - description: "Name of characteristic" - type: "string" - valueType: - description: "" - type: "string" - value: - $ref: "#/definitions/Value" - RelatedParty: - description: "A related party defines party which are involved in this order and\ - \ the role they are playing.\nfor Beijing release:\nWith the current version\ - \ of APIs used from SO and AAI we need to manage a ‘customer’. This customer\ - \ concept is confusing with Customer BSS concept. We took the following rules\ - \ to manage the ‘customer’ information:\no\tIt could be provided through a serviceOrder\ - \ in the service Order a relatedParty with role ‘ONAPcustomer’ should be provided\ - \ in the serviceOrder header (we will not consider in this release the party\ - \ at item level); External API component will check if this customer exists\ - \ and create it in AAI if not.\no\tIf no relatedParty are provided the service\ - \ will be affected to ‘generic’ customer (dummy customer) – we assume this ‘\ - generic’ customer always exists." - required: - - "id" - - "role" - type: "object" - properties: - id: - description: "Unique identifier of a related party" - type: "string" - href: - description: "An hyperlink to the party - not used in Beijnig release" - type: "string" - role: - description: "The role of the related party (e.g. Owner, requester, fullfiller\ - \ etc).\nONLY 'ONAPcustomer' is considered" - type: "string" - name: - description: "Name of the related party" - type: "string" - '@referredType': - description: "" - type: "string" - ServiceSpecificationRef: - description: "The service specification (these attributes are fetched from the\ - \ catalogue)." - required: - - "id" - type: "object" - properties: - id: - description: "Unique identifier of the service specification\nThis information\ - \ will be used to retrieve SDC information + mapped to SO ModelNameVersionIdin\ - \ the request." - type: "string" - href: - description: "Reference of the service specification\nNot used in Beijing\ - \ release." - type: "string" - name: - description: "Name of the service specification\nNot used in Beijing release" - type: "string" - version: - description: "Version of the service Specification\nNot used in Beijing release" - type: "string" - targetServiceSchema: - $ref: "#/definitions/TargetServiceSchema" - '@type': - description: "Not used in Beijing release" - type: "string" - '@schemaLocation': - description: "Not used in Beijing release" - type: "string" - '@baseType': - description: "Not used in Beijing release" - type: "string" - Service: - description: "Service (to be added, modified, deleted) description" - required: - - "id" - type: "object" - properties: - id: - description: "Identifier of a service instance.\nIt must be valued if orderItem\ - \ action is 'delete' and corresponds to a AAI service.id" - type: "string" - href: - description: "Reference to the Service (useful for delete or modify command).\n\ - Not managed in Beijing release." - type: "string" - name: - description: "Name of the service - When orderItem action is 'add' this name\ - \ will be used in ONAP/SO request as InstaceName." - type: "string" - serviceState: - description: "The lifecycle state of the service requested;\nNot managed in\ - \ Beijing release." - type: "string" - '@type': - description: "To define the service type\nNot managed in Beijing Release" - type: "string" - '@schemaLocation': - description: "The URL to get the resource schema.\nNot managed in Beijing\ - \ Release" - type: "string" - serviceCharacteristic: - type: "array" - items: - $ref: "#/definitions/ServiceCharacteristic" - serviceRelationship: - type: "array" - items: - $ref: "#/definitions/ServiceRelationship" - relatedParty: - type: "array" - items: - $ref: "#/definitions/RelatedParty" - serviceSpecification: - $ref: "#/definitions/ServiceSpecificationRef" - OrderItemRelationship: - description: "Linked order item to the one containing this attribute.\nnbi component\ - \ used this relationship to sort request to ONAP." - required: - - "type" - - "id" - type: "object" - properties: - type: - $ref: "#/definitions/RelationshipType" - id: - description: "Unique identifier of an order item" - type: "string" - ServiceOrderItem: - description: "An identified part of the order. A service order is decomposed into\ - \ one or more order items." - required: - - "id" - - "service" - type: "object" - properties: - id: - description: "Identifier of the line item (generally it is a sequence number\ - \ 01, 02, 03, …)" - type: "string" - action: - $ref: "#/definitions/ActionType" - state: - $ref: "#/definitions/StateType" - '@type': - description: "Used to extend the order item.\nnot used in Beijing relase" - type: "string" - '@schemaLocation': - description: "not used in Beijing relase" - type: "string" - '@baseType': - description: "not used in Beijing relase" - type: "string" - orderItemRelationship: - type: "array" - items: - $ref: "#/definitions/OrderItemRelationship" - service: - $ref: "#/definitions/Service" - ServiceOrder: - description: "A Service Order is a type of order which can be used to place an\ - \ order between a customer and a service provider or between a service provider\ - \ and a partner and vice versa" - required: - - "id" - type: "object" - properties: - id: - description: "ID created on repository side" - type: "string" - href: - description: "Hyperlink to access the order" - type: "string" - externalId: - description: "ID given by the consumer and only understandable by him (to\ - \ facilitate his searches)" - type: "string" - priority: - description: "A way that can be used by consumers to prioritize orders in\ - \ Service Order Management system (from 0 to 4 : 0 is the highest priority,\ - \ and 4 the lowest)" - type: "string" - description: - description: "A free-text description of the service order" - type: "string" - category: - description: "Used to categorize the order that can be useful for the OM system\ - \ (e.g. “broadband”, “TVOption”, ...)" - type: "string" - state: - $ref: "#/definitions/StateType" - orderDate: - description: "" - type: "string" - format: "date-time" - completionDateTime: - description: "Date when the order was completed" - type: "string" - format: "date-time" - requestedStartDate: - description: "Order start date wished by the requestor" - type: "string" - format: "date-time" - requestedCompletionDate: - description: "Requested delivery date from the requestor perspective" - type: "string" - format: "date-time" - expectedCompletionDate: - description: "" - type: "string" - format: "date-time" - startDate: - description: "Date when the order was started for processing" - type: "string" - format: "date-time" - '@baseType': - description: "" - type: "string" - '@type': - description: "" - type: "string" - '@schemaLocation': - description: "" - type: "string" - relatedParty: - type: "array" - items: - $ref: "#/definitions/RelatedParty" - orderRelationship: - type: "array" - items: - $ref: "#/definitions/OrderRelationship" - orderItem: - type: "array" - items: - $ref: "#/definitions/ServiceOrderItem" - OrderRelationship: - description: "Linked order to the one containing this attribute.\nThis relationship\ - \ is not used to sort ONAP request." - required: - - "id" - type: "object" - properties: - type: - description: "The type of related order, can be : “dependency” if the order\ - \ needs to be “not started” until another order item is complete (a service\ - \ order in this case) or “cross-ref” to keep track of the source order (a\ - \ productOrder)" - type: "string" - id: - description: "The id of the related order" - type: "string" - href: - description: "A hyperlink to the related order" - type: "string" - '@referredType': - description: "Type of the referred order." - type: "string" - TargetServiceSchema: - description: "Target to the schema describing the service spec resource" - required: - - "@type" - - "@schemaLocation" - type: "object" - properties: - '@type': - description: "Indicates the (class) type of resource." - type: "string" - '@schemaLocation': - description: "This field provided a link to the schema describing this REST\ - \ resource." - type: "string" - Value: - description: "Value is a descriptive structure for service characteristic;\nFor\ - \ Beijing we only manage 'basic' attribute - the serviceCharacteristicValue\ - \ must be used." - type: "object" - properties: - '@type': - description: "Indicates the (class) type of resource.\nNot used in Beijing\ - \ Release" - type: "string" - '@schemaLocation': - description: "This field provided a link to the schema describing this REST\ - \ resource.\nNot used in Beijing Release" - type: "string" - serviceCharacteristicValue: - description: "Value of the characteristic.\nThis attribute must be used in\ - \ Beijing Release to provide characteristic value." - type: "string" - CreateServiceOrderItem: - description: "This structure is used in the operation POST for a serviceOrder\ - \ request to describe an item.\nAttribute description is not accurate and should\ - \ be find in the serviceOrderItem class." - required: - - "id" - - "service" - type: "object" - properties: - id: - description: "Identifier of the line item (generally it is a sequence number\ - \ 01, 02, 03, …)" - type: "string" - action: - $ref: "#/definitions/ActionType" - '@type': - description: "Indicates the type of resource." - type: "string" - '@schemaLocation': - description: "A link to the schema describing this REST resource" - type: "string" - '@baseType': - description: "Indicates the base type of the resource." - type: "string" - orderItemRelationship: - type: "array" - items: - $ref: "#/definitions/OrderItemRelationship" - service: - $ref: "#/definitions/Service" - CreateServiceOrder: - description: "This structure is used in the operation POST for a serviceOrder\ - \ request.\nAttribute description is not accurate and should be find in the\ - \ serviceOrder class." - type: "object" - properties: - externalId: - description: "ID given by the consumer and only understandable by him (to\ - \ facilitate his searches)" - type: "string" - priority: - description: "A way that can be used by consumers to prioritize orders in\ - \ Service Order Management system (from 0 to 4 : 0 is the highest priority,\ - \ and 4 the lowest)" - type: "string" - description: - description: "A free-text description of the service order" - type: "string" - category: - description: "Used to categorize the order that can be useful for the OM system\ - \ (e.g. “broadband”, “TVOption”, ...)" - type: "string" - requestedStartDate: - description: "Order start date wished by the requestor" - type: "string" - format: "date-time" - requestedCompletionDate: - description: "Requested delivery date from the requestor perspective" - type: "string" - format: "date-time" - '@baseType': - description: "" - type: "string" - '@type': - description: "" - type: "string" - '@schemaLocation': - description: "" - type: "string" - relatedParty: - type: "array" - items: - $ref: "#/definitions/RelatedParty" - orderRelationship: - type: "array" - items: - $ref: "#/definitions/OrderRelationship" - orderItem: - type: "array" - items: - $ref: "#/definitions/CreateServiceOrderItem" - Hub: - description: "An HUB resource is used by client side to subscribe to notification.\n\ - Not managed in the Beijing release." - discriminator: "id" - required: - - "callback" - type: "object" - properties: - id: - description: "" - type: "string" - query: - description: "" - type: "string" - callback: - description: "" - type: "string" -- 2.16.6