d1aa1873bdb83888ac8bd020f2a386f7fe52635c
[nonrtric.git] / enrichment-coordinator-service / api / ecs-api.yaml
1 openapi: 3.0.1
2 info:
3   title: Enrichment Data service
4   description: This page lists all the rest apis for the service.
5   version: "1.0"
6 servers:
7 - url: /
8 tags:
9 - name: A1-EI (enrichment information)
10   description: Consumer Controller
11 - name: A1-EI (enrichment information) callbacks
12   description: Consumer Simulator Controller
13 - name: Data Producer Job Control (example producer)
14   description: Producer Simulator Controller
15 - name: Data Producer Registry API
16   description: Producer Controller
17 - name: Service status
18   description: Status Controller
19 paths:
20   /producer_simulator/ei_job:
21     post:
22       tags:
23       - Data Producer Job Control (example producer)
24       summary: Callback for EI job creation
25       operationId: jobCreatedCallbackUsingPOST
26       requestBody:
27         description: request
28         content:
29           application/json:
30             schema:
31               $ref: '#/components/schemas/producer_ei_job_request'
32         required: true
33       responses:
34         200:
35           description: OK
36           content: {}
37         201:
38           description: Created
39           content: {}
40         401:
41           description: Unauthorized
42           content: {}
43         403:
44           description: Forbidden
45           content: {}
46         404:
47           description: Not Found
48           content: {}
49       deprecated: false
50   /A1-EI/v1/eitypes/{eiTypeId}:
51     get:
52       tags:
53       - A1-EI (enrichment information)
54       summary: Individual EI type
55       operationId: getEiTypeUsingGET
56       parameters:
57       - name: eiTypeId
58         in: path
59         description: eiTypeId
60         required: true
61         schema:
62           type: string
63       responses:
64         200:
65           description: EI type
66           content:
67             application/json:
68               schema:
69                 $ref: '#/components/schemas/EiTypeObject'
70         401:
71           description: Unauthorized
72           content: {}
73         403:
74           description: Forbidden
75           content: {}
76         404:
77           description: Enrichment Information type is not found
78           content:
79             application/json:
80               schema:
81                 $ref: '#/components/schemas/ProblemDetails'
82       deprecated: false
83   /consumer_simulator/eijobs/{eiJobId}/status:
84     post:
85       tags:
86       - A1-EI (enrichment information) callbacks
87       summary: Callback for EI job status
88       operationId: jobStatusCallbackUsingPOST
89       parameters:
90       - name: eiJobId
91         in: path
92         description: eiJobId
93         required: true
94         schema:
95           type: string
96       requestBody:
97         description: status
98         content:
99           application/json:
100             schema:
101               $ref: '#/components/schemas/EiJobStatusObject'
102         required: true
103       responses:
104         200:
105           description: OK
106           content: {}
107         201:
108           description: Created
109           content: {}
110         401:
111           description: Unauthorized
112           content: {}
113         403:
114           description: Forbidden
115           content: {}
116         404:
117           description: Not Found
118           content: {}
119       deprecated: false
120   /ei-producer/v1/eitypes:
121     get:
122       tags:
123       - Data Producer Registry API
124       summary: EI type identifiers
125       operationId: getEiTypeIdentifiersUsingGET_1
126       responses:
127         200:
128           description: EI type identifiers
129           content:
130             application/json:
131               schema:
132                 type: array
133                 items:
134                   type: string
135         401:
136           description: Unauthorized
137           content: {}
138         403:
139           description: Forbidden
140           content: {}
141         404:
142           description: Not Found
143           content: {}
144       deprecated: false
145   /A1-EI/v1/eitypes:
146     get:
147       tags:
148       - A1-EI (enrichment information)
149       summary: EI type identifiers
150       operationId: getEiTypeIdentifiersUsingGET
151       responses:
152         200:
153           description: EI type identifiers
154           content:
155             application/json:
156               schema:
157                 type: array
158                 items:
159                   type: string
160         401:
161           description: Unauthorized
162           content: {}
163         403:
164           description: Forbidden
165           content: {}
166         404:
167           description: Not Found
168           content: {}
169       deprecated: false
170   /ei-producer/v1/eiproducers/{eiProducerId}/status:
171     get:
172       tags:
173       - Data Producer Registry API
174       summary: EI producer status
175       operationId: getEiProducerStatusUsingGET
176       parameters:
177       - name: eiProducerId
178         in: path
179         description: eiProducerId
180         required: true
181         schema:
182           type: string
183       responses:
184         200:
185           description: EI producer status
186           content:
187             application/json:
188               schema:
189                 $ref: '#/components/schemas/producer_status'
190         401:
191           description: Unauthorized
192           content: {}
193         403:
194           description: Forbidden
195           content: {}
196         404:
197           description: Enrichment Information producer is not found
198           content:
199             application/json:
200               schema:
201                 $ref: '#/components/schemas/ProblemDetails'
202       deprecated: false
203   /producer_simulator/ei_job/{eiJobId}:
204     delete:
205       tags:
206       - Data Producer Job Control (example producer)
207       summary: Callback for EI job deletion
208       operationId: jobDeletedCallbackUsingDELETE
209       parameters:
210       - name: eiJobId
211         in: path
212         description: eiJobId
213         required: true
214         schema:
215           type: string
216       responses:
217         200:
218           description: OK
219           content: {}
220         204:
221           description: No Content
222           content: {}
223         401:
224           description: Unauthorized
225           content: {}
226         403:
227           description: Forbidden
228           content: {}
229       deprecated: false
230   /ei-producer/v1/eiproducers:
231     get:
232       tags:
233       - Data Producer Registry API
234       summary: EI producer identifiers
235       operationId: getEiProducerIdentifiersUsingGET
236       parameters:
237       - name: ei_type_id
238         in: query
239         description: If given, only the producers for the EI Data type is returned.
240         allowEmptyValue: false
241         schema:
242           type: string
243       responses:
244         200:
245           description: EI producer identifiers
246           content:
247             application/json:
248               schema:
249                 type: array
250                 items:
251                   type: string
252         401:
253           description: Unauthorized
254           content: {}
255         403:
256           description: Forbidden
257           content: {}
258         404:
259           description: Not Found
260           content: {}
261       deprecated: false
262   /ei-producer/v1/eitypes/{eiTypeId}:
263     get:
264       tags:
265       - Data Producer Registry API
266       summary: Individual EI type
267       operationId: getEiTypeUsingGET_1
268       parameters:
269       - name: eiTypeId
270         in: path
271         description: eiTypeId
272         required: true
273         schema:
274           type: string
275       responses:
276         200:
277           description: EI type
278           content:
279             application/json:
280               schema:
281                 $ref: '#/components/schemas/producer_ei_type_info'
282         401:
283           description: Unauthorized
284           content: {}
285         403:
286           description: Forbidden
287           content: {}
288         404:
289           description: Enrichment Information type is not found
290           content:
291             application/json:
292               schema:
293                 $ref: '#/components/schemas/ProblemDetails'
294       deprecated: false
295     put:
296       tags:
297       - Data Producer Registry API
298       summary: Individual EI type
299       operationId: putEiTypeUsingPUT
300       parameters:
301       - name: eiTypeId
302         in: path
303         description: eiTypeId
304         required: true
305         schema:
306           type: string
307       requestBody:
308         description: registrationInfo
309         content:
310           application/json:
311             schema:
312               $ref: '#/components/schemas/producer_ei_type_info'
313         required: true
314       responses:
315         200:
316           description: Type updated
317           content: {}
318         201:
319           description: Type created
320           content: {}
321         400:
322           description: Bad request
323           content:
324             application/json:
325               schema:
326                 $ref: '#/components/schemas/ProblemDetails'
327         401:
328           description: Unauthorized
329           content: {}
330         403:
331           description: Forbidden
332           content: {}
333         404:
334           description: Not Found
335           content: {}
336       deprecated: false
337     delete:
338       tags:
339       - Data Producer Registry API
340       summary: Individual EI type
341       operationId: deleteEiTypeUsingDELETE
342       parameters:
343       - name: eiTypeId
344         in: path
345         description: eiTypeId
346         required: true
347         schema:
348           type: string
349       responses:
350         200:
351           description: Not used
352           content: {}
353         204:
354           description: Producer deleted
355           content: {}
356         401:
357           description: Unauthorized
358           content: {}
359         403:
360           description: Forbidden
361           content: {}
362         404:
363           description: Enrichment Information type is not found
364           content:
365             application/json:
366               schema:
367                 $ref: '#/components/schemas/ProblemDetails'
368         406:
369           description: The Enrichment Information type has one or several active producers
370           content:
371             application/json:
372               schema:
373                 $ref: '#/components/schemas/ProblemDetails'
374       deprecated: false
375   /status:
376     get:
377       tags:
378       - Service status
379       summary: Returns status and statistics of this service
380       operationId: getStatusUsingGET
381       responses:
382         200:
383           description: Service is living
384           content:
385             application/json:
386               schema:
387                 $ref: '#/components/schemas/status_info'
388         401:
389           description: Unauthorized
390           content: {}
391         403:
392           description: Forbidden
393           content: {}
394         404:
395           description: Not Found
396           content: {}
397       deprecated: false
398   /A1-EI/v1/eijobs/{eiJobId}:
399     get:
400       tags:
401       - A1-EI (enrichment information)
402       summary: Individual EI job
403       operationId: getIndividualEiJobUsingGET
404       parameters:
405       - name: eiJobId
406         in: path
407         description: eiJobId
408         required: true
409         schema:
410           type: string
411       responses:
412         200:
413           description: EI job
414           content:
415             application/json:
416               schema:
417                 $ref: '#/components/schemas/EiJobObject'
418         401:
419           description: Unauthorized
420           content: {}
421         403:
422           description: Forbidden
423           content: {}
424         404:
425           description: Enrichment Information job is not found
426           content:
427             application/json:
428               schema:
429                 $ref: '#/components/schemas/ProblemDetails'
430       deprecated: false
431     put:
432       tags:
433       - A1-EI (enrichment information)
434       summary: Individual EI job
435       operationId: putIndividualEiJobUsingPUT
436       parameters:
437       - name: eiJobId
438         in: path
439         description: eiJobId
440         required: true
441         schema:
442           type: string
443       requestBody:
444         description: eiJobObject
445         content:
446           application/json:
447             schema:
448               $ref: '#/components/schemas/EiJobObject'
449         required: true
450       responses:
451         200:
452           description: Job updated
453           content: {}
454         201:
455           description: Job created
456           content: {}
457         401:
458           description: Unauthorized
459           content: {}
460         403:
461           description: Forbidden
462           content: {}
463         404:
464           description: Enrichment Information type is not found
465           content:
466             application/json:
467               schema:
468                 $ref: '#/components/schemas/ProblemDetails'
469       deprecated: false
470     delete:
471       tags:
472       - A1-EI (enrichment information)
473       summary: Individual EI job
474       operationId: deleteIndividualEiJobUsingDELETE
475       parameters:
476       - name: eiJobId
477         in: path
478         description: eiJobId
479         required: true
480         schema:
481           type: string
482       responses:
483         200:
484           description: Not used
485           content: {}
486         204:
487           description: Job deleted
488           content: {}
489         401:
490           description: Unauthorized
491           content: {}
492         403:
493           description: Forbidden
494           content: {}
495         404:
496           description: Enrichment Information job is not found
497           content:
498             application/json:
499               schema:
500                 $ref: '#/components/schemas/ProblemDetails'
501       deprecated: false
502   /ei-producer/v1/eiproducers/{eiProducerId}:
503     get:
504       tags:
505       - Data Producer Registry API
506       summary: Individual EI producer
507       operationId: getEiProducerUsingGET
508       parameters:
509       - name: eiProducerId
510         in: path
511         description: eiProducerId
512         required: true
513         schema:
514           type: string
515       responses:
516         200:
517           description: EI producer
518           content:
519             application/json:
520               schema:
521                 $ref: '#/components/schemas/producer_registration_info'
522         401:
523           description: Unauthorized
524           content: {}
525         403:
526           description: Forbidden
527           content: {}
528         404:
529           description: Enrichment Information producer is not found
530           content:
531             application/json:
532               schema:
533                 $ref: '#/components/schemas/ProblemDetails'
534       deprecated: false
535     put:
536       tags:
537       - Data Producer Registry API
538       summary: Individual EI producer
539       operationId: putEiProducerUsingPUT
540       parameters:
541       - name: eiProducerId
542         in: path
543         description: eiProducerId
544         required: true
545         schema:
546           type: string
547       requestBody:
548         description: registrationInfo
549         content:
550           application/json:
551             schema:
552               $ref: '#/components/schemas/producer_registration_info'
553         required: true
554       responses:
555         200:
556           description: Producer updated
557           content: {}
558         201:
559           description: Producer created
560           content: {}
561         401:
562           description: Unauthorized
563           content: {}
564         403:
565           description: Forbidden
566           content: {}
567         404:
568           description: Not Found
569           content: {}
570       deprecated: false
571     delete:
572       tags:
573       - Data Producer Registry API
574       summary: Individual EI producer
575       operationId: deleteEiProducerUsingDELETE
576       parameters:
577       - name: eiProducerId
578         in: path
579         description: eiProducerId
580         required: true
581         schema:
582           type: string
583       responses:
584         200:
585           description: Not used
586           content: {}
587         204:
588           description: Producer deleted
589           content: {}
590         401:
591           description: Unauthorized
592           content: {}
593         403:
594           description: Forbidden
595           content: {}
596         404:
597           description: Producer is not found
598           content:
599             application/json:
600               schema:
601                 $ref: '#/components/schemas/ProblemDetails'
602       deprecated: false
603   /producer_simulator/health_check:
604     get:
605       tags:
606       - Data Producer Job Control (example producer)
607       summary: Producer supervision
608       operationId: producerSupervisionUsingGET
609       responses:
610         200:
611           description: OK
612           content:
613             application/json:
614               schema:
615                 type: string
616         401:
617           description: Unauthorized
618           content: {}
619         403:
620           description: Forbidden
621           content: {}
622         404:
623           description: Not Found
624           content: {}
625       deprecated: false
626   /ei-producer/v1/eiproducers/{eiProducerId}/eijobs:
627     get:
628       tags:
629       - Data Producer Registry API
630       summary: EI job definitions
631       description: EI job definitions for one EI producer
632       operationId: getEiProducerJobsUsingGET
633       parameters:
634       - name: eiProducerId
635         in: path
636         description: eiProducerId
637         required: true
638         schema:
639           type: string
640       responses:
641         200:
642           description: EI producer
643           content:
644             application/json:
645               schema:
646                 type: array
647                 items:
648                   $ref: '#/components/schemas/producer_ei_job_request'
649         401:
650           description: Unauthorized
651           content: {}
652         403:
653           description: Forbidden
654           content: {}
655         404:
656           description: Enrichment Information producer is not found
657           content:
658             application/json:
659               schema:
660                 $ref: '#/components/schemas/ProblemDetails'
661       deprecated: false
662   /A1-EI/v1/eijobs:
663     get:
664       tags:
665       - A1-EI (enrichment information)
666       summary: EI job identifiers
667       description: query for EI job identifiers
668       operationId: getEiJobIdsUsingGET
669       parameters:
670       - name: eiTypeId
671         in: query
672         description: selects EI jobs of matching EI type
673         allowEmptyValue: false
674         schema:
675           type: string
676       - name: owner
677         in: query
678         description: selects EI jobs for one EI job owner
679         allowEmptyValue: false
680         schema:
681           type: string
682       responses:
683         200:
684           description: EI job identifiers
685           content:
686             application/json:
687               schema:
688                 type: array
689                 items:
690                   type: string
691         401:
692           description: Unauthorized
693           content: {}
694         403:
695           description: Forbidden
696           content: {}
697         404:
698           description: Enrichment Information type is not found
699           content:
700             application/json:
701               schema:
702                 $ref: '#/components/schemas/ProblemDetails'
703       deprecated: false
704   /A1-EI/v1/eijobs/{eiJobId}/status:
705     get:
706       tags:
707       - A1-EI (enrichment information)
708       summary: EI job status
709       operationId: getEiJobStatusUsingGET
710       parameters:
711       - name: eiJobId
712         in: path
713         description: eiJobId
714         required: true
715         schema:
716           type: string
717       responses:
718         200:
719           description: EI job status
720           content:
721             application/json:
722               schema:
723                 $ref: '#/components/schemas/EiJobStatusObject'
724         401:
725           description: Unauthorized
726           content: {}
727         403:
728           description: Forbidden
729           content: {}
730         404:
731           description: Enrichment Information job is not found
732           content:
733             application/json:
734               schema:
735                 $ref: '#/components/schemas/ProblemDetails'
736       deprecated: false
737 components:
738   schemas:
739     producer_ei_job_request:
740       title: producer_ei_job_request
741       required:
742       - ei_job_identity
743       type: object
744       properties:
745         owner:
746           type: string
747           description: The owner of the job
748         ei_job_identity:
749           type: string
750           description: Idenitity of the EI job
751         last_updated:
752           type: string
753           description: The time when the job was last updated or created (ISO-8601)
754         ei_job_data:
755           type: object
756           properties: {}
757           description: Json for the job data
758         target_uri:
759           type: string
760           description: URI for the target of the EI
761         ei_type_identity:
762           type: string
763           description: Type idenitity for the job
764       description: The body of the EI producer callbacks for EI job creation and deletion
765     EiTypeObject:
766       title: EiTypeObject
767       type: object
768       description: Information for an EI type
769     status_info:
770       title: status_info
771       type: object
772       properties:
773         no_of_producers:
774           type: integer
775           description: Number of EI producers
776           format: int32
777         no_of_jobs:
778           type: integer
779           description: Number of EI jobs
780           format: int32
781         no_of_types:
782           type: integer
783           description: Number of EI types
784           format: int32
785         status:
786           type: string
787           description: status text
788     producer_ei_type_info:
789       title: producer_ei_type_info
790       required:
791       - ei_job_data_schema
792       type: object
793       properties:
794         ei_job_data_schema:
795           type: object
796           properties: {}
797           description: Json schema for the job data
798       description: Information for an EI type
799     producer_registration_info:
800       title: producer_registration_info
801       required:
802       - ei_job_callback_url
803       - ei_producer_supervision_callback_url
804       - supported_ei_types
805       type: object
806       properties:
807         supported_ei_types:
808           type: array
809           description: Supported EI type IDs
810           items:
811             type: string
812         ei_producer_supervision_callback_url:
813           type: string
814           description: callback for producer supervision
815         ei_job_callback_url:
816           type: string
817           description: callback for EI job
818       description: Information for an EI producer
819     producer_status:
820       title: producer_status
821       required:
822       - operational_state
823       type: object
824       properties:
825         operational_state:
826           type: string
827           description: |-
828             Operational state, values:
829             ENABLED: TBD
830             DISABLED: TBD.
831           enum:
832           - ENABLED
833           - DISABLED
834       description: Status for an EI Producer
835     ProblemDetails:
836       title: ProblemDetails
837       type: object
838       properties:
839         detail:
840           type: string
841           description: A human-readable explanation specific to this occurrence of
842             the problem.
843           example: EI job type not found
844         status:
845           type: integer
846           description: The HTTP status code generated by the origin server for this
847             occurrence of the problem.
848           format: int32
849           example: 404
850       description: A problem detail to carry details in a HTTP response according
851         to RFC 7807
852     EiJobStatusObject:
853       title: EiJobStatusObject
854       required:
855       - eiJobStatus
856       type: object
857       properties:
858         eiJobStatus:
859           type: string
860           description: |-
861             values:
862             ENABLED: the A1-EI producer is able to deliver EI result for the EI job
863             DISABLED: the A1-EI producer is unable to deliver EI result for the EI job
864           enum:
865           - ENABLED
866           - DISABLED
867       description: Status for an EI job
868     EiJobObject:
869       title: EiJobObject
870       required:
871       - eiTypeId
872       - jobDefinition
873       - jobOwner
874       - jobResultUri
875       type: object
876       properties:
877         eiTypeId:
878           type: string
879           description: EI type Idenitifier of the EI job
880         jobResultUri:
881           type: string
882           description: The target URI of the EI data
883         jobOwner:
884           type: string
885           description: Identity of the owner of the job
886         jobStatusNotificationUri:
887           type: string
888           description: The target of EI job status notifications
889         jobDefinition:
890           type: object
891           properties: {}
892           description: EI type specific job data
893       description: Information for an Enrichment Information Job