API versioning supported and added different versions for POST APIs
[cps.git] / cps-rest / docs / openapi / components.yml
1 # ============LICENSE_START=======================================================
2 # Copyright (c) 2021-2022 Bell Canada.
3 # Modifications Copyright (C) 2021-2022 Nordix Foundation
4 # Modifications Copyright (C) 2022 TechMahindra Ltd.
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
24     AnchorDetails:
25       type: object
26       title: Anchor details by anchor Name
27       properties:
28         name:
29           type: string
30           example: my-anchor
31         dataspaceName:
32           type: string
33           example: my-dataspace
34         schemaSetName:
35           type: string
36           example: my-schema-set
37
38     DataspaceDetails:
39       type: object
40       title: Dataspace details by dataspace Name
41       properties:
42         name:
43           type: string
44           example: my-dataspace
45
46     ErrorMessage:
47       type: object
48       title: Error
49       properties:
50         status:
51           type: string
52         message:
53           type: string
54         details:
55           type: string
56
57     MultipartFile:
58       type: object
59       required:
60         - file
61       properties:
62         file:
63           type: string
64           description: multipartFile
65           format: binary
66           example:  'https://github.com/onap/cps/blob/master/cps-service/src/test/resources/bookstore.yang'
67
68     ModuleReferences:
69       type: object
70       title: Module reference object
71       properties:
72         name:
73           type: string
74           example: my-module-reference-name
75         namespace:
76           type: string
77           example: my-module-reference-namespace
78         revision:
79           type: string
80           example: my-module-reference-revision
81
82     SchemaSetDetails:
83       type: object
84       title: Schema set details by dataspace and schemasetName
85       required:
86         - "moduleReferences"
87       properties:
88         dataspaceName:
89           type: string
90           example: my-dataspace
91         moduleReferences:
92           type: array
93           items:
94             $ref: '#/components/schemas/ModuleReferences'
95         name:
96           type: string
97           example: my-schema-set
98
99   examples:
100     dataSample:
101       value:
102         test:bookstore:
103           bookstore-name: Chapters
104           categories:
105             - code: 01
106               name: SciFi
107             - code: 02
108               name: kids
109
110   parameters:
111     dataspaceNameInQuery:
112       name: dataspace-name
113       in: query
114       description: dataspace-name
115       required: true
116       schema:
117         type: string
118         example: my-dataspace
119     dataspaceNameInPath:
120       name: dataspace-name
121       in: path
122       description: dataspace-name
123       required: true
124       schema:
125         type: string
126         example: my-dataspace
127     anchorNameInPath:
128       name: anchor-name
129       in: path
130       description: anchor-name
131       required: true
132       schema:
133         type: string
134         example: my-anchor
135     schemaSetNameInQuery:
136       name: schema-set-name
137       in: query
138       description: schema-set-name
139       required: true
140       schema:
141         type: string
142         example: my-schema-set
143     schemaSetNameInPath:
144       name: schema-set-name
145       in: path
146       description: schema-set-name
147       required: true
148       schema:
149         type: string
150         example: my-schema-set
151     anchorNameInQuery:
152       name: anchor-name
153       in: query
154       description: anchor-name
155       required: true
156       schema:
157         type: string
158         example: my-anchor
159     xpathInQuery:
160       name: xpath
161       in: query
162       description: For more details on xpath, please refer https://docs.onap.org/projects/onap-cps/en/latest/cps-path.html
163       required: false
164       schema:
165         type: string
166         default: /
167       examples:
168         container xpath:
169           value: /shops/bookstore
170         list attributes xpath:
171           value: /shops/bookstore/categories[@code=1]
172     requiredXpathInQuery:
173       name: xpath
174       in: query
175       description: For more details on xpath, please refer https://docs.onap.org/projects/onap-cps/en/latest/cps-path.html
176       required: true
177       schema:
178         type: string
179       examples:
180         container xpath:
181           value: /shops/bookstore
182         list attributes xpath:
183           value: /shops/bookstore/categories[@code=1]
184     cpsPathInQuery:
185       name: cps-path
186       in: query
187       description: For more details on cps path, please refer https://docs.onap.org/projects/onap-cps/en/latest/cps-path.html
188       required: false
189       schema:
190         type: string
191         default: /
192       examples:
193         container cps path:
194           value: //bookstore
195         list attributes cps path:
196           value: //categories[@code=1]
197     includeDescendantsOptionInQuery:
198       name: include-descendants
199       in: query
200       description: include-descendants
201       required: false
202       schema:
203         type: boolean
204         default: false
205         example: false
206     observedTimestampInQuery:
207       name: observed-timestamp
208       in: query
209       description: observed-timestamp
210       required: false
211       schema:
212         type: string
213         example: '2021-03-21T00:10:34.030-0100'
214     apiVersionInPath:
215       name: apiVersion
216       in: path
217       description: apiVersion
218       required: true
219       schema:
220         type: string
221         enum: [v1, v2]
222         default: v2
223
224   responses:
225     NotFound:
226       description: The specified resource was not found
227       content:
228         application/json:
229           schema:
230             $ref: '#/components/schemas/ErrorMessage'
231           example:
232             status: 404
233             message: Resource Not Found
234             details: The requested resource is not found
235     Unauthorized:
236       description: Unauthorized
237       content:
238         application/json:
239           schema:
240             $ref: '#/components/schemas/ErrorMessage'
241           example:
242             status: 401
243             message: Unauthorized request
244             details: This request is unauthorized
245     Forbidden:
246       description: Forbidden
247       content:
248         application/json:
249           schema:
250             $ref: '#/components/schemas/ErrorMessage'
251           example:
252             status: 403
253             message: Request Forbidden
254             details: This request is forbidden
255     BadRequest:
256       description: Bad Request
257       content:
258         application/json:
259           schema:
260             $ref: '#/components/schemas/ErrorMessage'
261           example:
262             status: 400
263             message: Bad Request
264             details: The provided request is not valid
265     Conflict:
266       description: Conflict
267       content:
268         application/json:
269           schema:
270             $ref: '#/components/schemas/ErrorMessage'
271           example:
272             status: 409
273             message: Conflicting request
274             details: The request cannot be processed as the resource is in use.
275     Ok:
276       description: OK
277       content:
278         application/json:
279           schema:
280             type: object
281           examples:
282             dataSample:
283               value: ""
284     Created:
285       description: Created
286       content:
287         text/plain:
288           schema:
289             type: string
290             example: my-resource
291     CreatedV2:
292       description: Created without response body
293     InternalServerError:
294       description: Internal Server Error
295       content:
296         application/json:
297           schema:
298             $ref: "#/components/schemas/ErrorMessage"
299           example:
300             status: 500
301             message: Internal Server Error
302             details: Internal Server Error occurred
303     NoContent:
304       description: No Content
305       content: {}