{ "openapi" : "3.0.3", "info" : { "title" : "reporting-api", "version" : "0.0.1", "description" : "Reporting service which aggregates events from dedicated Kafka topics." }, "paths" : { "/query" : { "post" : { "requestBody" : { "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/DeNccloudReportingApiV0ModelsQueryForm" } } }, "required" : true }, "responses" : { "200" : { "description" : "Successful response", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/DeNccloudReportingApiV0ModelsQueryResponse" } } } }, "400" : { "description" : "Bad request", "content" : { "application/json" : { "schema" : { "type" : "array", "items" : { "$ref" : "#/components/schemas/DeNccloudCommonV0ModelsGenericError" } } } } } } } }, "/topics" : { "get" : { "parameters" : [ { "name" : "offset", "in" : "query", "required" : true, "schema" : { "type" : "integer", "format" : "int32" } }, { "name" : "limit", "in" : "query", "required" : true, "schema" : { "type" : "integer", "format" : "int32" } }, { "name" : "sort_by", "in" : "query", "required" : true, "schema" : { "type" : "string" } }, { "name" : "direction", "in" : "query", "required" : true, "schema" : { "$ref" : "#/components/schemas/DeNccloudCommonV0EnumsSortDirection" } } ], "responses" : { "200" : { "description" : "Successful response", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/DeNccloudReportingApiV0ModelsTopicResponse" } } } } } } }, "/topics/{guid}" : { "get" : { "parameters" : [ { "name" : "guid", "in" : "path", "required" : true, "schema" : { "type" : "string" } } ], "responses" : { "200" : { "description" : "Successful response", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/DeNccloudReportingApiV0ModelsTopic" } } } }, "404" : { "description" : "Not found" } } } }, "/views" : { "get" : { "parameters" : [ { "name" : "offset", "in" : "query", "required" : true, "schema" : { "type" : "integer", "format" : "int32" } }, { "name" : "limit", "in" : "query", "required" : true, "schema" : { "type" : "integer", "format" : "int32" } }, { "name" : "sort_by", "in" : "query", "required" : true, "schema" : { "type" : "string" } }, { "name" : "direction", "in" : "query", "required" : true, "schema" : { "$ref" : "#/components/schemas/DeNccloudCommonV0EnumsSortDirection" } } ], "responses" : { "200" : { "description" : "Successful response", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/DeNccloudReportingApiV0ModelsViewResponse" } } } } } }, "post" : { "requestBody" : { "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/DeNccloudReportingApiV0ModelsViewForm" } } }, "required" : true }, "responses" : { "201" : { "description" : "Created", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/DeNccloudReportingApiV0ModelsView" } } } }, "400" : { "description" : "Bad request", "content" : { "application/json" : { "schema" : { "type" : "array", "items" : { "$ref" : "#/components/schemas/DeNccloudCommonV0ModelsGenericError" } } } } } } } }, "/views/{guid}" : { "get" : { "parameters" : [ { "name" : "guid", "in" : "path", "required" : true, "schema" : { "type" : "string", "format" : "uuid" } } ], "responses" : { "200" : { "description" : "Successful response", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/DeNccloudReportingApiV0ModelsView" } } } }, "404" : { "description" : "Not found" } } }, "put" : { "parameters" : [ { "name" : "guid", "in" : "path", "required" : true, "schema" : { "type" : "string", "format" : "uuid" } } ], "requestBody" : { "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/DeNccloudReportingApiV0ModelsViewForm" } } }, "required" : true }, "responses" : { "200" : { "description" : "Successful response", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/DeNccloudReportingApiV0ModelsView" } } } }, "400" : { "description" : "Bad request", "content" : { "application/json" : { "schema" : { "type" : "array", "items" : { "$ref" : "#/components/schemas/DeNccloudCommonV0ModelsGenericError" } } } } }, "404" : { "description" : "Not found" } } }, "delete" : { "parameters" : [ { "name" : "guid", "in" : "path", "required" : true, "schema" : { "type" : "string", "format" : "uuid" } } ], "responses" : { "200" : { "description" : "Successful response" }, "404" : { "description" : "Not found" } } } } }, "components" : { "schemas" : { "DeNccloudCommonV0ModelsErrorLinks" : { "description" : "Links to further information about the occurred error.", "type" : "object", "properties" : { "about" : { "$ref" : "#/components/schemas/DeNccloudCommonV0UnionsLink", "description" : "A link that leads to further details about this particular occurrence of the problem." }, "type" : { "$ref" : "#/components/schemas/DeNccloudCommonV0UnionsLink", "description" : "A link that identifies the type of the error that this particular error is an instance of." } } }, "DeNccloudCommonV0ModelsGenericError" : { "description" : "An error returned on failed API requests.", "type" : "object", "required" : [ "code", "title", "detail" ], "properties" : { "links" : { "$ref" : "#/components/schemas/DeNccloudCommonV0ModelsErrorLinks" }, "code" : { "description" : "An app specific error code.", "type" : "string" }, "title" : { "description" : "A short human readable summary of the problem.", "type" : "string" }, "detail" : { "description" : "A human readable explanation of the problem.", "type" : "string" }, "source" : { "$ref" : "#/components/schemas/DeNccloudCommonV0ModelsErrorSource" }, "meta" : { "description" : "Non-standard meta-information about the error.", "type" : "object", "additionalProperties" : true } } }, "DeNccloudCommonV0ModelsPageResponse" : { "description" : "Paging information returned from a paged request.", "type" : "object", "required" : [ "offset", "limit", "sort", "total_results", "total_pages" ], "properties" : { "offset" : { "type" : "integer", "format" : "int32" }, "limit" : { "type" : "integer", "format" : "int32" }, "sort" : { "type" : "array", "items" : { "$ref" : "#/components/schemas/DeNccloudCommonV0ModelsSort" } }, "total_results" : { "description" : "Total number of results that can potentially be returned.", "type" : "integer", "format" : "int64" }, "total_pages" : { "description" : "Total number of pages that can potentially be returned.", "type" : "integer", "format" : "int64" } } }, "DeNccloudCommonV0ModelsErrorSource" : { "description" : "Reference to the primary source of an error.", "type" : "object", "required" : [ "type", "source" ], "properties" : { "type" : { "$ref" : "#/components/schemas/DeNccloudCommonV0EnumsErrorSourceType" }, "source" : { "description" : "The source of the problem in the form specified by `type`.", "type" : "string" } } }, "DeNccloudCommonV0ModelsSort" : { "description" : "Single property to sort by.", "type" : "object", "required" : [ "property", "direction" ], "properties" : { "property" : { "description" : "The property by which the results should be sorted.", "type" : "string" }, "direction" : { "$ref" : "#/components/schemas/DeNccloudCommonV0EnumsSortDirection", "description" : "The direction in which the results should be sorted." } } }, "DeNccloudCommonV0ModelsAudit" : { "description" : "Basic audit information for a resource.", "type" : "object", "required" : [ "created_at", "created_by", "updated_at", "updated_by" ], "properties" : { "created_at" : { "type" : "string", "format" : "date-time" }, "created_by" : { "type" : "string", "format" : "uuid" }, "updated_at" : { "type" : "string", "format" : "date-time" }, "updated_by" : { "type" : "string", "format" : "uuid" } } }, "DeNccloudCommonV0ModelsLinkObject" : { "description" : "Represents a link with some meta information.", "type" : "object", "required" : [ "href" ], "properties" : { "href" : { "description" : "An URI-reference pointing to the links target.", "type" : "string" }, "title" : { "description" : "A human-readable label for the link.", "type" : "string" }, "type" : { "description" : "Optional media type of the link's target.", "type" : "string" } } }, "DeNccloudCommonV0ModelsServiceInfo" : { "description" : "Information about a deployed service.", "type" : "object", "required" : [ "name", "version", "uri" ], "properties" : { "name" : { "type" : "string" }, "version" : { "type" : "string" }, "uri" : { "description" : "URI under which this service is deployed.", "type" : "string" }, "title" : { "description" : "A human-readable title of the service.", "type" : "string" }, "description" : { "description" : "A human-readable description of the service.", "type" : "string" } } }, "DeNccloudReportingApiV0ModelsProjectionField" : { "description" : "A single field of a projection schema.", "type" : "object", "properties" : { "label" : { "description" : "A human-readable label for the field.", "type" : "string" }, "description" : { "description" : "A human-readable description for the field.", "type" : "string" }, "source" : { "$ref" : "#/components/schemas/DeNccloudReportingApiV0ModelsProjectionFieldSource", "description" : "The source of the field. Either `source` or `fields` must be set." }, "fields" : { "description" : "Defines nested fields for this projection. Either `source` or `fields` must be set.", "type" : "object", "additionalProperties" : { "$ref" : "#/components/schemas/DeNccloudReportingApiV0ModelsProjectionField" } } } }, "DeNccloudReportingApiV0ModelsFilter" : { "description" : "Defines a condition for values.", "type" : "object", "properties" : { "expression" : { "description" : "An SQL-like expression.", "type" : "string" }, "variables" : { "description" : "A map of values, which can be used in the expression. Variables can be access by prepending them with `$`.", "type" : "object", "additionalProperties" : { "type" : "object", "additionalProperties" : true } } } }, "DeNccloudReportingApiV0ModelsQueryResponse" : { "description" : "The result of a query, returning data in a projected form.", "type" : "object", "required" : [ "page", "data" ], "properties" : { "page" : { "$ref" : "#/components/schemas/DeNccloudCommonV0ModelsPageResponse" }, "data" : { "description" : "The returned data in the projected form.", "type" : "object", "additionalProperties" : true } } }, "DeNccloudReportingApiV0ModelsView" : { "description" : "A stored view containing data from one or more topics.", "type" : "object", "required" : [ "guid", "name", "projection", "variables" ], "properties" : { "guid" : { "description" : "Globally unique identifier of the projection.", "type" : "string", "format" : "uuid" }, "name" : { "description" : "Name of this projection used to reference it in a human-friendly way. The name must be unique.", "type" : "string" }, "projection" : { "description" : "Projected fields of this view.", "type" : "object", "additionalProperties" : { "$ref" : "#/components/schemas/DeNccloudReportingApiV0ModelsProjectionField" } }, "variables" : { "description" : "Definition of variables which can be passed to the view. All `scalar_type`s are allowed, except `object`.", "type" : "object", "additionalProperties" : { "$ref" : "#/components/schemas/DeNccloudReportingApiV0EnumsScalarType" } } } }, "DeNccloudReportingApiV0ModelsQueryForm" : { "description" : "Form for querying and projecting data.", "type" : "object", "required" : [ "variables" ], "properties" : { "view" : { "description" : "The name of a defined `view` used for projecting. If the view defines variables, they must be provided as well. Either `view` or `projection` must be set.", "type" : "string" }, "projection" : { "description" : "Projected fields to return. Either `view` or `projection` must be set.", "type" : "object", "additionalProperties" : { "$ref" : "#/components/schemas/DeNccloudReportingApiV0ModelsProjectionField" } }, "variables" : { "description" : "Variables to pass to the projection or the view.", "type" : "object", "additionalProperties" : { "type" : "object", "additionalProperties" : true } }, "sort" : { "description" : "The defined properties refer to the fields of the projection.", "type" : "array", "items" : { "$ref" : "#/components/schemas/DeNccloudCommonV0ModelsSort" } } } }, "DeNccloudReportingApiV0ModelsProjectionFieldSource" : { "description" : "Represents the source for a single projection field from a topic's schema.", "type" : "object", "required" : [ "topic", "path", "filter" ], "properties" : { "topic" : { "description" : "Name of the originating topic.", "type" : "string" }, "path" : { "description" : "A slimmed down variant of [JSON Path](https://gregsdennis.github.io/Manatee.Json/usage/path.html) to point to a specific field in a topic's schema.", "type" : "string" }, "filter" : { "description" : "A conditional filter expression. The expression can contain variables, which will be passed in when evaluating the projection.", "type" : "string" } } }, "DeNccloudReportingApiV0ModelsDeleteEvent" : { "description" : "Deletes a reporting entity defined by its `tracking_id`.", "type" : "object", "required" : [ "tracking_id", "audit" ], "properties" : { "tracking_id" : { "description" : "A unique id, which identifies the association of multiple events. This can i.e. be a user guid, for events related to a user. It is important, that this id is unique and immutable.", "type" : "string" }, "audit" : { "$ref" : "#/components/schemas/DeNccloudCommonV0ModelsAudit", "description" : "Audit information about this event." } } }, "DeNccloudReportingApiV0ModelsTopic" : { "description" : "Represents a single topic, which will be consumed by the reporting service.", "type" : "object", "required" : [ "name", "service", "schema" ], "properties" : { "name" : { "type" : "string" }, "service" : { "$ref" : "#/components/schemas/DeNccloudCommonV0ModelsServiceInfo", "description" : "Info about the producing service." }, "schema" : { "description" : "The schema of the topics' provided data.", "type" : "object", "additionalProperties" : { "$ref" : "#/components/schemas/DeNccloudReportingApiV0ModelsField" } } } }, "DeNccloudReportingApiV0ModelsTopicResponse" : { "type" : "object", "required" : [ "page", "data" ], "properties" : { "page" : { "$ref" : "#/components/schemas/DeNccloudCommonV0ModelsPageResponse" }, "data" : { "type" : "array", "items" : { "$ref" : "#/components/schemas/DeNccloudReportingApiV0ModelsTopic" } } } }, "DeNccloudReportingApiV0ModelsField" : { "description" : "Single field of a topic schema. A field can be used for projecting, filtering and sorting in reports.", "type" : "object", "required" : [ "type", "is_array" ], "properties" : { "type" : { "$ref" : "#/components/schemas/DeNccloudReportingApiV0EnumsScalarType", "description" : "The (scalar) type of the field. Fields can only be primitive types." }, "is_array" : { "description" : "Setting this to `true` means the field is an array of given type.", "type" : "boolean" }, "fields" : { "description" : "Nested fields for type `object`. When defining fields but not having set the type to `object`, the fields will be ignored. When setting the type to `object`, the fields need to be defined.", "type" : "object", "additionalProperties" : { "$ref" : "#/components/schemas/DeNccloudReportingApiV0ModelsField" } }, "label" : { "description" : "A human-readable label for the field.", "type" : "string" }, "description" : { "description" : "A human-readable description of the field.", "type" : "string" } } }, "DeNccloudReportingApiV0ModelsUpdateEvent" : { "description" : "Updates one or more data fields.", "type" : "object", "required" : [ "tracking_id", "payload", "audit" ], "properties" : { "tracking_id" : { "description" : "A unique id, which identifies the association of multiple events. This can i.e. be a user guid, for events related to a user. It is important, that this id is unique and immutable.", "type" : "string" }, "payload" : { "description" : "One or more fields defined in the reporting schema, which will be updated.", "type" : "object", "additionalProperties" : true }, "audit" : { "$ref" : "#/components/schemas/DeNccloudCommonV0ModelsAudit", "description" : "Audit information about this event." } } }, "DeNccloudReportingApiV0ModelsViewResponse" : { "type" : "object", "required" : [ "page", "data" ], "properties" : { "page" : { "$ref" : "#/components/schemas/DeNccloudCommonV0ModelsPageResponse" }, "data" : { "type" : "array", "items" : { "$ref" : "#/components/schemas/DeNccloudReportingApiV0ModelsView" } } } }, "DeNccloudReportingApiV0ModelsViewForm" : { "description" : "Form for creating a new `view`.", "type" : "object", "required" : [ "name", "projection", "variables" ], "properties" : { "name" : { "description" : "Name of the view.", "type" : "string" }, "projection" : { "description" : "Projected fields of this view.", "type" : "object", "additionalProperties" : { "$ref" : "#/components/schemas/DeNccloudReportingApiV0ModelsProjectionField" } }, "variables" : { "description" : "Definition of variables which can be passed to the view. All `scalar_type`s are allowed, except `object`.", "type" : "object", "additionalProperties" : { "$ref" : "#/components/schemas/DeNccloudReportingApiV0EnumsScalarType" } } } }, "DeNccloudCommonV0EnumsErrorSourceType" : { "description" : "Type of an error source.", "type" : "string", "enum" : [ "pointer", "parameter", "header" ] }, "DeNccloudCommonV0EnumsSortDirection" : { "description" : "The direction in which to sort by a property.", "type" : "string", "enum" : [ "asc", "desc" ] }, "DeNccloudReportingApiV0EnumsScalarType" : { "description" : "A type for a topic's schema field.", "type" : "string", "enum" : [ "boolean", "date-iso8601", "date-time-iso8601", "decimal", "double", "integer", "long", "string", "uuid", "object" ] }, "DeNccloudCommonV0UnionsLink" : { "description" : "Represents a link to a resource.", "oneOf" : [ { "$ref" : "#/components/schemas/String" }, { "$ref" : "#/components/schemas/DeNccloudCommonV0ModelsLinkObject" } ] }, "DeNccloudReportingApiV0UnionsReportingEvent" : { "oneOf" : [ { "$ref" : "#/components/schemas/DeNccloudReportingApiV0ModelsUpdateEvent" }, { "$ref" : "#/components/schemas/DeNccloudReportingApiV0ModelsDeleteEvent" } ] } } } }