--- swagger: "2.0" host: "localhost:8000" basePath: "/api/v1.0" info: description: An API which supports creation, deletion, listing etc of Event Engine version: "1.0.0" title: Event Engine Management API contact: email: diego@cyclops-labs.io license: name: Apache 2.0 url: 'http://www.apache.org/licenses/LICENSE-2.0.html' tags: - name: statusManagement description: Actions relating to the reporting of the state of the service - name: triggerManagement description: Actions relating to the periodics actions to be triggered in the system - name: eventManagement description: Actions relating to the adquisition of events in the system - name: usageManagement description: Actions relating to the reporting of the usages in the system securityDefinitions: APIKeyHeader: type: apiKey in: header name: X-API-KEY APIKeyParam: type: apiKey in: query name: api_key Keycloak: type: oauth2 flow: accessCode authorizationUrl: 'http://localhost:8080/auth/realms/Dev/protocol/openid-connect/auth' tokenUrl: 'http://localhost:8080/auth/realms/Dev/protocol/openid-connect/token' scopes: admin: Admin scope user: User scope schemes: - http - https security: - Keycloak: [user,admin] - APIKeyHeader: [] - APIKeyParam: [] paths: /status: get: tags: - statusManagement produces: - application/json summary: Basic status of the system security: - Keycloak: [user] - APIKeyHeader: [] - APIKeyParam: [] operationId: showStatus responses: '200': description: Status information of the system schema: $ref: "#/definitions/Status" '500': description: Something unexpected happend, error raised schema: $ref: "#/definitions/ErrorResponse" /status/{id}: get: tags: - statusManagement produces: - application/json summary: Basic status of the system security: - Keycloak: [user] - APIKeyHeader: [] - APIKeyParam: [] operationId: getStatus responses: '200': description: Status information of the system schema: $ref: "#/definitions/Status" '404': description: The endpoint provided doesn't exist schema: $ref: "#/definitions/ErrorResponse" parameters: - name: id in: path type: string enum: - status - kafka-receiver - kafka-sender - trigger - usage - event required: true description: Id of the endpoint to be checked /trigger/sample: get: tags: - triggerManagement produces: - application/json summary: Sample task trigger security: - Keycloak: [user] - APIKeyHeader: [] - APIKeyParam: [] operationId: execSample responses: '200': description: Sample task executed successfully '500': description: Something unexpected happend, error raised schema: $ref: "#/definitions/ErrorResponse" /event: post: tags: - eventManagement consumes: - application/json produces: - application/json summary: Takes into the system the provided event security: - Keycloak: [admin] - APIKeyHeader: [] - APIKeyParam: [] operationId: addEvent responses: '201': description: Item added successfully schema: $ref: "#/definitions/ItemCreatedResponse" '400': description: Invalid input, object invalid '500': description: Something unexpected happend, error raised schema: $ref: "#/definitions/ErrorResponse" parameters: - name: event in: body description: Event to be added to the system required: true schema: $ref: "#/definitions/Event" /event/history/{account}: get: tags: - eventManagement produces: - application/json summary: Provides the events for the id provided security: - Keycloak: [user] - APIKeyHeader: [] - APIKeyParam: [] operationId: getHistory responses: '200': description: Description of a successfully operation schema: type: array items: $ref: "#/definitions/Event" '404': description: Item not found in the system schema: $ref: "#/definitions/ErrorResponse" '500': description: Something unexpected happend, error raised schema: $ref: "#/definitions/ErrorResponse" parameters: - name: account in: path description: Id of the account to be checked required: true type: string - name: from in: query description: Datetime from which to get the usage report type: integer - name: to in: query description: Datetime until which to get the usage report type: integer - name: resource in: query description: Resource type to filter the usage type: string - name: region in: query description: Resource region to filter the usage type: string /event/status: get: tags: - eventManagement produces: - application/json summary: Provides the list of states in not terminated state security: - Keycloak: [user] - APIKeyHeader: [] - APIKeyParam: [] operationId: listStates responses: '200': description: Description of a successfully operation schema: type: array items: $ref: "#/definitions/MinimalState" '500': description: Something unexpected happend, error raised schema: $ref: "#/definitions/ErrorResponse" parameters: - name: resource in: query description: Resource type to filter the usage type: string - name: region in: query description: Resource region to filter the usage type: string /event/status/{account}: get: tags: - eventManagement produces: - application/json summary: Provides the events for the id provided security: - Keycloak: [user] - APIKeyHeader: [] - APIKeyParam: [] operationId: getState responses: '200': description: Description of a successfully operation schema: type: array items: $ref: "#/definitions/State" '404': description: Item not found in the system schema: $ref: "#/definitions/ErrorResponse" '500': description: Something unexpected happend, error raised schema: $ref: "#/definitions/ErrorResponse" parameters: - name: account in: path description: Id of the account to be checked required: true type: string /usage: get: tags: - usageManagement produces: - application/json summary: Generates an aggregated response by account of the usage recorded in the system during the time-window specified security: - Keycloak: [user] - APIKeyHeader: [] - APIKeyParam: [] operationId: getSystemUsage responses: '200': description: Description of a successfully operation schema: type: array items: $ref: "#/definitions/Usage" '500': description: Something unexpected happend, error raised schema: $ref: "#/definitions/ErrorResponse" parameters: - name: from in: query description: Datetime from which to get the usage report type: integer - name: to in: query description: Datetime until which to get the usage report type: integer - name: resource in: query description: Resource type to filter the usage type: string - name: region in: query description: Resource region to filter the usage type: string /usage/{id}: get: tags: - usageManagement produces: - application/json summary: Generates an aggregated response of the usage recorded in the system during the time-window specified for the selected account security: - Keycloak: [user] - APIKeyHeader: [] - APIKeyParam: [] operationId: getUsage responses: '200': description: Description of a successfully operation schema: $ref: "#/definitions/Usage" '404': description: Item not found in the system schema: $ref: "#/definitions/ErrorResponse" '500': description: Something unexpected happend, error raised schema: $ref: "#/definitions/ErrorResponse" parameters: - name: id in: path description: Id of the account to be checked required: true type: string - name: from in: query description: Datetime from which to get the usage report type: integer - name: to in: query description: Datetime until which to get the usage report type: integer - name: resource in: query description: Resource type to filter the usage type: string - name: region in: query description: Resource region to filter the usage type: string definitions: ErrorResponse: type: object required: - errorString properties: errorString: type: string ItemCreatedResponse: properties: ApiLink: type: string Message: type: string Metadata: type: object x-go-type: import: package: "gitlab.com/cyclops-enterprise/datamodels" type: JSONdb Status: type: object required: - SystemState properties: AverageResponseTime: type: number format: double DBState: type: string LastRequest: type: string RequestsBoT: type: integer RequestsLastHour: type: integer RequestsToday: type: integer SystemState: type: string Event: type: object required: - EventTime - LastEvent properties: Account: type: string x-go-custom-tag: gorm:"index" EventTime: type: integer ID: type: integer x-go-custom-tag: gorm:"primary_key;auto_increment" LastEvent: type: string enum: - active - error - inactive - terminated - suspended MetaData: x-go-custom-tag: gorm:"type:jsonb" $ref: '#/definitions/Metadata' Region: type: string ResourceId: type: string ResourceName: type: string ResourceType: type: string TimeFrom: type: integer x-go-custom-tag: gorm:"index" TimeTo: type: integer x-go-custom-tag: gorm:"index" State: type: object required: - EventTime - LastEvent properties: Account: type: string x-go-custom-tag: gorm:"index" EventTime: type: integer ID: type: integer x-go-custom-tag: gorm:"primary_key;auto_increment" LastEvent: type: string enum: - active - error - inactive - terminated - suspended MetaData: x-go-custom-tag: gorm:"type:jsonb" $ref: '#/definitions/Metadata' Region: type: string ResourceId: type: string ResourceName: type: string ResourceType: type: string TimeFrom: type: integer x-go-custom-tag: gorm:"index" TimeTo: type: integer x-go-custom-tag: gorm:"index" MinimalState: type: object properties: Account: type: string MetaData: x-go-custom-tag: gorm:"type:jsonb" $ref: '#/definitions/Metadata' ResourceId: type: string ResourceName: type: string Usage: type: object properties: AccountId: type: string TimeFrom: type: integer TimeTo: type: integer Usage: type: array items: $ref: '#/definitions/Use' Use: type: object properties: MetaData: $ref: '#/definitions/Metadata' Region: type: string ResourceId: type: string ResourceName: type: string ResourceType: type: string Unit: type: string UsageBreakup: $ref: '#/definitions/Metadata'