Add ReadTheDocs configuration/site in repo root directory step #4
[nonrtric/plt/ranpm.git] / pmproducer / api / api.json
1 {
2     "components": {"schemas": {
3         "producer_info_job_request": {
4             "description": "The body of the Information Producer callbacks for Information Job creation and deletion",
5             "type": "object",
6             "required": ["info_job_identity"],
7             "properties": {
8                 "owner": {
9                     "description": "The owner of the job",
10                     "type": "string"
11                 },
12                 "last_updated": {
13                     "description": "The time when the job was last updated or created (ISO-8601)",
14                     "type": "string"
15                 },
16                 "info_job_identity": {
17                     "description": "Identity of the Information Job",
18                     "type": "string"
19                 },
20                 "info_job_data": {
21                     "description": "Json for the job data",
22                     "type": "object"
23                 },
24                 "info_type_identity": {
25                     "description": "Type identity for the job",
26                     "type": "string"
27                 }
28             }
29         },
30         "error_information": {
31             "description": "Problem as defined in https://tools.ietf.org/html/rfc7807",
32             "type": "object",
33             "properties": {
34                 "detail": {
35                     "description": " A human-readable explanation specific to this occurrence of the problem.",
36                     "type": "string",
37                     "example": "Policy type not found"
38                 },
39                 "status": {
40                     "format": "int32",
41                     "description": "The HTTP status code generated by the origin server for this occurrence of the problem. ",
42                     "type": "integer",
43                     "example": 503
44                 }
45             }
46         },
47         "consumer_job": {
48             "description": "Information for an Information Job",
49             "type": "object",
50             "required": [
51                 "info_type_id",
52                 "job_definition",
53                 "job_owner",
54                 "job_result_uri"
55             ],
56             "properties": {
57                 "info_type_id": {
58                     "description": "Information type Idenitifier of the subscription job",
59                     "type": "string"
60                 },
61                 "job_result_uri": {
62                     "description": "The target URI of the subscribed information",
63                     "type": "string"
64                 },
65                 "job_owner": {
66                     "description": "Identity of the owner of the job",
67                     "type": "string"
68                 },
69                 "job_definition": {
70                     "description": "Information type specific job data",
71                     "type": "object"
72                 },
73                 "status_notification_uri": {
74                     "description": "The target of Information subscription job status notifications",
75                     "type": "string"
76                 }
77             }
78         },
79         "void": {
80             "description": "Void/empty",
81             "type": "object"
82         },
83         "job_statistics": {
84             "description": "Statistics information for one job",
85             "type": "object",
86             "required": [
87                 "jobId",
88                 "noOfReceivedBytes",
89                 "noOfReceivedObjects",
90                 "noOfSentBytes",
91                 "noOfSentObjects",
92                 "typeId"
93             ],
94             "properties": {
95                 "noOfSentObjects": {
96                     "format": "int64",
97                     "type": "integer"
98                 },
99                 "jobId": {"type": "string"},
100                 "outputTopic": {"type": "string"},
101                 "noOfSentBytes": {
102                     "format": "int64",
103                     "type": "integer"
104                 },
105                 "clientId": {"type": "string"},
106                 "groupId": {"type": "string"},
107                 "noOfReceivedBytes": {
108                     "format": "int64",
109                     "type": "integer"
110                 },
111                 "typeId": {"type": "string"},
112                 "inputTopic": {"type": "string"},
113                 "noOfReceivedObjects": {
114                     "format": "int64",
115                     "type": "integer"
116                 }
117             }
118         },
119         "statistics_info": {
120             "description": "Statistics information",
121             "type": "object",
122             "properties": {"jobStatistics": {
123                 "description": "Statistics per job",
124                 "type": "array",
125                 "items": {"$ref": "#/components/schemas/job_statistics"}
126             }}
127         },
128         "producer_registration_info": {
129             "description": "Information for an Information Producer",
130             "type": "object",
131             "required": [
132                 "info_job_callback_url",
133                 "info_producer_supervision_callback_url",
134                 "supported_info_types"
135             ],
136             "properties": {
137                 "info_producer_supervision_callback_url": {
138                     "description": "callback for producer supervision",
139                     "type": "string"
140                 },
141                 "supported_info_types": {
142                     "description": "Supported Information Type IDs",
143                     "type": "array",
144                     "items": {
145                         "description": "Supported Information Type IDs",
146                         "type": "string"
147                     }
148                 },
149                 "info_job_callback_url": {
150                     "description": "callback for Information Job",
151                     "type": "string"
152                 }
153             }
154         },
155         "Link": {
156             "type": "object",
157             "properties": {
158                 "templated": {"type": "boolean"},
159                 "href": {"type": "string"}
160             }
161         },
162         "producer_info_type_info": {
163             "description": "Information for an Information Type",
164             "type": "object",
165             "required": [
166                 "info_job_data_schema",
167                 "info_type_information"
168             ],
169             "properties": {
170                 "info_type_information": {
171                     "description": "Type specific information for the information type",
172                     "type": "object"
173                 },
174                 "info_job_data_schema": {
175                     "description": "Json schema for the job data",
176                     "type": "object"
177                 }
178             }
179         }
180     }},
181     "openapi": "3.0.1",
182     "paths": {
183         "/actuator/threaddump": {"get": {
184             "summary": "Actuator web endpoint 'threaddump'",
185             "operationId": "threaddump",
186             "responses": {"200": {
187                 "description": "OK",
188                 "content": {
189                     "text/plain;charset=UTF-8": {"schema": {"type": "object"}},
190                     "application/vnd.spring-boot.actuator.v3+json": {"schema": {"type": "object"}},
191                     "application/json": {"schema": {"type": "object"}},
192                     "application/vnd.spring-boot.actuator.v2+json": {"schema": {"type": "object"}}
193                 }
194             }},
195             "tags": ["Actuator"]
196         }},
197         "/actuator/info": {"get": {
198             "summary": "Actuator web endpoint 'info'",
199             "operationId": "info",
200             "responses": {"200": {
201                 "description": "OK",
202                 "content": {
203                     "application/vnd.spring-boot.actuator.v3+json": {"schema": {"type": "object"}},
204                     "application/json": {"schema": {"type": "object"}},
205                     "application/vnd.spring-boot.actuator.v2+json": {"schema": {"type": "object"}}
206                 }
207             }},
208             "tags": ["Actuator"]
209         }},
210         "/data-producer/v1/info-types/{infoTypeId}": {"put": {
211             "requestBody": {
212                 "content": {"application/json": {"schema": {"$ref": "#/components/schemas/producer_info_type_info"}}},
213                 "required": true
214             },
215             "operationId": "putInfoType",
216             "responses": {"200": {
217                 "description": "OK",
218                 "content": {"application/json": {"schema": {"type": "object"}}}
219             }},
220             "parameters": [{
221                 "schema": {"type": "string"},
222                 "in": "path",
223                 "name": "infoTypeId",
224                 "required": true
225             }],
226             "tags": ["Information Coordinator Service Simulator (exists only in test)"]
227         }},
228         "/statistics": {"get": {
229             "summary": "Returns statistics",
230             "operationId": "getStatistics",
231             "responses": {"200": {
232                 "description": "OK",
233                 "content": {"application/json": {"schema": {"$ref": "#/components/schemas/statistics_info"}}}
234             }},
235             "tags": ["Producer job control API"]
236         }},
237         "/generic_dataproducer/health_check": {"get": {
238             "summary": "Producer supervision",
239             "description": "The endpoint is provided by the Information Producer and is used for supervision of the producer.",
240             "operationId": "producerSupervision",
241             "responses": {"200": {
242                 "description": "The producer is OK",
243                 "content": {"application/json": {"schema": {"type": "string"}}}
244             }},
245             "tags": ["Producer job control API"]
246         }},
247         "/generic_dataproducer/info_job": {
248             "post": {
249                 "summary": "Callback for Information Job creation/modification",
250                 "requestBody": {
251                     "content": {"application/json": {"schema": {"type": "string"}}},
252                     "required": true
253                 },
254                 "description": "The call is invoked to activate or to modify a data subscription. The endpoint is provided by the Information Producer.",
255                 "operationId": "jobCreatedCallback",
256                 "responses": {
257                     "200": {
258                         "description": "OK",
259                         "content": {"application/json": {"schema": {"$ref": "#/components/schemas/void"}}}
260                     },
261                     "400": {
262                         "description": "Other error in the request",
263                         "content": {"application/json": {"schema": {"$ref": "#/components/schemas/error_information"}}}
264                     },
265                     "404": {
266                         "description": "Information type is not found",
267                         "content": {"application/json": {"schema": {"$ref": "#/components/schemas/error_information"}}}
268                     }
269                 },
270                 "tags": ["Producer job control API"]
271             },
272             "get": {
273                 "summary": "Get all jobs",
274                 "description": "Returns all info jobs, can be used for trouble shooting",
275                 "operationId": "getJobs",
276                 "responses": {"200": {
277                     "description": "Information jobs",
278                     "content": {"application/json": {"schema": {
279                         "type": "array",
280                         "items": {"$ref": "#/components/schemas/producer_info_job_request"}
281                     }}}
282                 }},
283                 "tags": ["Producer job control API"]
284             }
285         },
286         "/actuator/loggers": {"get": {
287             "summary": "Actuator web endpoint 'loggers'",
288             "operationId": "loggers",
289             "responses": {"200": {
290                 "description": "OK",
291                 "content": {
292                     "application/vnd.spring-boot.actuator.v3+json": {"schema": {"type": "object"}},
293                     "application/json": {"schema": {"type": "object"}},
294                     "application/vnd.spring-boot.actuator.v2+json": {"schema": {"type": "object"}}
295                 }
296             }},
297             "tags": ["Actuator"]
298         }},
299         "/actuator/health/**": {"get": {
300             "summary": "Actuator web endpoint 'health-path'",
301             "operationId": "health-path",
302             "responses": {"200": {
303                 "description": "OK",
304                 "content": {
305                     "application/vnd.spring-boot.actuator.v3+json": {"schema": {"type": "object"}},
306                     "application/json": {"schema": {"type": "object"}},
307                     "application/vnd.spring-boot.actuator.v2+json": {"schema": {"type": "object"}}
308                 }
309             }},
310             "tags": ["Actuator"]
311         }},
312         "/actuator/shutdown": {"post": {
313             "summary": "Actuator web endpoint 'shutdown'",
314             "operationId": "shutdown",
315             "responses": {"200": {
316                 "description": "OK",
317                 "content": {
318                     "application/vnd.spring-boot.actuator.v3+json": {"schema": {"type": "object"}},
319                     "application/json": {"schema": {"type": "object"}},
320                     "application/vnd.spring-boot.actuator.v2+json": {"schema": {"type": "object"}}
321                 }
322             }},
323             "tags": ["Actuator"]
324         }},
325         "/data-producer/v1/info-producers/{infoProducerId}": {
326             "get": {
327                 "operationId": "getInfoProducer",
328                 "responses": {"200": {
329                     "description": "OK",
330                     "content": {"application/json": {"schema": {"type": "object"}}}
331                 }},
332                 "parameters": [{
333                     "schema": {"type": "string"},
334                     "in": "path",
335                     "name": "infoProducerId",
336                     "required": true
337                 }],
338                 "tags": ["Information Coordinator Service Simulator (exists only in test)"]
339             },
340             "put": {
341                 "requestBody": {
342                     "content": {"application/json": {"schema": {"$ref": "#/components/schemas/producer_registration_info"}}},
343                     "required": true
344                 },
345                 "operationId": "putInfoProducer",
346                 "responses": {"200": {
347                     "description": "OK",
348                     "content": {"application/json": {"schema": {"type": "object"}}}
349                 }},
350                 "parameters": [{
351                     "schema": {"type": "string"},
352                     "in": "path",
353                     "name": "infoProducerId",
354                     "required": true
355                 }],
356                 "tags": ["Information Coordinator Service Simulator (exists only in test)"]
357             }
358         },
359         "/actuator/metrics/{requiredMetricName}": {"get": {
360             "summary": "Actuator web endpoint 'metrics-requiredMetricName'",
361             "operationId": "metrics-requiredMetricName",
362             "responses": {"200": {
363                 "description": "OK",
364                 "content": {
365                     "application/vnd.spring-boot.actuator.v3+json": {"schema": {"type": "object"}},
366                     "application/json": {"schema": {"type": "object"}},
367                     "application/vnd.spring-boot.actuator.v2+json": {"schema": {"type": "object"}}
368                 }
369             }},
370             "parameters": [{
371                 "schema": {"type": "string"},
372                 "in": "path",
373                 "name": "requiredMetricName",
374                 "required": true
375             }],
376             "tags": ["Actuator"]
377         }},
378         "/generic_dataproducer/info_job/{infoJobId}": {"delete": {
379             "summary": "Callback for Information Job deletion",
380             "description": "The call is invoked to terminate a data subscription. The endpoint is provided by the Information Producer.",
381             "operationId": "jobDeletedCallback",
382             "responses": {"200": {
383                 "description": "OK",
384                 "content": {"application/json": {"schema": {"$ref": "#/components/schemas/void"}}}
385             }},
386             "parameters": [{
387                 "schema": {"type": "string"},
388                 "in": "path",
389                 "name": "infoJobId",
390                 "required": true
391             }],
392             "tags": ["Producer job control API"]
393         }},
394         "/actuator": {"get": {
395             "summary": "Actuator root web endpoint",
396             "operationId": "links",
397             "responses": {"200": {
398                 "description": "OK",
399                 "content": {
400                     "application/vnd.spring-boot.actuator.v3+json": {"schema": {
401                         "additionalProperties": {
402                             "additionalProperties": {"$ref": "#/components/schemas/Link"},
403                             "type": "object"
404                         },
405                         "type": "object"
406                     }},
407                     "application/json": {"schema": {
408                         "additionalProperties": {
409                             "additionalProperties": {"$ref": "#/components/schemas/Link"},
410                             "type": "object"
411                         },
412                         "type": "object"
413                     }},
414                     "application/vnd.spring-boot.actuator.v2+json": {"schema": {
415                         "additionalProperties": {
416                             "additionalProperties": {"$ref": "#/components/schemas/Link"},
417                             "type": "object"
418                         },
419                         "type": "object"
420                     }}
421                 }
422             }},
423             "tags": ["Actuator"]
424         }},
425         "/actuator/logfile": {"get": {
426             "summary": "Actuator web endpoint 'logfile'",
427             "operationId": "logfile",
428             "responses": {"200": {
429                 "description": "OK",
430                 "content": {"text/plain;charset=UTF-8": {"schema": {"type": "object"}}}
431             }},
432             "tags": ["Actuator"]
433         }},
434         "/data-consumer/v1/info-jobs/{infoJobId}": {"put": {
435             "requestBody": {
436                 "content": {"application/json": {"schema": {"$ref": "#/components/schemas/consumer_job"}}},
437                 "required": true
438             },
439             "operationId": "putIndividualInfoJob",
440             "responses": {"200": {
441                 "description": "OK",
442                 "content": {"application/json": {"schema": {"type": "object"}}}
443             }},
444             "parameters": [{
445                 "schema": {"type": "string"},
446                 "in": "path",
447                 "name": "infoJobId",
448                 "required": true
449             }],
450             "tags": ["Information Coordinator Service Simulator (exists only in test)"]
451         }},
452         "/actuator/loggers/{name}": {
453             "post": {
454                 "summary": "Actuator web endpoint 'loggers-name'",
455                 "requestBody": {"content": {"application/json": {"schema": {
456                     "type": "string",
457                     "enum": [
458                         "TRACE",
459                         "DEBUG",
460                         "INFO",
461                         "WARN",
462                         "ERROR",
463                         "FATAL",
464                         "OFF"
465                     ]
466                 }}}},
467                 "operationId": "loggers-name_2",
468                 "responses": {"200": {
469                     "description": "OK",
470                     "content": {"*/*": {"schema": {"type": "object"}}}
471                 }},
472                 "parameters": [{
473                     "schema": {"type": "string"},
474                     "in": "path",
475                     "name": "name",
476                     "required": true
477                 }],
478                 "tags": ["Actuator"]
479             },
480             "get": {
481                 "summary": "Actuator web endpoint 'loggers-name'",
482                 "operationId": "loggers-name",
483                 "responses": {"200": {
484                     "description": "OK",
485                     "content": {
486                         "application/vnd.spring-boot.actuator.v3+json": {"schema": {"type": "object"}},
487                         "application/json": {"schema": {"type": "object"}},
488                         "application/vnd.spring-boot.actuator.v2+json": {"schema": {"type": "object"}}
489                     }
490                 }},
491                 "parameters": [{
492                     "schema": {"type": "string"},
493                     "in": "path",
494                     "name": "name",
495                     "required": true
496                 }],
497                 "tags": ["Actuator"]
498             }
499         },
500         "/actuator/health": {"get": {
501             "summary": "Actuator web endpoint 'health'",
502             "operationId": "health",
503             "responses": {"200": {
504                 "description": "OK",
505                 "content": {
506                     "application/vnd.spring-boot.actuator.v3+json": {"schema": {"type": "object"}},
507                     "application/json": {"schema": {"type": "object"}},
508                     "application/vnd.spring-boot.actuator.v2+json": {"schema": {"type": "object"}}
509                 }
510             }},
511             "tags": ["Actuator"]
512         }},
513         "/actuator/metrics": {"get": {
514             "summary": "Actuator web endpoint 'metrics'",
515             "operationId": "metrics",
516             "responses": {"200": {
517                 "description": "OK",
518                 "content": {
519                     "application/vnd.spring-boot.actuator.v3+json": {"schema": {"type": "object"}},
520                     "application/json": {"schema": {"type": "object"}},
521                     "application/vnd.spring-boot.actuator.v2+json": {"schema": {"type": "object"}}
522                 }
523             }},
524             "tags": ["Actuator"]
525         }},
526         "/actuator/heapdump": {"get": {
527             "summary": "Actuator web endpoint 'heapdump'",
528             "operationId": "heapdump",
529             "responses": {"200": {
530                 "description": "OK",
531                 "content": {"application/octet-stream": {"schema": {"type": "object"}}}
532             }},
533             "tags": ["Actuator"]
534         }}
535     },
536     "info": {
537         "license": {
538             "name": "Copyright (C) 2023 Nordix Foundation. Licensed under the Apache License.",
539             "url": "http://www.apache.org/licenses/LICENSE-2.0"
540         },
541         "description": "Distributes PM Measuremenet Data to consumers",
542         "title": "PM Measuremenet Data Producer",
543         "version": "1.0"
544     },
545     "tags": [{
546         "name": "Actuator",
547         "description": "Monitor and interact",
548         "externalDocs": {
549             "description": "Spring Boot Actuator Web API Documentation",
550             "url": "https://docs.spring.io/spring-boot/docs/current/actuator-api/html/"
551         }
552     }]
553 }