d744539a7e04cd5b5e923967bfc5723a628fd18d
[ric-plt/appmgr.git] / api / appmgr_rest_api.yaml
1 swagger: '2.0'
2 info:
3   description: This is a draft API for RIC appmgr
4   version: 0.3.3
5   title: RIC appmgr
6   license:
7     name: Apache 2.0
8     url: 'http://www.apache.org/licenses/LICENSE-2.0.html'
9 host: hostname
10 basePath: /ric/v1
11 schemes:
12   - http
13 paths:
14   /health/alive :
15     get :
16       summary     : Health check of xApp Manager - Liveness probe
17       tags        : 
18         - health
19       operationId : getHealthAlive
20       responses   :
21         '200' :
22           description : Status of xApp Manager is ok
23   /health/ready :
24     get :
25       summary     : Readiness check of xApp Manager - Readiness probe
26       tags        : 
27         - health
28       operationId : getHealthReady
29       responses   :
30         '200':
31           description : xApp Manager is ready for service
32         '503':
33           description: xApp Manager is not ready for service
34   /xapps:
35     post:
36       summary: Deploy a xapp
37       tags:
38         - xapp
39       operationId: deployXapp
40       consumes:
41         - application/json
42       produces:
43         - application/json
44       parameters:
45         - name: XappDescriptor
46           in: body
47           description: xApp deployment info
48           schema:
49             $ref: '#/definitions/XappDescriptor'
50       responses:
51         '201':
52           description: xApp successfully created
53           schema:
54             $ref: '#/definitions/Xapp'
55         '400':
56           description: Invalid input
57         '500':
58           description: Internal error
59     get:
60       summary: Returns the status of all xapps
61       tags:
62         - xapp
63       operationId: getAllXapps
64       produces:
65         - application/json
66       responses:
67         '200':
68           description: successful query of xApps
69           schema:
70             $ref: '#/definitions/AllDeployedXapps'
71         '500':
72           description: Internal error
73   /xapps/list:
74     get:
75       summary: Returns the list of all deployable xapps
76       tags:
77         - xapp
78       operationId: listAllXapps
79       produces:
80         - application/json
81       responses:
82         '200':
83           description: successful list of deployable xApps
84           schema:
85             $ref: '#/definitions/AllDeployableXapps'
86         '500':
87           description: Internal error
88   /xapps/{xAppName}:
89     get:
90       summary: Returns the status of a given xapp
91       tags:
92         - xapp
93       operationId: getXappByName
94       produces:
95         - application/json
96       parameters:
97         - name: xAppName
98           in: path
99           description: Name of xApp
100           required: true
101           type: string
102       responses:
103         '200':
104           description: successful operation
105           schema:
106             $ref: '#/definitions/Xapp'
107         '400':
108           description: Invalid ID supplied
109         '404':
110           description: Xapp not found
111         '500':
112           description: Internal error
113     delete:
114       summary: Undeploy an existing xapp
115       tags:
116         - xapp
117       operationId: undeployXapp
118       parameters:
119         - name: xAppName
120           in: path
121           description: Xapp to be undeployed
122           required: true
123           type: string
124       responses:
125         '204':
126           description: Successful deletion of xApp
127         '400':
128           description: Invalid xApp name supplied
129         '500':
130           description: Internal error
131   /xapps/{xAppName}/instances/{xAppInstanceName}:
132     get:
133       summary: Returns the status of a given xapp
134       tags:
135         - xapp
136       operationId: getXappInstanceByName
137       produces:
138         - application/json
139       parameters:
140         - name: xAppName
141           in: path
142           description: Name of xApp
143           required: true
144           type: string
145         - name: xAppInstanceName
146           in: path
147           description: Name of xApp instance to get information
148           required: true
149           type: string
150       responses:
151         '200':
152           description: successful operation
153           schema:
154             $ref: '#/definitions/XappInstance'
155         '400':
156           description: Invalid name supplied
157         '404':
158           description: Xapp not found
159         '500':
160           description: Internal error
161   /config:
162     put:
163       summary: Modify xApp config
164       tags:
165         - xapp
166       operationId: ModifyXappConfig
167       consumes:
168         - application/json
169       produces:
170         - application/json
171       parameters:
172         - name: XAppConfig
173           in: body
174           description: xApp config
175           schema:
176             $ref: '#/definitions/XAppConfig'
177       responses:
178         '200':
179           description: xApp config successfully modified
180           schema:
181             $ref: '#/definitions/ConfigValidationErrors'
182         '400':
183           description: Invalid input
184         '422':
185           description: Validation of configuration failed
186         '500':
187           description: Internal error
188     get:
189       summary: Returns the configuration of all xapps
190       tags:
191         - xapp
192       operationId: getAllXappConfig
193       produces:
194         - application/json
195       responses:
196         '200':
197           description: successful query of xApp config
198           schema:
199             $ref: '#/definitions/AllXappConfig'
200         '500':
201           description: Internal error
202   /config/{element}:
203     get:
204       summary: Returns the given element of the configuration
205       tags:
206         - xapp
207       operationId: GetConfigElement
208       produces:
209         - application/json
210       parameters:
211         - name: element
212           in: path
213           description: Name of configuration element
214           required: true
215           type: string
216       responses:
217         '200':
218           description: successful query of config elements
219           schema:
220             $ref: '#/definitions/AllXappConfig'
221         '500':
222           description: Internal error
223   /subscriptions:
224     post:
225       summary: Subscribe event
226       tags:
227         - xapp
228         - subscriptions
229       operationId: addSubscription
230       consumes:
231         - application/json
232       produces:
233         - application/json
234       parameters:
235         - name: subscriptionRequest
236           in: body
237           description: New subscription
238           required: true
239           schema:
240             $ref: '#/definitions/subscriptionRequest'
241       responses:
242         '201':
243           description: Subscription successfully created
244           schema:
245             $ref: '#/definitions/subscriptionResponse'
246         '400':
247           description: Invalid input
248     get:
249       summary: Returns all subscriptions
250       tags:
251         - xapp
252         - subscriptions
253       operationId: getSubscriptions
254       produces:
255         - application/json
256       responses:
257         '200':
258           description: successful query of subscriptions
259           schema:
260             $ref: '#/definitions/allSubscriptions'
261   /subscriptions/{subscriptionId}:
262     get:
263       summary: Returns the information of subscription
264       tags:
265         - xapp
266         - subscriptions
267       operationId: getSubscriptionById
268       produces:
269         - application/json
270       parameters:
271         - name: subscriptionId
272           in: path
273           description: ID of subscription
274           required: true
275           type: string
276       responses:
277         '200':
278           description: successful operation
279           schema:
280             $ref: '#/definitions/subscription'
281         '400':
282           description: Invalid ID supplied
283         '404':
284           description: Subscription not found
285     put:
286       summary: Modify event subscription
287       tags:
288         - xapp
289         - subscriptions
290       operationId: modifySubscription
291       consumes:
292         - application/json
293       produces:
294         - application/json
295       parameters:
296         - name: subscriptionId
297           in: path
298           description: ID of subscription
299           required: true
300           type: string
301         - in: body
302           name: subscriptionRequest
303           description: Modified subscription
304           required: true
305           schema:
306             $ref: '#/definitions/subscriptionRequest'
307       responses:
308         '200':
309           description: Subscription modification successful
310           schema:
311             $ref: '#/definitions/subscriptionResponse'
312         '400':
313           description: Invalid input
314     delete:
315       summary: Unsubscribe event
316       tags:
317         - xapp
318         - subscriptions
319       description: ''
320       operationId: deleteSubscription
321       parameters:
322         - name: subscriptionId
323           in: path
324           description: ID of subscription
325           required: true
326           type: string
327       responses:
328         '204':
329           description: Successful deletion of subscription
330         '400':
331           description: Invalid subscription supplied
332 definitions:
333   AllDeployableXapps:
334     type: array
335     items:
336       type: string
337   AllDeployedXapps:
338     type: array
339     items:
340       $ref: '#/definitions/Xapp'
341   Xapp:
342     type: object
343     required:
344       - name
345     properties:
346       name:
347         type: string
348       status:
349         type: string
350         description: xapp status in the RIC
351         enum:
352           - unknown
353           - deployed
354           - deleted
355           - superseded
356           - failed
357           - deleting
358       version:
359         type: string
360       instances:
361         type: array
362         items:
363           $ref: '#/definitions/XappInstance'
364   XappInstance:
365     type: object
366     required:
367       - name
368     properties:
369       name:
370         type: string
371       status:
372         type: string
373         description: xapp instance status
374         enum:
375           - pending
376           - running
377           - succeeded
378           - failed
379           - unknown
380           - completed
381           - crashLoopBackOff
382       ip:
383         type: string
384       port:
385         type: integer
386       txMessages:
387         type: array
388         items:
389           type: string
390       rxMessages:
391         type: array
392         items:
393           type: string
394       policies:
395          type: array
396          items:
397            type: integer
398   XappDescriptor:
399     type: object
400     required:
401       - xappName
402     properties:
403       xappName:
404         type: string
405         description: Name of the xApp in helm chart
406       helmVersion:
407         type: string
408         description: The exact xapp helm chart version to install
409       releaseName:
410         type: string
411         description: Name of the xapp to be visible in Kubernetes
412       namespace:
413         type: string
414         description: Name of the namespace to which xApp is deployed. Overrides the value given in Helm chart value file.
415       overrideFile:
416         type: object
417         description: JSON string of override file for 'helm install' command
418   XappDescriptorList:
419     type: array
420     items:
421       $ref: '#/definitions/XappDescriptor'
422   ConfigMetadata:
423     type: object
424     required:
425       - xappName
426       - namespace
427     properties:
428       xappName:
429         type: string
430         description: Name of the xApp
431       namespace:
432         type: string
433         description: Name of the namespace
434   ConfigValidationError:
435     type: object
436     required:
437       - field
438       - error
439     properties:
440       field:
441         type: string
442         description: Name of the parameter
443       error:
444         type: string
445         description: Description of validation error
446   ConfigValidationErrors:
447     type: array
448     items:
449       $ref: '#/definitions/ConfigValidationError'
450   XAppConfig:
451     type: object
452     required:
453       - metadata
454       - config
455     properties:
456       metadata:
457         $ref: '#/definitions/ConfigMetadata'
458       config:
459         type: object
460         description: Configuration in JSON format
461   AllXappConfig:
462     type: array
463     items:
464       $ref: '#/definitions/XAppConfig'
465   EventType:
466     type: string
467     description: Event which is subscribed
468     enum:
469       - deployed
470       - undeployed
471       - created
472       - modified
473       - deleted
474       - restarted
475       - all
476   SubscriptionData:
477     type: object
478     required:
479       - targetUrl
480       - eventType
481       - maxRetries
482       - retryTimer
483     properties:
484       targetUrl:
485         type: string
486         example: 'http://localhost:11111/apps/webhook/'
487       eventType:
488         $ref: '#/definitions/EventType'
489       maxRetries:
490         type: integer
491         description: Maximum number of retries
492       retryTimer:
493         type: integer
494         description: Time in seconds to wait before next retry
495   subscriptionRequest:
496     type: object
497     required:
498       - data
499     properties:
500       data:
501         $ref: '#/definitions/SubscriptionData'
502   subscriptionResponse:
503     type: object
504     properties:
505       id:
506         type: string
507       version:
508         type: integer
509       eventType:
510         $ref: '#/definitions/EventType'
511   allSubscriptions:
512     type: array
513     items:
514       $ref: '#/definitions/subscription'
515   subscription:
516     type: object
517     properties:
518       id:
519         type: string
520       data:
521         $ref: '#/definitions/SubscriptionData'
522   subscriptionNotification:
523     type: object
524     properties:
525       id:
526         type: string
527       version:
528         type: integer
529       eventType:
530         $ref: '#/definitions/EventType'
531       xApps:
532         $ref: '#/definitions/AllDeployedXapps'