{
    "components": {"schemas": {
        "producer_info_job_request": {
            "description": "The body of the Information Producer callbacks for Information Job creation and deletion",
            "type": "object",
            "required": ["info_job_identity"],
            "properties": {
                "owner": {
                    "description": "The owner of the job",
                    "type": "string"
                },
                "last_updated": {
                    "description": "The time when the job was last updated or created (ISO-8601)",
                    "type": "string"
                },
                "info_job_identity": {
                    "description": "Identity of the Information Job",
                    "type": "string"
                },
                "target_uri": {
                    "description": "URI for the target of the produced Information",
                    "type": "string"
                },
                "info_job_data": {
                    "description": "Json for the job data",
                    "type": "object"
                },
                "info_type_identity": {
                    "description": "Type identity for the job",
                    "type": "string"
                }
            }
        },
        "error_information": {
            "description": "Problem as defined in https://tools.ietf.org/html/rfc7807",
            "type": "object",
            "properties": {
                "detail": {
                    "description": " A human-readable explanation specific to this occurrence of the problem.",
                    "type": "string",
                    "example": "Policy type not found"
                },
                "status": {
                    "format": "int32",
                    "description": "The HTTP status code generated by the origin server for this occurrence of the problem. ",
                    "type": "integer",
                    "example": 503
                }
            }
        },
        "consumer_job": {
            "description": "Information for an Information Job",
            "type": "object",
            "required": [
                "info_type_id",
                "job_definition",
                "job_owner",
                "job_result_uri"
            ],
            "properties": {
                "info_type_id": {
                    "description": "Information type Idenitifier of the subscription job",
                    "type": "string"
                },
                "job_result_uri": {
                    "description": "The target URI of the subscribed information",
                    "type": "string"
                },
                "job_owner": {
                    "description": "Identity of the owner of the job",
                    "type": "string"
                },
                "job_definition": {
                    "description": "Information type specific job data",
                    "type": "object"
                },
                "status_notification_uri": {
                    "description": "The target of Information subscription job status notifications",
                    "type": "string"
                }
            }
        },
        "void": {
            "description": "Void/empty",
            "type": "object"
        },
        "job_statistics": {
            "description": "Statistics information for one job",
            "type": "object",
            "required": [
                "jobId",
                "noOfReceivedBytes",
                "noOfReceivedObjects",
                "noOfSentBytes",
                "noOfSentObjects",
                "typeId"
            ],
            "properties": {
                "noOfSentObjects": {
                    "format": "int64",
                    "type": "integer"
                },
                "jobId": {"type": "string"},
                "outputTopic": {"type": "string"},
                "noOfSentBytes": {
                    "format": "int64",
                    "type": "integer"
                },
                "clientId": {"type": "string"},
                "groupId": {"type": "string"},
                "noOfReceivedBytes": {
                    "format": "int64",
                    "type": "integer"
                },
                "typeId": {"type": "string"},
                "inputTopic": {"type": "string"},
                "noOfReceivedObjects": {
                    "format": "int64",
                    "type": "integer"
                }
            }
        },
        "statistics_info": {
            "description": "Statistics information",
            "type": "object",
            "properties": {"jobStatistics": {
                "description": "Statistics per job",
                "type": "array",
                "items": {"$ref": "#/components/schemas/job_statistics"}
            }}
        },
        "producer_registration_info": {
            "description": "Information for an Information Producer",
            "type": "object",
            "required": [
                "info_job_callback_url",
                "info_producer_supervision_callback_url",
                "supported_info_types"
            ],
            "properties": {
                "info_producer_supervision_callback_url": {
                    "description": "callback for producer supervision",
                    "type": "string"
                },
                "supported_info_types": {
                    "description": "Supported Information Type IDs",
                    "type": "array",
                    "items": {
                        "description": "Supported Information Type IDs",
                        "type": "string"
                    }
                },
                "info_job_callback_url": {
                    "description": "callback for Information Job",
                    "type": "string"
                }
            }
        },
        "Link": {
            "type": "object",
            "properties": {
                "templated": {"type": "boolean"},
                "href": {"type": "string"}
            }
        },
        "producer_info_type_info": {
            "description": "Information for an Information Type",
            "type": "object",
            "required": [
                "info_job_data_schema",
                "info_type_information"
            ],
            "properties": {
                "info_type_information": {
                    "description": "Type specific information for the information type",
                    "type": "object"
                },
                "info_job_data_schema": {
                    "description": "Json schema for the job data",
                    "type": "object"
                }
            }
        }
    }},
    "openapi": "3.0.1",
    "paths": {
        "/actuator/threaddump": {"get": {
            "summary": "Actuator web endpoint 'threaddump'",
            "operationId": "threaddump",
            "responses": {"200": {
                "description": "OK",
                "content": {
                    "text/plain;charset=UTF-8": {"schema": {"type": "object"}},
                    "application/vnd.spring-boot.actuator.v3+json": {"schema": {"type": "object"}},
                    "application/json": {"schema": {"type": "object"}},
                    "application/vnd.spring-boot.actuator.v2+json": {"schema": {"type": "object"}}
                }
            }},
            "tags": ["Actuator"]
        }},
        "/actuator/info": {"get": {
            "summary": "Actuator web endpoint 'info'",
            "operationId": "info",
            "responses": {"200": {
                "description": "OK",
                "content": {
                    "application/vnd.spring-boot.actuator.v3+json": {"schema": {"type": "object"}},
                    "application/json": {"schema": {"type": "object"}},
                    "application/vnd.spring-boot.actuator.v2+json": {"schema": {"type": "object"}}
                }
            }},
            "tags": ["Actuator"]
        }},
        "/data-producer/v1/info-types/{infoTypeId}": {"put": {
            "requestBody": {
                "content": {"application/json": {"schema": {"$ref": "#/components/schemas/producer_info_type_info"}}},
                "required": true
            },
            "operationId": "putInfoType",
            "responses": {"200": {
                "description": "OK",
                "content": {"application/json": {"schema": {"type": "object"}}}
            }},
            "parameters": [{
                "schema": {"type": "string"},
                "in": "path",
                "name": "infoTypeId",
                "required": true
            }],
            "tags": ["Information Coordinator Service Simulator (exists only in test)"]
        }},
        "/statistics": {"get": {
            "summary": "Returns statistics",
            "operationId": "getStatistics",
            "responses": {"200": {
                "description": "OK",
                "content": {"application/json": {"schema": {"$ref": "#/components/schemas/statistics_info"}}}
            }},
            "tags": ["Producer job control API"]
        }},
        "/generic_dataproducer/health_check": {"get": {
            "summary": "Producer supervision",
            "description": "The endpoint is provided by the Information Producer and is used for supervision of the producer.",
            "operationId": "producerSupervision",
            "responses": {"200": {
                "description": "The producer is OK",
                "content": {"application/json": {"schema": {"type": "string"}}}
            }},
            "tags": ["Producer job control API"]
        }},
        "/generic_dataproducer/info_job": {
            "post": {
                "summary": "Callback for Information Job creation/modification",
                "requestBody": {
                    "content": {"application/json": {"schema": {"type": "string"}}},
                    "required": true
                },
                "description": "The call is invoked to activate or to modify a data subscription. The endpoint is provided by the Information Producer.",
                "operationId": "jobCreatedCallback",
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {"application/json": {"schema": {"$ref": "#/components/schemas/void"}}}
                    },
                    "400": {
                        "description": "Other error in the request",
                        "content": {"application/json": {"schema": {"$ref": "#/components/schemas/error_information"}}}
                    },
                    "404": {
                        "description": "Information type is not found",
                        "content": {"application/json": {"schema": {"$ref": "#/components/schemas/error_information"}}}
                    }
                },
                "tags": ["Producer job control API"]
            },
            "get": {
                "summary": "Get all jobs",
                "description": "Returns all info jobs, can be used for trouble shooting",
                "operationId": "getJobs",
                "responses": {"200": {
                    "description": "Information jobs",
                    "content": {"application/json": {"schema": {
                        "type": "array",
                        "items": {"$ref": "#/components/schemas/producer_info_job_request"}
                    }}}
                }},
                "tags": ["Producer job control API"]
            }
        },
        "/actuator/loggers": {"get": {
            "summary": "Actuator web endpoint 'loggers'",
            "operationId": "loggers",
            "responses": {"200": {
                "description": "OK",
                "content": {
                    "application/vnd.spring-boot.actuator.v3+json": {"schema": {"type": "object"}},
                    "application/json": {"schema": {"type": "object"}},
                    "application/vnd.spring-boot.actuator.v2+json": {"schema": {"type": "object"}}
                }
            }},
            "tags": ["Actuator"]
        }},
        "/actuator/health/**": {"get": {
            "summary": "Actuator web endpoint 'health-path'",
            "operationId": "health-path",
            "responses": {"200": {
                "description": "OK",
                "content": {
                    "application/vnd.spring-boot.actuator.v3+json": {"schema": {"type": "object"}},
                    "application/json": {"schema": {"type": "object"}},
                    "application/vnd.spring-boot.actuator.v2+json": {"schema": {"type": "object"}}
                }
            }},
            "tags": ["Actuator"]
        }},
        "/actuator/shutdown": {"post": {
            "summary": "Actuator web endpoint 'shutdown'",
            "operationId": "shutdown",
            "responses": {"200": {
                "description": "OK",
                "content": {
                    "application/vnd.spring-boot.actuator.v3+json": {"schema": {"type": "object"}},
                    "application/json": {"schema": {"type": "object"}},
                    "application/vnd.spring-boot.actuator.v2+json": {"schema": {"type": "object"}}
                }
            }},
            "tags": ["Actuator"]
        }},
        "/data-producer/v1/info-producers/{infoProducerId}": {
            "get": {
                "operationId": "getInfoProducer",
                "responses": {"200": {
                    "description": "OK",
                    "content": {"application/json": {"schema": {"type": "object"}}}
                }},
                "parameters": [{
                    "schema": {"type": "string"},
                    "in": "path",
                    "name": "infoProducerId",
                    "required": true
                }],
                "tags": ["Information Coordinator Service Simulator (exists only in test)"]
            },
            "put": {
                "requestBody": {
                    "content": {"application/json": {"schema": {"$ref": "#/components/schemas/producer_registration_info"}}},
                    "required": true
                },
                "operationId": "putInfoProducer",
                "responses": {"200": {
                    "description": "OK",
                    "content": {"application/json": {"schema": {"type": "object"}}}
                }},
                "parameters": [{
                    "schema": {"type": "string"},
                    "in": "path",
                    "name": "infoProducerId",
                    "required": true
                }],
                "tags": ["Information Coordinator Service Simulator (exists only in test)"]
            }
        },
        "/actuator/metrics/{requiredMetricName}": {"get": {
            "summary": "Actuator web endpoint 'metrics-requiredMetricName'",
            "operationId": "metrics-requiredMetricName",
            "responses": {"200": {
                "description": "OK",
                "content": {
                    "application/vnd.spring-boot.actuator.v3+json": {"schema": {"type": "object"}},
                    "application/json": {"schema": {"type": "object"}},
                    "application/vnd.spring-boot.actuator.v2+json": {"schema": {"type": "object"}}
                }
            }},
            "parameters": [{
                "schema": {"type": "string"},
                "in": "path",
                "name": "requiredMetricName",
                "required": true
            }],
            "tags": ["Actuator"]
        }},
        "/generic_dataproducer/info_job/{infoJobId}": {"delete": {
            "summary": "Callback for Information Job deletion",
            "description": "The call is invoked to terminate a data subscription. The endpoint is provided by the Information Producer.",
            "operationId": "jobDeletedCallback",
            "responses": {"200": {
                "description": "OK",
                "content": {"application/json": {"schema": {"$ref": "#/components/schemas/void"}}}
            }},
            "parameters": [{
                "schema": {"type": "string"},
                "in": "path",
                "name": "infoJobId",
                "required": true
            }],
            "tags": ["Producer job control API"]
        }},
        "/actuator": {"get": {
            "summary": "Actuator root web endpoint",
            "operationId": "links",
            "responses": {"200": {
                "description": "OK",
                "content": {
                    "application/vnd.spring-boot.actuator.v3+json": {"schema": {
                        "additionalProperties": {
                            "additionalProperties": {"$ref": "#/components/schemas/Link"},
                            "type": "object"
                        },
                        "type": "object"
                    }},
                    "application/json": {"schema": {
                        "additionalProperties": {
                            "additionalProperties": {"$ref": "#/components/schemas/Link"},
                            "type": "object"
                        },
                        "type": "object"
                    }},
                    "application/vnd.spring-boot.actuator.v2+json": {"schema": {
                        "additionalProperties": {
                            "additionalProperties": {"$ref": "#/components/schemas/Link"},
                            "type": "object"
                        },
                        "type": "object"
                    }}
                }
            }},
            "tags": ["Actuator"]
        }},
        "/actuator/logfile": {"get": {
            "summary": "Actuator web endpoint 'logfile'",
            "operationId": "logfile",
            "responses": {"200": {
                "description": "OK",
                "content": {"text/plain;charset=UTF-8": {"schema": {"type": "object"}}}
            }},
            "tags": ["Actuator"]
        }},
        "/data-consumer/v1/info-jobs/{infoJobId}": {"put": {
            "requestBody": {
                "content": {"application/json": {"schema": {"$ref": "#/components/schemas/consumer_job"}}},
                "required": true
            },
            "operationId": "putIndividualInfoJob",
            "responses": {"200": {
                "description": "OK",
                "content": {"application/json": {"schema": {"type": "object"}}}
            }},
            "parameters": [{
                "schema": {"type": "string"},
                "in": "path",
                "name": "infoJobId",
                "required": true
            }],
            "tags": ["Information Coordinator Service Simulator (exists only in test)"]
        }},
        "/actuator/loggers/{name}": {
            "post": {
                "summary": "Actuator web endpoint 'loggers-name'",
                "requestBody": {"content": {"application/json": {"schema": {
                    "type": "string",
                    "enum": [
                        "TRACE",
                        "DEBUG",
                        "INFO",
                        "WARN",
                        "ERROR",
                        "FATAL",
                        "OFF"
                    ]
                }}}},
                "operationId": "loggers-name_2",
                "responses": {"200": {
                    "description": "OK",
                    "content": {"*/*": {"schema": {"type": "object"}}}
                }},
                "parameters": [{
                    "schema": {"type": "string"},
                    "in": "path",
                    "name": "name",
                    "required": true
                }],
                "tags": ["Actuator"]
            },
            "get": {
                "summary": "Actuator web endpoint 'loggers-name'",
                "operationId": "loggers-name",
                "responses": {"200": {
                    "description": "OK",
                    "content": {
                        "application/vnd.spring-boot.actuator.v3+json": {"schema": {"type": "object"}},
                        "application/json": {"schema": {"type": "object"}},
                        "application/vnd.spring-boot.actuator.v2+json": {"schema": {"type": "object"}}
                    }
                }},
                "parameters": [{
                    "schema": {"type": "string"},
                    "in": "path",
                    "name": "name",
                    "required": true
                }],
                "tags": ["Actuator"]
            }
        },
        "/actuator/health": {"get": {
            "summary": "Actuator web endpoint 'health'",
            "operationId": "health",
            "responses": {"200": {
                "description": "OK",
                "content": {
                    "application/vnd.spring-boot.actuator.v3+json": {"schema": {"type": "object"}},
                    "application/json": {"schema": {"type": "object"}},
                    "application/vnd.spring-boot.actuator.v2+json": {"schema": {"type": "object"}}
                }
            }},
            "tags": ["Actuator"]
        }},
        "/dmaap-topic-2": {"get": {
            "summary": "GET from topic",
            "description": "The call is invoked to activate or to modify a data subscription. The endpoint is provided by the Information Producer.",
            "operationId": "getFromPmTopic",
            "responses": {"200": {
                "description": "OK",
                "content": {"application/json": {"schema": {"$ref": "#/components/schemas/void"}}}
            }},
            "tags": ["DMAAP Simulator (exists only in test)"]
        }},
        "/consumer": {"post": {
            "summary": "Consume data",
            "requestBody": {
                "content": {"application/json": {"schema": {"type": "string"}}},
                "required": true
            },
            "description": "The call is invoked to push data to consumer",
            "operationId": "postData",
            "responses": {"200": {
                "description": "OK",
                "content": {"application/json": {"schema": {"$ref": "#/components/schemas/void"}}}
            }},
            "tags": ["Test Consumer Simulator (exists only in test)"]
        }},
        "/dmaap-topic-1": {"get": {
            "summary": "GET from topic",
            "description": "The call is invoked to activate or to modify a data subscription. The endpoint is provided by the Information Producer.",
            "operationId": "getFromTopic",
            "responses": {"200": {
                "description": "OK",
                "content": {"application/json": {"schema": {"$ref": "#/components/schemas/void"}}}
            }},
            "tags": ["DMAAP Simulator (exists only in test)"]
        }},
        "/actuator/metrics": {"get": {
            "summary": "Actuator web endpoint 'metrics'",
            "operationId": "metrics",
            "responses": {"200": {
                "description": "OK",
                "content": {
                    "application/vnd.spring-boot.actuator.v3+json": {"schema": {"type": "object"}},
                    "application/json": {"schema": {"type": "object"}},
                    "application/vnd.spring-boot.actuator.v2+json": {"schema": {"type": "object"}}
                }
            }},
            "tags": ["Actuator"]
        }},
        "/actuator/heapdump": {"get": {
            "summary": "Actuator web endpoint 'heapdump'",
            "operationId": "heapdump",
            "responses": {"200": {
                "description": "OK",
                "content": {"application/octet-stream": {"schema": {"type": "object"}}}
            }},
            "tags": ["Actuator"]
        }}
    },
    "info": {
        "license": {
            "name": "Copyright (C) 2021 Nordix Foundation. Licensed under the Apache License.",
            "url": "http://www.apache.org/licenses/LICENSE-2.0"
        },
        "description": "Reads data from DMaaP and Kafka and posts it further to information consumers",
        "title": "Generic Dmaap and Kafka Information Producer",
        "version": "1.0"
    },
    "tags": [{
        "name": "Actuator",
        "description": "Monitor and interact",
        "externalDocs": {
            "description": "Spring Boot Actuator Web API Documentation",
            "url": "https://docs.spring.io/spring-boot/docs/current/actuator-api/html/"
        }
    }]
}