Get cm-handle public properties endpoint
[cps.git] / cps-ncmp-rest / docs / openapi / components.yaml
1 #  ============LICENSE_START=======================================================
2 #  Copyright (C) 2021-2022 Nordix Foundation
3 #  Modifications Copyright (C) 2021 Pantheon.tech
4 #  Modifications Copyright (C) 2022 Bell Canada
5 #  ================================================================================
6 #  Licensed under the Apache License, Version 2.0 (the "License");
7 #  you may not use this file except in compliance with the License.
8 #  You may obtain a copy of the License at
9 #
10 #        http://www.apache.org/licenses/LICENSE-2.0
11 #
12 #  Unless required by applicable law or agreed to in writing, software
13 #  distributed under the License is distributed on an "AS IS" BASIS,
14 #  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 #  See the License for the specific language governing permissions and
16 #  limitations under the License.
17 #
18 #  SPDX-License-Identifier: Apache-2.0
19 #  ============LICENSE_END=========================================================
20
21 components:
22   schemas:
23     # Common Schemas
24     ErrorMessage:
25       type: object
26       title: Error
27       properties:
28         status:
29           type: string
30         message:
31           type: string
32         details:
33           type: string
34     # DMI Server Exception Schema
35     DmiErrorMessage:
36       title: DMI Error Message
37       type: object
38       properties:
39         message:
40           type: string
41           example: "Bad Gateway Error Message NCMP"
42         dmi-response:
43           type: object
44           properties:
45             http-code:
46               type: integer
47               example: 400
48             body:
49               type: string
50               example: Bad Request
51     # Request Schemas
52     RestDmiPluginRegistration:
53       type: object
54       properties:
55         dmiPlugin:
56           type: string
57           example: my-dmi-plugin
58           default: ""
59         dmiDataPlugin:
60           type: string
61           example: my-dmi-data-plugin
62           default: ""
63         dmiModelPlugin:
64           type: string
65           example: my-dmi-model-plugin
66           default: ""
67         createdCmHandles:
68           type: array
69           items:
70             $ref: '#/components/schemas/RestInputCmHandle'
71         updatedCmHandles:
72           type: array
73           items:
74             $ref: '#/components/schemas/RestInputCmHandle'
75             example:
76               cmHandle: my-cm-handle
77               cmHandleProperties:
78                 add-my-property: add-property
79                 update-my-property: updated-property
80                 delete-my-property: '~'
81               publicCmHandleProperties:
82                 add-my-property: add-property
83                 update-my-property: updated-property
84                 delete-my-property: '~'
85         removedCmHandles:
86           type: array
87           items:
88             type: string
89           example: [my-cm-handle1, my-cm-handle2, my-cm-handle3]
90     DmiPluginRegistrationErrorResponse:
91       type: object
92       properties:
93         failedCreatedCmHandles:
94           type: array
95           items:
96             $ref: '#/components/schemas/CmHandlerRegistrationErrorResponse'
97         failedUpdatedCmHandles:
98           type: array
99           items:
100             $ref: '#/components/schemas/CmHandlerRegistrationErrorResponse'
101         failedRemovedCmHandles:
102           type: array
103           items:
104             $ref: '#/components/schemas/CmHandlerRegistrationErrorResponse'
105     CmHandlerRegistrationErrorResponse:
106       type: object
107       properties:
108         cmHandle:
109           type: string
110           example: my-cm-handle
111         errorCode:
112           type: string
113           example: '00'
114         errorText:
115           type: string
116           example: 'Unknown error. <error-details>'
117
118     RestInputCmHandle:
119       required:
120         - cmHandle
121       type: object
122       properties:
123         cmHandle:
124           type: string
125           example: my-cm-handle
126         cmHandleProperties:
127             $ref: '#/components/schemas/RestCmHandleProperties'
128         publicCmHandleProperties:
129             $ref: '#/components/schemas/RestCmHandleProperties'
130     RestCmHandleProperties:
131         type: object
132         additionalProperties:
133             type: string
134             example: my-property
135
136     Conditions:
137       type: object
138       properties:
139         conditions:
140           $ref: '#/components/schemas/ConditionsData'
141     ConditionsData:
142       type: array
143       items:
144         type: object
145         $ref: '#/components/schemas/ConditionProperties'
146     ConditionProperties:
147       properties:
148         name:
149           type: string
150           example: hasAllModules
151         conditionParameters:
152           $ref: '#/components/schemas/ModuleNamesAsJsonArray'
153     ModuleNamesAsJsonArray:
154       type: array
155       items:
156         type: object
157         $ref: '#/components/schemas/ModuleNameAsJsonObject'
158         example: [my-module-1, my-module-2, my-module-3]
159     ModuleNameAsJsonObject:
160         properties:
161           moduleName:
162             type: string
163             example: my-module
164
165     #Response Schemas
166     CmHandles:
167       type: object
168       properties:
169         cmHandles:
170           $ref: '#/components/schemas/CmHandleProperties'
171     CmHandleProperties:
172       type: array
173       items:
174         type: object
175         $ref: '#/components/schemas/CmHandleProperty'
176     CmHandleProperty:
177       properties:
178         cmHandleId:
179           type: string
180           example: my-cm-handle-id
181
182     RestModuleReference:
183       type: object
184       title: Module reference details
185       properties:
186         moduleName:
187           type: string
188           example: my-module-name
189         revision:
190           type: string
191           example: my-module-revision
192
193     CmHandleQueryRestParameters:
194       type: object
195       title: Cm Handle query parameters for executing cm handle search
196       properties:
197         publicCmHandleProperties:
198           type: object
199           additionalProperties:
200             type: string
201             example: Book Type
202
203     RestOutputCmHandle:
204       type: object
205       title: CM handle Details
206       properties:
207         cmHandle:
208           type: string
209           example: my-cm-handle1
210         publicCmHandleProperties:
211           $ref: '#/components/schemas/CmHandlePublicProperties'
212     CmHandlePublicProperties:
213       type: array
214       items:
215         type: object
216         additionalProperties:
217           type: string
218           example: Book Type
219
220     RestOutputCmHandlePublicProperties:
221       type: object
222       properties:
223         publicCmHandleProperties:
224           $ref: '#/components/schemas/CmHandlePublicProperties'
225
226   examples:
227     dataSampleRequest:
228         summary: Sample request
229         description: Sample request body
230         value:
231           test:bookstore:
232             bookstore-name: Chapters
233             categories:
234               - code: '01'
235                 name: SciFi
236                 books:
237                 - authors:
238                     - Iain M. Banks
239                     - Ursula K. Le Guin
240               - code: '02'
241                 name: kids
242                 books:
243                 - authors:
244                     - Philip Pullman
245
246     dataSamplePatchRequest:
247       summary: Sample patch request
248       description: Sample patch request body
249       value:
250         ietf-restconf:yang-patch:
251           patch-id: patch-1
252           edit:
253             - edit-id: edit1
254               operation: merge
255               target: /
256               value:
257                 test:bookstore:
258                   bookstore-name: Chapters
259                   categories:
260                     - code: '01'
261                       name: Science
262                       books:
263                         - authors:
264                             - Author1
265                             - Author2
266                     - code: '02'
267                       name: Arts
268                       books:
269                         - authors:
270                             - Author3
271             - edit-id: edit2
272               operation: merge
273               target: /
274               value:
275                 test:bookstore:
276                   bookstore-name: Novels
277                   categories:
278                     - code: '03'
279                       name: History
280                       books:
281                         - authors:
282                             - Iain M. Banks
283                             - Ursula K. Le Guin
284                     - code: '04'
285                       name: Fiction
286                       books:
287                         - authors:
288                             - Philip Pullman
289
290     dataSampleResponse:
291         summary: Sample response
292         description: Sample response for selecting 'sample 1'.
293         value:
294           bookstore:
295             categories:
296               - code: '01'
297                 books:
298                   - authors:
299                       - Iain M. Banks
300                       - Ursula K. Le Guin
301                 name: SciFi
302               - code: '02'
303                 books:
304                   - authors:
305                       - Philip Pullman
306                 name: kids
307
308   parameters:
309     cmHandleInPath:
310       name: cm-handle
311       in: path
312       description: The identifier for a network function, network element, subnetwork or any other cm object by managed Network CM Proxy
313       required: true
314       schema:
315         type: string
316         example: my-cm-handle
317     xpathInQuery:
318       name: xpath
319       in: query
320       description: xpath
321       required: false
322       schema:
323         type: string
324         default: /
325     requiredXpathInQuery:
326       name: xpath
327       in: query
328       description: xpath
329       required: true
330       schema:
331         type: string
332     includeDescendantsOptionInQuery:
333       name: include-descendants
334       in: query
335       description: include-descendants
336       required: false
337       schema:
338         type: boolean
339         default: false
340     cpsPathInQuery:
341       name: cps-path
342       in: query
343       description: cps-path
344       required: false
345       schema:
346         type: string
347         default: /
348     resourceIdentifierInQuery:
349       name: resourceIdentifier
350       in: query
351       description: The format of resource identifier depend on the associated DMI Plugin implementation. For ONAP DMI Plugin it will be RESTConf paths but it can really be anything.
352       required: true
353       allowReserved: true
354       schema:
355         type: string
356       examples:
357         sample 1:
358           value:
359             resourceIdentifier: \shops\bookstore
360         sample 2:
361           value:
362             resourceIdentifier: \shops\bookstore\categories[@code=1]
363         sample 3:
364           value:
365             resourceIdentifier: parent=shops,child=bookstore
366     optionsParamInQuery:
367       name: options
368       in: query
369       description: options parameter in query, it is mandatory to wrap key(s)=value(s) in parenthesis'()'. The format of options parameter depend on the associated DMI Plugin implementation.
370       required: false
371       schema:
372         type: string
373       allowReserved: true
374       examples:
375         sample 1:
376           value:
377             options: (depth=3)
378         sample 2:
379           value:
380             options: (fields=book)
381         sample 3:
382           value:
383             options: (depth=2,fields=book/authors)
384     topicParamInQuery:
385       name: topic
386       in: query
387       description: topic parameter in query.
388       required: false
389       schema:
390         type: string
391       allowReserved: true
392       examples:
393         sample 1:
394           value:
395             topic: my-topic-name
396     contentParamInHeader:
397       name: Content-Type
398       in: header
399       required: false
400       description: Content parameter for request, if content parameter is null, default value is application/json.
401       schema:
402         type: string
403         default: application/json
404         example: application/yang-data+json
405
406   responses:
407     NotFound:
408       description: The specified resource was not found
409       content:
410         application/json:
411           schema:
412             $ref: '#/components/schemas/ErrorMessage'
413           example:
414             status: 400
415             message: Not found error message
416             details: Not found error details
417     Unauthorized:
418       description: Unauthorized
419       content:
420         application/json:
421           schema:
422             $ref: '#/components/schemas/ErrorMessage'
423           example:
424             status: 401
425             message: Unauthorized error message
426             details: Unauthorized error details
427     Forbidden:
428       description: Forbidden
429       content:
430         application/json:
431           schema:
432             $ref: '#/components/schemas/ErrorMessage'
433           example:
434            status: 403
435            message: Forbidden error message
436            details: Forbidden error details
437     BadRequest:
438       description: Bad Request
439       content:
440         application/json:
441           schema:
442             $ref: '#/components/schemas/ErrorMessage'
443           example:
444            status: 400 BAD_REQUEST
445            message: Bad request error message
446            details: Bad request error details
447     Conflict:
448       description: Conflict
449       content:
450         application/json:
451           schema:
452             $ref: '#/components/schemas/ErrorMessage'
453           example:
454            status: 409 CONFLICT
455            message: Conflict error message
456            details: Conflict error details
457     NotImplemented:
458       description: The given path has not been implemented
459       content:
460         application/json:
461           schema:
462             $ref: '#/components/schemas/ErrorMessage'
463           example:
464            status: 501
465            message: Not implemented error message
466            details: Not implemented error details
467     Ok:
468       description: OK
469       content:
470         application/json:
471           schema:
472             type: object
473     Created:
474       description: Created
475       content: {}
476     NoContent:
477       description: No Content
478       content: {}
479     InternalServerError:
480       description: Internal Server Error
481       content:
482         application/json:
483           schema:
484             $ref: "#/components/schemas/ErrorMessage"
485           example:
486             status: 500
487             message: Internal Server Error
488             details: Internal Server Error occurred
489     BadGateway:
490       description: Bad Gateway
491       content:
492         application/json:
493           schema:
494             $ref: "#/components/schemas/DmiErrorMessage"
495           example:
496             message: "Bad Gateway Error Message NCMP"
497             dmi-response:
498               http-code: 400
499               body: "Bad Request"