mirror of
https://github.com/absmach/supermq.git
synced 2026-06-23 06:30:22 +00:00
557 lines
14 KiB
YAML
557 lines
14 KiB
YAML
# Copyright (c) Abstract Machines
|
|
# SPDX-License-Identifier: Apache-2.0
|
|
|
|
openapi: 3.0.1
|
|
info:
|
|
title: Magistrala Reports Service API
|
|
description: |
|
|
HTTP API for managing reports service.
|
|
version: 0.18.5
|
|
servers:
|
|
- url: http://localhost:9017
|
|
tags:
|
|
- name: reports
|
|
description: Operations related to report configurations and generation
|
|
paths:
|
|
/{domainID}/reports:
|
|
post:
|
|
operationId: generateReport
|
|
summary: Generate a report
|
|
description: Generates a report based on the provided configuration or an existing config. The action determines the response format.
|
|
tags:
|
|
- reports
|
|
parameters:
|
|
- $ref: '#/components/parameters/DomainID'
|
|
security:
|
|
- bearerAuth: []
|
|
requestBody:
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/GenerateReportRequest'
|
|
responses:
|
|
'200':
|
|
description: Report generated successfully (content varies by action)
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/GenerateReportResponse'
|
|
application/octet-stream:
|
|
schema:
|
|
type: string
|
|
format: binary
|
|
'400':
|
|
description: Invalid request parameters
|
|
'401':
|
|
description: Missing or invalid access token
|
|
'500':
|
|
$ref: '#/components/responses/ServiceError'
|
|
|
|
/{domainID}/reports/configs:
|
|
post:
|
|
operationId: addReportConfig
|
|
summary: Create a report configuration
|
|
description: Creates a new report configuration.
|
|
tags:
|
|
- reports
|
|
parameters:
|
|
- $ref: '#/components/parameters/DomainID'
|
|
security:
|
|
- bearerAuth: []
|
|
requestBody:
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/AddReportConfigRequest'
|
|
responses:
|
|
'201':
|
|
description: Report configuration created
|
|
headers:
|
|
Location:
|
|
schema:
|
|
type: string
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/ReportConfig'
|
|
'400':
|
|
description: Invalid request body
|
|
'401':
|
|
description: Missing or invalid access token
|
|
'500':
|
|
$ref: '#/components/responses/ServiceError'
|
|
get:
|
|
operationId: listReportConfigs
|
|
summary: List report configurations
|
|
description: Retrieves a paginated list of report configurations.
|
|
tags:
|
|
- reports
|
|
parameters:
|
|
- $ref: '#/components/parameters/DomainID'
|
|
- $ref: '#/components/parameters/Offset'
|
|
- $ref: '#/components/parameters/Limit'
|
|
security:
|
|
- bearerAuth: []
|
|
responses:
|
|
'200':
|
|
description: List of report configurations
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/ListReportsConfigResponse'
|
|
'400':
|
|
description: Invalid query parameters
|
|
'401':
|
|
description: Missing or invalid access token
|
|
'500':
|
|
$ref: '#/components/responses/ServiceError'
|
|
|
|
/{domainID}/reports/configs/{reportID}:
|
|
get:
|
|
operationId: viewReportConfig
|
|
summary: View a report configuration
|
|
description: Retrieves details of a specific report configuration.
|
|
tags:
|
|
- reports
|
|
parameters:
|
|
- $ref: '#/components/parameters/DomainID'
|
|
- $ref: '#/components/parameters/ReportID'
|
|
security:
|
|
- bearerAuth: []
|
|
responses:
|
|
'200':
|
|
description: Report configuration details
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/ReportConfig'
|
|
'404':
|
|
description: Report configuration not found
|
|
'401':
|
|
description: Missing or invalid access token
|
|
'500':
|
|
$ref: '#/components/responses/ServiceError'
|
|
patch:
|
|
operationId: updateReportConfig
|
|
summary: Update a report configuration
|
|
description: Updates specified fields of a report configuration.
|
|
tags:
|
|
- reports
|
|
parameters:
|
|
- $ref: '#/components/parameters/DomainID'
|
|
- $ref: '#/components/parameters/ReportID'
|
|
security:
|
|
- bearerAuth: []
|
|
requestBody:
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/UpdateReportConfigRequest'
|
|
responses:
|
|
'200':
|
|
description: Report configuration updated
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/ReportConfig'
|
|
'400':
|
|
description: Invalid request body
|
|
'401':
|
|
description: Missing or invalid access token
|
|
'404':
|
|
description: Report configuration not found
|
|
'500':
|
|
$ref: '#/components/responses/ServiceError'
|
|
delete:
|
|
operationId: deleteReportConfig
|
|
summary: Delete a report configuration
|
|
description: Permanently deletes a report configuration.
|
|
tags:
|
|
- reports
|
|
parameters:
|
|
- $ref: '#/components/parameters/DomainID'
|
|
- $ref: '#/components/parameters/ReportID'
|
|
security:
|
|
- bearerAuth: []
|
|
responses:
|
|
'204':
|
|
description: Report configuration deleted
|
|
'401':
|
|
description: Missing or invalid access token
|
|
'404':
|
|
description: Report configuration not found
|
|
'500':
|
|
$ref: '#/components/responses/ServiceError'
|
|
|
|
/{domainID}/reports/configs/{reportID}/schedule:
|
|
patch:
|
|
operationId: updateReportSchedule
|
|
summary: Update report schedule
|
|
description: Updates the schedule of a report configuration.
|
|
tags:
|
|
- reports
|
|
parameters:
|
|
- $ref: '#/components/parameters/DomainID'
|
|
- $ref: '#/components/parameters/ReportID'
|
|
security:
|
|
- bearerAuth: []
|
|
requestBody:
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/Schedule'
|
|
responses:
|
|
'200':
|
|
description: Schedule updated
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/ReportConfig'
|
|
'400':
|
|
description: Invalid schedule
|
|
'401':
|
|
description: Missing or invalid access token
|
|
'404':
|
|
description: Report configuration not found
|
|
'500':
|
|
$ref: '#/components/responses/ServiceError'
|
|
|
|
/{domainID}/reports/configs/{reportID}/enable:
|
|
post:
|
|
operationId: enableReportConfig
|
|
summary: Enable a report configuration
|
|
description: Enables a report configuration to generate scheduled reports.
|
|
tags:
|
|
- reports
|
|
parameters:
|
|
- $ref: '#/components/parameters/DomainID'
|
|
- $ref: '#/components/parameters/ReportID'
|
|
security:
|
|
- bearerAuth: []
|
|
responses:
|
|
'200':
|
|
description: Report configuration enabled
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/ReportConfig'
|
|
'401':
|
|
description: Missing or invalid access token
|
|
'404':
|
|
description: Report configuration not found
|
|
'500':
|
|
$ref: '#/components/responses/ServiceError'
|
|
|
|
/{domainID}/reports/configs/{reportID}/disable:
|
|
post:
|
|
operationId: disableReportConfig
|
|
summary: Disable a report configuration
|
|
description: Disables a report configuration, stopping scheduled reports.
|
|
tags:
|
|
- reports
|
|
parameters:
|
|
- $ref: '#/components/parameters/DomainID'
|
|
- $ref: '#/components/parameters/ReportID'
|
|
security:
|
|
- bearerAuth: []
|
|
responses:
|
|
'200':
|
|
description: Report configuration disabled
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/ReportConfig'
|
|
'401':
|
|
description: Missing or invalid access token
|
|
'404':
|
|
description: Report configuration not found
|
|
'500':
|
|
$ref: '#/components/responses/ServiceError'
|
|
|
|
/health:
|
|
get:
|
|
summary: Service health check
|
|
tags:
|
|
- health
|
|
responses:
|
|
'200':
|
|
$ref: '#/components/responses/HealthRes'
|
|
|
|
components:
|
|
schemas:
|
|
ReportConfig:
|
|
type: object
|
|
properties:
|
|
id:
|
|
type: string
|
|
readOnly: true
|
|
name:
|
|
type: string
|
|
description:
|
|
type: string
|
|
domain_id:
|
|
type: string
|
|
readOnly: true
|
|
schedule:
|
|
$ref: '#/components/schemas/Schedule'
|
|
config:
|
|
$ref: '#/components/schemas/MetricConfig'
|
|
email:
|
|
$ref: '#/components/schemas/EmailSetting'
|
|
metrics:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/ReqMetric'
|
|
status:
|
|
$ref: '#/components/schemas/Status'
|
|
created_at:
|
|
type: string
|
|
format: date-time
|
|
readOnly: true
|
|
created_by:
|
|
type: string
|
|
readOnly: true
|
|
updated_at:
|
|
type: string
|
|
format: date-time
|
|
readOnly: true
|
|
updated_by:
|
|
type: string
|
|
readOnly: true
|
|
required:
|
|
- name
|
|
- metrics
|
|
- config
|
|
|
|
Schedule:
|
|
type: object
|
|
properties:
|
|
recurring:
|
|
type: string
|
|
enum: [None, Daily, Weekly, Monthly]
|
|
recurring_period:
|
|
type: integer
|
|
minimum: 1
|
|
start_time:
|
|
type: string
|
|
format: date-time
|
|
next_run:
|
|
type: string
|
|
format: date-time
|
|
readOnly: true
|
|
|
|
MetricConfig:
|
|
type: object
|
|
properties:
|
|
title:
|
|
type: string
|
|
maxLength: 100
|
|
format:
|
|
type: string
|
|
enum: [pdf, csv, html]
|
|
aggregation:
|
|
$ref: '#/components/schemas/AggConfig'
|
|
|
|
AggConfig:
|
|
type: object
|
|
properties:
|
|
window:
|
|
type: string
|
|
function:
|
|
type: string
|
|
enum: [sum, average, max, min]
|
|
|
|
EmailSetting:
|
|
type: object
|
|
properties:
|
|
recipients:
|
|
type: array
|
|
items:
|
|
type: string
|
|
format: email
|
|
subject:
|
|
type: string
|
|
body_template:
|
|
type: string
|
|
required:
|
|
- recipients
|
|
- subject
|
|
|
|
ReqMetric:
|
|
type: object
|
|
properties:
|
|
name:
|
|
type: string
|
|
type:
|
|
type: string
|
|
enum: [gauge, counter, histogram]
|
|
parameters:
|
|
type: object
|
|
required:
|
|
- name
|
|
- type
|
|
|
|
Status:
|
|
type: string
|
|
enum: [enabled, disabled]
|
|
|
|
GenerateReportRequest:
|
|
type: object
|
|
properties:
|
|
action:
|
|
type: string
|
|
enum: [view, download, email]
|
|
config_id:
|
|
type: string
|
|
name:
|
|
type: string
|
|
description:
|
|
type: string
|
|
schedule:
|
|
$ref: '#/components/schemas/Schedule'
|
|
config:
|
|
$ref: '#/components/schemas/MetricConfig'
|
|
email:
|
|
$ref: '#/components/schemas/EmailSetting'
|
|
metrics:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/ReqMetric'
|
|
required:
|
|
- action
|
|
|
|
GenerateReportResponse:
|
|
type: object
|
|
properties:
|
|
total:
|
|
type: integer
|
|
from:
|
|
type: string
|
|
format: date-time
|
|
to:
|
|
type: string
|
|
format: date-time
|
|
aggregation:
|
|
$ref: '#/components/schemas/AggConfig'
|
|
reports:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/Report'
|
|
|
|
Report:
|
|
type: object
|
|
properties:
|
|
timestamp:
|
|
type: string
|
|
format: date-time
|
|
value:
|
|
type: number
|
|
metric_name:
|
|
type: string
|
|
|
|
AddReportConfigRequest:
|
|
type: object
|
|
properties:
|
|
name:
|
|
type: string
|
|
description:
|
|
type: string
|
|
schedule:
|
|
$ref: '#/components/schemas/Schedule'
|
|
config:
|
|
$ref: '#/components/schemas/MetricConfig'
|
|
email:
|
|
$ref: '#/components/schemas/EmailSetting'
|
|
metrics:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/ReqMetric'
|
|
status:
|
|
$ref: '#/components/schemas/Status'
|
|
required:
|
|
- name
|
|
- metrics
|
|
- config
|
|
|
|
UpdateReportConfigRequest:
|
|
type: object
|
|
properties:
|
|
name:
|
|
type: string
|
|
description:
|
|
type: string
|
|
schedule:
|
|
$ref: '#/components/schemas/Schedule'
|
|
config:
|
|
$ref: '#/components/schemas/MetricConfig'
|
|
email:
|
|
$ref: '#/components/schemas/EmailSetting'
|
|
metrics:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/ReqMetric'
|
|
status:
|
|
$ref: '#/components/schemas/Status'
|
|
|
|
ListReportsConfigResponse:
|
|
type: object
|
|
properties:
|
|
total:
|
|
type: integer
|
|
offset:
|
|
type: integer
|
|
limit:
|
|
type: integer
|
|
report_configs:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/ReportConfig'
|
|
|
|
parameters:
|
|
DomainID:
|
|
name: domainID
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
ReportID:
|
|
name: reportID
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
Offset:
|
|
name: offset
|
|
in: query
|
|
schema:
|
|
type: integer
|
|
default: 0
|
|
minimum: 0
|
|
Limit:
|
|
name: limit
|
|
in: query
|
|
schema:
|
|
type: integer
|
|
default: 10
|
|
minimum: 1
|
|
maximum: 100
|
|
|
|
responses:
|
|
ServiceError:
|
|
description: Unexpected server error
|
|
HealthRes:
|
|
description: Service health status
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
status:
|
|
type: string
|
|
|
|
securitySchemes:
|
|
bearerAuth:
|
|
type: http
|
|
scheme: bearer
|
|
bearerFormat: JWT
|