Update Service Catalog Swagger with Markdown
[externalapi/nbi.git] / docs / offeredapis / api_serviceCatalog / swagger.yaml
1 #    Copyright (c) 2018 Orange
2 #
3 #    Licensed under the Apache License, Version 2.0 (the "License");
4 #    you may not use this file except in compliance with the License.
5 #    You may obtain a copy of the License at
6 #
7 #        http://www.apache.org/licenses/LICENSE-2.0
8 #
9 #    Unless required by applicable law or agreed to in writing, software
10 #    distributed under the License is distributed on an "AS IS" BASIS,
11 #    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 #    See the License for the specific language governing permissions and
13 #    limitations under the License.swagger: "2.0"
14 swagger: "2.0"
15 info:
16   description: "# About the ONAP Service Catalog API\n The Service Catalog API is based on a subset of the TM Forum 633 Service Catalog Management API.\n## API Overview\n### General Description \nThis Service Catalog API is used to retrieve the Service Specifications that ONAP supports. As Services are designed and distributed in ONAP SDC, the Service Catalog API allows external systems such as the Business Support Systems (BSS) to discover these Services\n\nThe Service Design Center (SDC) of ONAP allows for the creation of Services that can be orchestrated by ONAP. ONAP SDC provides the tools to design the Services composition and topology, which is then represented in TOSCA. This Service Catalog API allows a REST API JSON representation of the Service, including the required attributes needed for Service Instantiation of this Service Topology.\n### Relationship and Dependencies\n This Service Catalog API is related to the TM Forum 633 Service Catalog Management API and also to MEF LSO LEGATO Service Catalog API.\n\nThis API takes a subset of the Service Catalog Management API, namely the ServiceSpecification resource, and maps this standard resource to the ONAP SDC Service Templates/Topology. By doing this we allow a well known, standardized JSON REST representation of the Service Templates available in ONAP to be potentially ordered via Service Orders. \n\n### API Structure and Approach\nThe Service Catalog API can be used to get the details of a specific ONAP Service Template, or can be used to search/list the Service Templates that are available. \n## Getting Started with the API (Hello World)\nThe Service Catalog API is available via two schemes, http and https. For interacting with the API the simplest method is via http. To interact with the this API via https, your Client would be required to load the neccessary https certificate. \n\nThe default installation of ONAP via OOM, will configure the use of two Node ports for External APIs. NodePorts are used to allow client applications, that run outside of Kubernetes, access to ONAP components deployed by OOM. For this Service Catalog API, the External API Framework has a http Node port of 30274. For https, the Node port is 30292.\n\n From outside ONAP, a client can interact with External API by first getting the IP that the NBI docker container is running on, and then using the appropriate nodeport according to the access scheme. For example to access this Service Catalog API to retrieve a list of all Service Specifications available in ONAP you can use http method GET to http://{nbi_ip}:30274/nbi/api/v4/serviceSpecification/ \n### SDK quick intro\nThere are many tools that can be used to view and edit this swagger file like swagger editor, Atom and senya. For example this swagger file can be loaded into https://editor.swagger.io/. This UI acts both as an online editor and viewer. \n### How to start the client side implementation\n* Code generation, is available via the Generate Client option in the swagger editor. Client stubs can be generated in multiple languages, for example java, go, python etc. These Client stub code can be incorporated in the Application you wish to access the Service Catalog API from.\n\n### How to start the server side implementation\n* Not applicable, the service side for this API will be the NBI container running the External API Framework Springboot application.\n\n## API Description\nIncludes summary of information drawn from API definitions in OpenAPI / Swagger files\n### Resource Endpoint / Resource Quick Reference\nGET /serviceSpecification/ : This operation returns a list service specifications from a catalog\n\nGET /serviceSpecification/{id} : This operation returns the service specifications from a catalog associated with this id. Note the id maps to the uuid of the SDC Service Template in the SDC catalog\n\nGET /serviceSpecification/{id}/specificationInputSchema : This operation returns a service specification Input schema by its id from a catalog. Note again the id corresponds to the uuid of the Service Template in SDC.\n\n### Data Schema\n#### Main API Entities\nDescribe the major entities used in the API\n\nThe main entity of the API is the ServiceSpecification resource. This entity is the top level entity of the API, and is returned as either a single instance when queried with id, or as JSON arroy of ServiceSpecification entities when queried as a list.\n\nThe major child enties are relatedParty which points to the designer of the Template in SDC. The resourceSpecification which point to child resources for the Service Template. The serviceSpecCharacteristics entities are used to describe the attributes that can be supplied to instantiate a Service Instance of this Service Template.\n#### Payload data structures\nIf any, describe the appropriate data structures that are included within payload of the API.\n\nNot applicable\n### Security on the API\nAuthentication; Authorization; Credentials/access token; etc.\n\n https certificate required if using https. No authentication on http requests.In production this API should be behind an API Gateway with the necessary authentication\n### Response Codes\nThe meaning of Status Codes & Errors\n\nSee response codes for each API resource in the API section below\n### Rate Limits and Thresholds\nRequests per unit time allowed; Pagination\n\n No rate limits or thresholds, in production this API should be behind an API Gateway with the necessary limits.\n### Validation constraints\nDescribe any behavioral and structural validation constraints\n\nNot applicable\n### Assumptions\nFor example, any Pre/Post conditions\n\n For this API to function and return Service Specifications, SDC is required to be running and Service models designed in the SDC catalog\n## API Interactions and Flows\n### Interaction Examples\nIllustrate sequence of client calls to this API, possibly based on Use Cases, presented with diagrams, tables, etc\n\nThe Service Catalog API flow of use can generally follow the sequence below\n\n\n#### Call ONAP to discover what available services it can offer\n\n```\ncurl -X GET \"http://serverRoot:30274/nbi/api/v4/serviceSpecification/\" -H \"accept: application/json;charset=utf-8\"\n```\n#### Example Response Values\n```\n[\n  {\r\n        \"id\": \"0ec83a1f-51e7-44e7-b773-3f37ddb937cd\",\r\n        \"name\": \"EPLServiceTemplate\",\r\n        \"invariantUUID\": \"ddf31f35-8e71-4f5a-a383-4241b87ca7a7\",\r\n        \"category\": \"Network L4+\",\r\n        \"distributionStatus\": \"DISTRIBUTED\",\r\n        \"version\": \"1.0\",\r\n        \"lifecycleStatus\": \"CERTIFIED\",\r\n        \"relatedParty\": {\r\n            \"id\": \"jm0007\",\r\n            \"role\": \"lastUpdater\"\r\n        }\r\n    }\n]\n```\n#### Using the id returned from the list of Service Specifications, drill into any specific Service Specificaton you want to orchestrate/order using\n\n```\ncurl -X GET \"http://serverRoot:30274/nbi/api/v4/serviceSpecification/0ec83a1f-51e7-44e7-b773-3f37ddb937cd\" -H \"accept: application/json;charset=utf-8\"\n```\n#### Example Response Values\n```\n{\r\n    \"id\": \"0ec83a1f-51e7-44e7-b773-3f37ddb937cd\",\r\n    \"name\": \"EPLServiceTemplate\",\r\n    \"invariantUUID\": \"ddf31f35-8e71-4f5a-a383-4241b87ca7a7\",\r\n    \"toscaModelURL\": \"\/sdc\/v1\/catalog\/services\/0ec83a1f-51e7-44e7-b773-3f37ddb937cd\/toscaModel\",\r\n    \"category\": \"Network L4+\",\r\n    \"distributionStatus\": \"DISTRIBUTED\",\r\n    \"version\": \"1.0\",\r\n    \"lifecycleStatus\": \"CERTIFIED\",\r\n    \"relatedParty\": {\r\n        \"id\": \"jm0007\",\r\n        \"name\": \"Joni Mitchell\",\r\n        \"role\": \"lastUpdater\"\r\n    },\r\n    \"resourceSpecification\": [\r\n        {\r\n            \"id\": \"ec910118-ba94-4517-98b5-5bc10f277f4a\",\r\n            \"version\": \"1.0\",\r\n            \"name\": \"TestVF_1579291137027\",\r\n            \"resourceInstanceName\": \"TestVF_1579291137027 0\",\r\n            \"modelCustomizationName\": \"TestVF_1579291137027 0\",\r\n            \"resourceInvariantUUID\": \"df329320-fe21-49c2-96a8-7217ac7143de\",\r\n            \"resourceType\": \"VF\",\r\n            \"@type\": \"ONAPresource\",\r\n            \"modelCustomizationId\": \"ad5fb501-e472-4d79-a303-1a4a56c0fa75\"\r\n        }\r\n    ],\r\n    \"href\": \"serviceSpecification\/0ec83a1f-51e7-44e7-b773-3f37ddb937cd\",\r\n    \"attachment\": [],\r\n    \"@type\": \"ONAPservice\",\r\n    \"instantiationType\": \"A-la-carte\",\r\n    \"serviceSpecCharacteristic\": {\r\n        \"name\": \"TestService_1579291137027_ServiceCharacteristics\",\r\n        \"description\": \"This object describes all the inputs needed from the client to interact with the TestService_1579291137027 Service Topology\",\r\n        \"valueType\": \"object\",\r\n        \"@type\": \"ONAPServiceCharacteristic\",\r\n        \"@schemaLocation\": \"null\",\r\n        \"serviceSpecCharacteristicValue\": {\r\n            \"valueType\": \"object\",\r\n            \"@schemaLocation\": \"\/serviceSpecification\/0ec83a1f-51e7-44e7-b773-3f37ddb937cd\/specificationInputSchema\",\r\n            \"@type\": \"TestService_1579291137027_ServiceCharacteristic\"\r\n        }\r\n    }\r\n}\n```\n\n#### To access Json Schema of the Parameters required to instantiate the Service from this Service Specification\n\n```\ncurl -X GET \"http://serverRoot:30274/nbi/api/v4/serviceSpecification/0ec83a1f-51e7-44e7-b773-3f37ddb937cd/specificationInputSchema\" -H \"accept: application/json;charset=utf-8\"\n```\n#### Example Response Values\n```\n{\r\n  \"ServiceCharacteristics\" : {\r\n    \"required\" : [ \"mscmevcendpointa_evcendpoint_endPointId\", \"mscmevcendpointz_evcendpoint_endPointId\", \"mscmsubscriberunia_subscriberuni_uniIdentifier\", \"mscmsubscriberuniz_subscriberuni_uniIdentifier\" ],\r\n    \"properties\" : {\r\n      \"mscmevcendpointa_evcendpoint_map\" : {\r\n        \"type\" : \"string\",\r\n        \"description\" : \"\"\r\n      },\r\n      \"mscmsubscriberunia_subscriberuni_uniIdentifier\" : {\r\n        \"type\" : \"string\",\r\n        \"description\" : \"String that is used to allow the Sub-scriber and Service Provider to uniquely identify the UNI for oper-ations purposes.\"\r\n      },\r\n      \"mscmevc0_evc_evcType\" : {\r\n        \"type\" : \"string\",\r\n        \"description\" : \"Point-to-Point, Multipoint-to-Mul-tipoint, or Rooted-Multipoint.\"\r\n      },\r\n      \"mscmevcendpointz_evcendpoint_map\" : {\r\n        \"type\" : \"string\",\r\n        \"description\" : \"\"\r\n      },\r\n      \"mscmevcendpointz_evcendpoint_endPointUni\" : {\r\n        \"type\" : \"string\",\r\n        \"description\" : \"Specify the UNI where the EvcEndPoint is located. The EvcEndPoint is said to be at this Uni.\"\r\n      },\r\n      \"mscmevcendpointz_evcendpoint_ingressBwp\" : {\r\n        \"type\" : \"string\",\r\n        \"description\" : \"\"\r\n      },\r\n      \"mscmsubscriberuniz_subscriberuni_uniIdentifier\" : {\r\n        \"type\" : \"string\",\r\n        \"description\" : \"String that is used to allow the Sub-scriber and Service Provider to uniquely identify the UNI for oper-ations purposes.\"\r\n      },\r\n      \"mscmevcendpointz_evcendpoint_endPointId\" : {\r\n        \"type\" : \"string\",\r\n        \"description\" : \"A string that is used to allow the Subscriber and Service Provider to uniquely identify the EvcEndPoint for operations purposes.\"\r\n      },\r\n      \"mscmevcendpointa_evcendpoint_endPointId\" : {\r\n        \"type\" : \"string\",\r\n        \"description\" : \"A string that is used to allow the Subscriber and Service Provider to uniquely identify the EvcEndPoint for operations purposes.\"\r\n      },\r\n      \"mscmevcendpointa_evcendpoint_ingressBwp\" : {\r\n        \"type\" : \"string\",\r\n        \"description\" : \"\"\r\n      },\r\n\"mscmevc0_evc_listOfEvcEps\" : {\r\n        \"type\" : \"array\",\r\n        \"description\" : \"A list of EVC EP ID Service Attribute values.\"\r\n      },\r\n      \"mscmevc0_evc_evcId\" : {\r\n        \"type\" : \"string\",\r\n        \"description\" : \"\"\r\n      },\r\n      \"mscmevcendpointa_evcendpoint_endPointUni\" : {\r\n        \"type\" : \"string\",\r\n        \"description\" : \"Specify the UNI where the EvcEndPoint is located. The EvcEndPoint is said to be at this Uni.\"\r\n      }\r\n    }\r\n  }\r\n\n```\n\n## Tutorials\nReference any tutorials or use cases. May use links.\n\nTo learn how the  BBS use case used these APIs, please find the Low Level Designs at:\nhttps://wiki.onap.org/pages/viewpage.action?pageId=48532377\n\n## API Mapping Details\nIncludes:\n* Mapping between use cases/requirements and API calls. The BBS Use case used the Service Catalog API to learn the details of the Broad Service. This ServiceSpecification was then included in a Product Ordering as a Service Candidate from the BSS system.\n\n## Glossary\n### API Version\n\nThe version number has major, minor and revision numbers. E.g. v4.1.0 Only the major version number (without the minor number and revision number) is held in the URL. APIs are described with a major version with “v” following the API Name, e.g.: nbi/api/v4/serviceSpecification. The schema associated with a REST API must have its version number aligned with that of the REST API.\n\nThe major version number is incremented for an incompatible change. The minor version number is incremented for a compatible change. For minor modifications of the API, version numbering must not be updated, provided the following backward compatibility rules are respected:\n* New elements in a data type must be optional (minOccurs=0)\n* Changes in the cardinality of an attribute in a data type must be from mandatory to optional or from lower to greater\n* New attributes defined in an element must be optional (absence of use=”required”)\n* If new enumerated values are included, the former ones and its meaning must be kept\n* If new operations are added, the existing operations must be kept\n* New parameters added to existing operations must be optional and existing parameters must be kept\n\nFor major modifications of the API, not backward compatible and forcing client implementations to be changed, the major version number must be updated."
17   version: "4.1.0"
18   title: "ServiceCatalog API"
19   contact:
20     name: "ONAP"
21     url: "https://onap.readthedocs.io"
22     email: "onap-discuss@lists.onap.org"
23   license:
24     name: "Apache 2.0"
25     url: "http://www.apache.org/licenses/LICENSE-2.0"
26   x-planned-retirement-date: "205001"
27   x-component: "NBI"
28   x-logo:
29     url: "/redoc/logo.png"
30     backgroundColor: "#FFFFFF"
31 host: "serverRoot:30274"
32 basePath: "/nbi/api/v4"
33 schemes:
34 - "http"
35 - "https"
36 produces:
37 - "application/json;charset=utf-8"
38 tags:
39 - name: "ServiceSpecification"
40   description: ""
41 paths:
42   x-interface:
43     api-version: "4.1.0"
44     last-mod-release: "Frankfurt"
45   /serviceSpecification:
46     get:
47       tags:
48       - "ServiceSpecification"
49       produces:
50       - "application/json;charset=utf-8"
51       operationId: "serviceSpecification_Find"
52       summary: "List service specifications"
53       description: "This operation returns service specifications from a catalog.\n\
54         Only a predefined set of attribute is proposed : Based on SDC limitations,\
55         \ only attributes category and distributionStatus are available for serviceSpecification\
56         \ filtering\nFields attribute could be used to filter attributes retrieved"
57       deprecated: false
58       parameters:
59       - name: "fields"
60         required: false
61         in: "query"
62         description: "Field selection - used to filtering the attributes to be retreived"
63         type: "string"
64       - name: "category"
65         required: false
66         in: "query"
67         description: "Service Category (filter)"
68         type: "string"
69       - name: "distributionStatus"
70         required: false
71         in: "query"
72         description: "Service distribution status (filter)"
73         type: "string"
74       responses:
75         "200":
76           description: "Ok"
77           schema:
78             type: "array"
79             items:
80               $ref: "#/definitions/ServiceSpecification"
81         "400":
82           description: "Bad Request\n\nList of supported error codes:\n- 20: Invalid\
83             \ URL parameter value\n- 21: Missing body\n- 22: Invalid body\n- 23: Missing\
84             \ body field\n- 24: Invalid body field\n- 25: Missing header\n- 26: Invalid\
85             \ header value\n- 27: Missing query-string parameter\n- 28: Invalid query-string\
86             \ parameter value"
87           schema:
88             $ref: "#/definitions/ErrorRepresentation"
89         "401":
90           description: "Unauthorized\n\nList of supported error codes:\n- 40: Missing\
91             \ credentials\n- 41: Invalid credentials\n- 42: Expired credentials"
92           schema:
93             $ref: "#/definitions/ErrorRepresentation"
94         "403":
95           description: "Forbidden\n\nList of supported error codes:\n- 50: Access\
96             \ denied\n- 51: Forbidden requester\n- 52: Forbidden user\n- 53: Too many\
97             \ requests"
98           schema:
99             $ref: "#/definitions/ErrorRepresentation"
100         "404":
101           description: "Not Found\n\nList of supported error codes:\n- 60: Resource\
102             \ not found"
103           schema:
104             $ref: "#/definitions/ErrorRepresentation"
105         "422":
106           description: "Unprocessable entity\n\nFunctional error"
107           schema:
108             $ref: "#/definitions/ErrorRepresentation"
109         "500":
110           description: "Internal Server Error\n\nList of supported error codes:\n\
111             - 1: Internal error"
112           schema:
113             $ref: "#/definitions/ErrorRepresentation"
114         "503":
115           description: "Service Unavailable\n\nList of supported error codes:\n- 5:\
116             \ The service is temporarily unavailable\n- 6: Orange API is over capacity,\
117             \ retry later !"
118           schema:
119             $ref: "#/definitions/ErrorRepresentation"
120   /serviceSpecification/{id}:
121     get:
122       tags:
123       - "ServiceSpecification"
124       produces:
125       - "application/json;charset=utf-8"
126       operationId: "serviceSpecification_Get"
127       summary: "Retrieve a service specification"
128       description: "This operation returns a service specification by its id from\
129         \ a catalog. Attribute selection is enabled using the fields attribute."
130       deprecated: false
131       parameters:
132       - name: "id"
133         required: true
134         in: "path"
135         description: "The Id of the ServiceSpecification"
136         type: "string"
137       - name: "fields"
138         required: false
139         in: "query"
140         description: "Attribute selection"
141         type: "string"
142       responses:
143         "200":
144           description: "Ok"
145           schema:
146             $ref: "#/definitions/ServiceSpecification"
147         "400":
148           description: "Bad Request\n\nList of supported error codes:\n- 20: Invalid\
149             \ URL parameter value\n- 21: Missing body\n- 22: Invalid body\n- 23: Missing\
150             \ body field\n- 24: Invalid body field\n- 25: Missing header\n- 26: Invalid\
151             \ header value\n- 27: Missing query-string parameter\n- 28: Invalid query-string\
152             \ parameter value"
153           schema:
154             $ref: "#/definitions/ErrorRepresentation"
155         "401":
156           description: "Unauthorized\n\nList of supported error codes:\n- 40: Missing\
157             \ credentials\n- 41: Invalid credentials\n- 42: Expired credentials"
158           schema:
159             $ref: "#/definitions/ErrorRepresentation"
160         "403":
161           description: "Forbidden\n\nList of supported error codes:\n- 50: Access\
162             \ denied\n- 51: Forbidden requester\n- 52: Forbidden user\n- 53: Too many\
163             \ requests"
164           schema:
165             $ref: "#/definitions/ErrorRepresentation"
166         "404":
167           description: "Not Found\n\nList of supported error codes:\n- 60: Resource\
168             \ not found"
169           schema:
170             $ref: "#/definitions/ErrorRepresentation"
171         "422":
172           description: "Unprocessable entity\n\nFunctional error"
173           schema:
174             $ref: "#/definitions/ErrorRepresentation"
175         "500":
176           description: "Internal Server Error\n\nList of supported error codes:\n\
177             - 1: Internal error"
178           schema:
179             $ref: "#/definitions/ErrorRepresentation"
180         "503":
181           description: "Service Unavailable\n\nList of supported error codes:\n- 5:\
182             \ The service is temporarily unavailable\n- 6: Orange API is over capacity,\
183             \ retry later !"
184           schema:
185             $ref: "#/definitions/ErrorRepresentation"          
186   /serviceSpecification/{id}/specificationInputSchema:
187     get:
188       tags:
189       - "ServiceSpecification"
190       produces:
191       - "application/json;charset=utf-8"
192       operationId: "specificationInputSchemaGet"
193       summary: "Retrieve a service specification Input Schema"
194       description: "This operation returns a service specification Input schema by its id from\
195         \ a catalog. Attribute selection is enabled using the fields attribute."
196       deprecated: false
197       parameters:
198       - name: "id"
199         required: true
200         in: "path"
201         description: "The Id of the ServiceSpecification"
202         type: "string"
203       - name: "fields"
204         required: false
205         in: "query"
206         description: "Attribute selection"
207         type: "string"
208       responses:
209         "200":
210           description: "Ok"
211           schema:
212             $ref: "#/definitions/SpecificationInputSchema"
213         "400":
214           description: "Bad Request\n\nList of supported error codes:\n- 20: Invalid\
215             \ URL parameter value\n- 21: Missing body\n- 22: Invalid body\n- 23: Missing\
216             \ body field\n- 24: Invalid body field\n- 25: Missing header\n- 26: Invalid\
217             \ header value\n- 27: Missing query-string parameter\n- 28: Invalid query-string\
218             \ parameter value"
219           schema:
220             $ref: "#/definitions/ErrorRepresentation"
221         "401":
222           description: "Unauthorized\n\nList of supported error codes:\n- 40: Missing\
223             \ credentials\n- 41: Invalid credentials\n- 42: Expired credentials"
224           schema:
225             $ref: "#/definitions/ErrorRepresentation"
226         "403":
227           description: "Forbidden\n\nList of supported error codes:\n- 50: Access\
228             \ denied\n- 51: Forbidden requester\n- 52: Forbidden user\n- 53: Too many\
229             \ requests"
230           schema:
231             $ref: "#/definitions/ErrorRepresentation"
232         "404":
233           description: "Not Found\n\nList of supported error codes:\n- 60: Resource\
234             \ not found"
235           schema:
236             $ref: "#/definitions/ErrorRepresentation"
237         "422":
238           description: "Unprocessable entity\n\nFunctional error"
239           schema:
240             $ref: "#/definitions/ErrorRepresentation"
241         "500":
242           description: "Internal Server Error\n\nList of supported error codes:\n\
243             - 1: Internal error"
244           schema:
245             $ref: "#/definitions/ErrorRepresentation"
246         "503":
247           description: "Service Unavailable\n\nList of supported error codes:\n- 5:\
248             \ The service is temporarily unavailable\n- 6: Orange API is over capacity,\
249             \ retry later !"
250           schema:
251             $ref: "#/definitions/ErrorRepresentation"
252             
253 definitions:
254   LifecycleStatusValues:
255     description: "Service lifecycle value from ONAP SDC"
256     type: "string"
257     enum:
258     - "NOT_CERTIFIED_CHECKOUT"
259     - "NOT_CERTIFIED_CHECKIN"
260     - "READY_FOR_CERTIFICATION"
261     - "CERTIFICATION_IN_PROGRESS"
262     - "CERTIFIED"
263   DistributionStatus:
264     description: "Service distribution status from ONAP."
265     type: "string"
266     enum:
267     - "DISTRIBUTION_NOT_APPROVED"
268     - "DISTRIBUTION_APPROVED"
269     - "DISTRIBUTED"
270     - "DISTRIBUTION_REJECTED"
271   ErrorRepresentation:
272     description: "This class is used to describe error.\nfor nbi Beijing release we\
273       \ do not manage additional error for serviceCatalog"
274     required:
275     - "code"
276     - "reason"
277     type: "object"
278     properties:
279       code:
280         description: "Application related code (as defined in the API or from a common\
281           \ list)"
282         type: "integer"
283         format: "int32"
284       reason:
285         description: "Text that explains the reason for error. This can be shown to\
286           \ a client user."
287         type: "string"
288       message:
289         description: "Text that provide more details and corrective actions related\
290           \ to the error. This can be shown to a client user"
291         type: "string"
292       status:
293         description: "http error code extension like 400-2"
294         type: "string"
295       referenceErrror:
296         description: "url pointing to documentation describing the error"
297         type: "string"
298       '@type':
299         description: "The class type of a REST resource."
300         type: "string"
301       '@schemaLocation':
302         description: "it provides a link to the schema describing a REST resource."
303         type: "string"
304   TimePeriod:
305     description: "A time period"
306     type: "object"
307     properties:
308       startDateTime:
309         description: "Start date and time of the period"
310         type: "string"
311         format: "date-time"
312       endDateTime:
313         description: "End date and time of the period"
314         type: "string"
315         format: "date-time"
316   RelatedPartyRef:
317     description: "Party linked to the service catalog.\nin nbi we retrieve information\
318       \ about last updater of the service in SDC"
319     type: "object"
320     properties:
321       id:
322         description: "Unique identifier of the related party. Filled with lastUpdaterUserId"
323         type: "string"
324       role:
325         description: "Role payed by the related party\nOnly role 'lastUpdater' is\
326           \ retrieved in Beijing release"
327         type: "string"
328       name:
329         description: "Name of the related party - Filled with lastUpdatedFullName"
330         type: "string"
331   ServiceSpecification:
332     description: "ServiceSpecification is a class that offers characteristics to describe\
333       \ a type of service. Functionally, it acts as a template by which Services may\
334       \ be instantiated. By sharing the same specification, these services would therefore\
335       \ share the same set of characteristics.\nthe service information are retrieved\
336       \ in SDC"
337     required:
338     - "invariantUUID"
339     type: "object"
340     properties:
341       id:
342         description: "Unique identifier of the service specification. Filled with\
343           \ SDC Service uuid"
344         type: "string"
345       href:
346         description: "Reference of the service specification"
347         type: "string"
348       name:
349         description: "Name of the service specification- Filled with SDC Service name"
350         type: "string"
351       description:
352         description: "A narrative that explains in detail what the service specification\
353           \ is - Filled with SDC Service description"
354         type: "string"
355       '@type':
356         description: "This attribute allows to dynamically extends TMF class. Valued\
357           \ with 'ONAPservice'. We used this features to add following attributes:\n\
358           invariantUUID\ntoscaModelURL\ntoscaResourceName\ncategory (1)\nsubcategory\
359           \ (1)\ndistributionStatus"
360         type: "string"
361         default: "ONAPservice"
362       '@schemaLocation':
363         description: "Not used"
364         type: "string"
365       '@baseType':
366         description: "Not used"
367         type: "string"
368       invariantUUID:
369         description: "Additional attribute (not in the TMF API) - extended through\
370           \ @type - invariantUUID"
371         type: "string"
372       toscaModelURL:
373         description: "Additional attribute (not in the TMF API) - extended through\
374           \ @type - toscaModelURL"
375         type: "string"
376       toscaResourceName:
377         description: "Additional attribute (not in the TMF API) - extended through\
378           \ @type - toscaResourceName"
379         type: "string"
380       category:
381         description: "Additional attribute - extended through @type - category\nPlease\
382           \ note that this attribute is managed in TMF - in future release we'll introduce\
383           \ category resource"
384         type: "string"
385       subcategory:
386         description: "Additional attribute - extended through @type - category\nPlease\
387           \ note that this attribute is managed in TMF - in future release we'll introduce\
388           \ category resourc"
389         type: "string"
390       distributionStatus:
391         $ref: "#/definitions/DistributionStatus"
392       version:
393         description: "Service specification version - Filled with SDC Service version"
394         type: "string"
395       lifecycleStatus:
396         $ref: "#/definitions/LifecycleStatusValues"
397       targetServiceSchema:
398         $ref: "#/definitions/TargetServiceSchemaRef"
399       attachment:
400         type: "array"
401         items:
402           $ref: "#/definitions/Attachment"
403       relatedParty:
404         type: "array"
405         items:
406           $ref: "#/definitions/RelatedPartyRef"
407       resourceSpecification:
408         type: "array"
409         items:
410           $ref: "#/definitions/ResourceSpecificationRef"
411       serviceSpecCharacteristic:
412         type: "array"
413         items:
414           $ref: "#/definitions/ServiceSpecCharacteristic"
415   ServiceSpecCharacteristic:
416     description: "A characteristic quality or distinctive feature of a ServiceSpecification.\
417       \ \nServiceSpecCharacteristic are retrieved in the serviceTosca file in the\
418       \ topology_template section in the inputs section."
419     type: "object"
420     properties:
421       name:
422         description: "Name of the characteristic - Filled with parameter_name"
423         type: "string"
424       description:
425         description: "A narrative that explains in detail what the characteristic\
426           \ is - Filled with parameter_description"
427         type: "string"
428       valueType:
429         description: "A kind of value that the characteristic can take on, from Dublin\
430           \ from Dublin we use the object type to describe service characteristic values"
431         type: "string"
432       '@type':
433         description: "This attribute allows to dynamically extends TMF class. Valued\
434           \ with: 'ONAPserviceCharacteristic'. We do not used this feature in nbi"
435         type: "string"
436       '@schemaLocation':
437         description: "An url pointing to type description - we do not use it"
438         type: "string"
439       required:
440         description: "A parameter to define if the characteristic is mandatory - Filled\
441           \ from parameter_required – if not fielded by default ‘true’"
442         type: "boolean"
443         default: true
444       status:
445         description: "Status of the characteristic - filled with status_value"
446         type: "string"
447       serviceSpecCharacteristicValue:
448         type: "array"
449         items:
450           $ref: "#/definitions/ServiceSpecCharacteristicValue"
451   Attachment:
452     description: "An attachment is a file uses to describe the service.\nIn nbi we\
453       \ use attachment to retrieve ONAP artifacts."
454     type: "object"
455     properties:
456       id:
457         description: "Unique identifier of the attachment - filled with artifactUUID."
458         type: "string"
459       name:
460         description: "Name of the attachment - filled with artifactName"
461         type: "string"
462       description:
463         description: "Description of the attachment - filled with artifactDescription"
464         type: "string"
465       '@type':
466         description: "This attribute allows to dynamically extends TMF class. Valued\
467           \ with 'ONAPartifact'. We used this features to add following attributes:\
468           \ \nartifactLabel\nartifactGroupType\nartifactTimeout\nartifactChecksum\n\
469           artifactVersion\ngeneratedFromUUID"
470         type: "string"
471         default: "ONAPartifact"
472       artifactLabel:
473         description: "Additional attribute (not in the TMF API) - extended through\
474           \ @type - artifactLabel"
475         type: "string"
476       artifactGroupType:
477         description: "Additional attribute (not in the TMF API) - extended through\
478           \ @type - artifactGroupType"
479         type: "string"
480       artifactTimeout:
481         description: "Additional attribute (not in the TMF API) - extended through\
482           \ @type - artifactTimeout"
483         type: "string"
484       artifactChecksum:
485         description: "Additional attribute (not in the TMF API) - extended through\
486           \ @type - artifactChecksum"
487         type: "string"
488       artifactVersion:
489         description: "Additional attribute (not in the TMF API) - extended through\
490           \ @type - artifactVersion"
491         type: "string"
492       generatedFromUUID:
493         description: "Additional attribute (not in the TMF API) - extended through\
494           \ @type - generatedFromUUID"
495         type: "string"
496       url:
497         description: "Uniform Resource Locator, is a web page address - filled with\
498           \ artifactURL"
499         type: "string"
500       mimeType:
501         description: "Filled with artifactType"
502         type: "string"
503   ServiceSpecCharacteristicValue:
504     description: "A number or text that can be assigned to a service specification\
505       \ characteristic.\nServiceSpecCharacteristicValue are retrieved in the service\
506       \ Tosca file"
507     type: "object"
508     properties:
509       '@type':
510         description: "This attribute allows to dynamically extends TMF class. Valued\
511           \ with: 'ServiceSpecName_ServiceCharacteristic'."
512         type: "string"
513       '@schemaLocation':
514         description: "An url pointing to type description - we use it in nbi\
515           \ for specifying the specificationInputSchema url"
516         type: "string"
517       valueType:
518         description: "A kind of value that the characteristic can take on,\
519           \ from Dublin release we use an object valueType to\
520           \ group the Tosca Model Inputs, the object schema is described\
521           \ by the specificationInputSchema url"
522         type: "string"
523   SpecificationInputSchema:
524     description: "A json schema of the service specification input characteristics\
525       \ \n. The Inputs in the schema files are obtained the service Tosca file Inputs"
526     type: "object"
527     properties:
528       ServiceCharacteristics:
529         $ref: "#/definitions/SchemaForServiceCharacteristics"
530   SchemaForServiceCharacteristics:
531     description: "The object describing the schema of the service specification input characteristics.\
532       \ \n. The Inputs in the schema files are obtained the service Tosca file Inputs"
533     type: "object"
534     properties:
535       required:
536         description: "defines the parameter key names that are mandatory to send"
537         type: "array"
538         items:
539           type: "string" 
540       properties:
541         description: "defines all the input key names and types for the Service Instantiation"
542         type: "object"
543   ResourceSpecificationRef:
544     description: "A list of resourceSpec identified to deliver the service.\nfor nbi\
545       \ we retrieve resource information available in service description (through\
546       \ SDC api) bu as well information retrieved in the TOSCA file."
547     type: "object"
548     properties:
549       id:
550         description: "Unique identifier of the resource specification - filled with\
551           \ resourceUUID"
552         type: "string"
553       version:
554         description: "Version for this resource specification - filled with resourceVersion"
555         type: "string"
556       name:
557         description: "Name of the resource specification - filled with resourceName"
558         type: "string"
559       '@type':
560         description: "This attribute allows to dynamically extends TMF class. Valued\
561           \ with: 'ONAPresource'. We used this features to add following attributes:\n\
562           resourceInstanceName\nresourceInvariantUUID\nresourceType\nmodelCustomizationName\n\
563           modelCustomizationId"
564         type: "string"
565         default: "ONAPresource"
566       resourceInstanceName:
567         description: "Additional attribute (not in the TMF API) - extended through\
568           \ @type - resourceInstanceName"
569         type: "string"
570       resourceInvariantUUID:
571         description: "Additional attribute (not in the TMF API) - extended through\
572           \ @type - resourceInvariantUUID"
573         type: "string"
574       resourceType:
575         description: "Additional attribute (not in the TMF API) - extended through\
576           \ @type - resoucreType"
577         type: "string"
578       modelCustomizationName:
579         description: "Additional attribute (not in the TMF API) - extended through\
580           \ @type - Retrieved in the TOSCA file : attribute name in topology_template/node_template\
581           \ for the resource"
582         type: "string"
583       modelCustomizationId:
584         description: "Additional attribute (not in the TMF API) - extended through\
585           \ @type - Retrieved in the TOSCA file : attribute customizationUUID in topology_template/node_template\
586           \ for the resource"
587         type: "string"
588   TargetServiceSchemaRef:
589     description: "Target Service Schema"
590     required:
591     - "@type"
592     - "@schemaLocation"
593     type: "object"
594     properties:
595       '@type':
596         description: ""
597         type: "string"
598       '@schemaLocation':
599         description: ""
600         type: "string"