[TECHDEBT] Align CPS Core REST API Specification and Implementation
[cps.git] / cps-rest / docs / openapi / components.yml
1 # ============LICENSE_START=======================================================
2 # Copyright (c) 2021 Bell Canada.
3 # Modifications Copyright (C) 2021-2022 Nordix Foundation
4 # ================================================================================
5 # Licensed under the Apache License, Version 2.0 (the "License");
6 # you may not use this file except in compliance with the License.
7 # You may obtain a copy of the License at
8 #
9 #       http://www.apache.org/licenses/LICENSE-2.0
10 #
11 # Unless required by applicable law or agreed to in writing, software
12 # distributed under the License is distributed on an "AS IS" BASIS,
13 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 # See the License for the specific language governing permissions and
15 # limitations under the License.
16 #
17 # SPDX-License-Identifier: Apache-2.0
18 # ============LICENSE_END=========================================================
19
20 components:
21   schemas:
22
23     AnchorDetails:
24       type: object
25       title: Anchor details by anchor Name
26       properties:
27         name:
28           type: string
29           example: my-anchor
30         dataspaceName:
31           type: string
32           example: my-dataspace
33         schemaSetName:
34           type: string
35           example: my-schema-set
36
37     ErrorMessage:
38       type: object
39       title: Error
40       properties:
41         status:
42           type: string
43         message:
44           type: string
45         details:
46           type: string
47
48     MultipartFile:
49       type: object
50       required:
51         - file
52       properties:
53         file:
54           type: string
55           description: multipartFile
56           format: binary
57           example:  'https://github.com/onap/cps/blob/master/cps-service/src/test/resources/bookstore.yang'
58
59     ModuleReferences:
60       type: object
61       title: Module reference object
62       properties:
63         name:
64           type: string
65           example: my-module-reference-name
66         namespace:
67           type: string
68           example: my-module-reference-namespace
69         revision:
70           type: string
71           example: my-module-reference-revision
72
73     SchemaSetDetails:
74       type: object
75       title: Schema set details by dataspace and schemasetName
76       properties:
77         dataspaceName:
78           type: string
79           example: my-dataspace
80         moduleReferences:
81           type: array
82           items:
83             $ref: '#/components/schemas/ModuleReferences'
84         name:
85           type: string
86           example: my-schema-set
87
88   examples:
89     dataSampleRequest:
90       value:
91         test:bookstore:
92           bookstore-name: Chapters
93           categories:
94             - code: 01
95               name: SciFi
96             - code: 02
97               name: kids
98
99     dataSampleResponse:
100       summary: The data node returned does not include the root node. This is being investigated as a part of CPS-461
101       value:
102           bookstore-name: Chapters
103           categories:
104             - code: 01
105               name: SciFi
106             - code: 02
107               name: kids
108
109   parameters:
110     dataspaceNameInQuery:
111       name: dataspace-name
112       in: query
113       description: dataspace-name
114       required: true
115       schema:
116         type: string
117         example: my-dataspace
118     dataspaceNameInPath:
119       name: dataspace-name
120       in: path
121       description: dataspace-name
122       required: true
123       schema:
124         type: string
125         example: my-dataspace
126     anchorNameInPath:
127       name: anchor-name
128       in: path
129       description: anchor-name
130       required: true
131       schema:
132         type: string
133         example: my-anchor
134     schemaSetNameInQuery:
135       name: schema-set-name
136       in: query
137       description: schema-set-name
138       required: true
139       schema:
140         type: string
141         example: my-schema-set
142     schemaSetNameInPath:
143       name: schema-set-name
144       in: path
145       description: schema-set-name
146       required: true
147       schema:
148         type: string
149         example: my-schema-set
150     anchorNameInQuery:
151       name: anchor-name
152       in: query
153       description: anchor-name
154       required: true
155       schema:
156         type: string
157         example: my-anchor
158     xpathInQuery:
159       name: xpath
160       in: query
161       description: For more details on xpath, please refer https://docs.onap.org/projects/onap-cps/en/latest/cps-path.html
162       required: false
163       schema:
164         type: string
165         default: /
166       examples:
167         container xpath:
168           value: /shops/bookstore
169         list attributes xpath:
170           value: /shops/bookstore/categories[@code=1]
171     requiredXpathInQuery:
172       name: xpath
173       in: query
174       description: For more details on xpath, please refer https://docs.onap.org/projects/onap-cps/en/latest/cps-path.html
175       required: true
176       schema:
177         type: string
178       examples:
179         container xpath:
180           value: /shops/bookstore
181         list attributes xpath:
182           value: /shops/bookstore/categories[@code=1]
183     cpsPathInQuery:
184       name: cps-path
185       in: query
186       description: For more details on cps path, please refer https://docs.onap.org/projects/onap-cps/en/latest/cps-path.html
187       required: false
188       schema:
189         type: string
190         default: /
191       examples:
192         container cps path:
193           value: //bookstore
194         list attributes cps path:
195           value: //categories[@code=1]
196     includeDescendantsOptionInQuery:
197       name: include-descendants
198       in: query
199       description: include-descendants
200       required: false
201       schema:
202         type: boolean
203         default: false
204         example: false
205     observedTimestampInQuery:
206       name: observed-timestamp
207       in: query
208       description: observed-timestamp
209       required: false
210       schema:
211         type: string
212         example: '2021-03-21T00:10:34.030-0100'
213
214   responses:
215     NotFound:
216       description: The specified resource was not found
217       content:
218         application/json:
219           schema:
220             $ref: '#/components/schemas/ErrorMessage'
221           example:
222             status: 404
223             message: Resource Not Found
224             details: The requested resource is not found
225     Unauthorized:
226       description: Unauthorized
227       content:
228         application/json:
229           schema:
230             $ref: '#/components/schemas/ErrorMessage'
231           example:
232             status: 401
233             message: Unauthorized request
234             details: This request is unauthorized
235     Forbidden:
236       description: Forbidden
237       content:
238         application/json:
239           schema:
240             $ref: '#/components/schemas/ErrorMessage'
241           example:
242             status: 403
243             message: Request Forbidden
244             details: This request is forbidden
245     BadRequest:
246       description: Bad Request
247       content:
248         application/json:
249           schema:
250             $ref: '#/components/schemas/ErrorMessage'
251           example:
252             status: 400
253             message: Bad Request
254             details: The provided request is not valid
255     Conflict:
256       description: Conflict
257       content:
258         application/json:
259           schema:
260             $ref: '#/components/schemas/ErrorMessage'
261           example:
262             status: 409
263             message: Conflicting request
264             details: The request cannot be processed as the resource is in use.
265     Ok:
266       description: OK
267       content:
268         application/json:
269           schema:
270             type: object
271           examples:
272             dataSampleResponse:
273               value: ""
274     Created:
275       description: Created
276       content:
277         text/plain:
278           schema:
279             type: string
280             example: my-resource
281     InternalServerError:
282       description: Internal Server Error
283       content:
284         application/json:
285           schema:
286             $ref: "#/components/schemas/ErrorMessage"
287           example:
288             status: 500
289             message: Internal Server Error
290             details: Internal Server Error occurred
291     NoContent:
292       description: No Content
293       content: {}