mirror of
https://github.com/SecurityBrewery/catalyst.git
synced 2025-12-16 04:02:45 +01:00
167 lines
5.9 KiB
YAML
167 lines
5.9 KiB
YAML
swagger: "2.0"
|
|
info: { version: "", title: "" }
|
|
|
|
paths:
|
|
/statistics:
|
|
get:
|
|
tags: [ "statistics" ]
|
|
summary: "Get statistics"
|
|
operationId: "getStatistics"
|
|
responses:
|
|
"200":
|
|
description: "successful operation"
|
|
schema: { $ref: '#/definitions/Statistics' }
|
|
examples:
|
|
test:
|
|
unassigned: 0
|
|
open_tickets_per_user: { }
|
|
tickets_per_week: { "2021-39": 3 }
|
|
tickets_per_type: { "alert": 2, "incident": 1 }
|
|
security: [ { roles: [ "ticket:read" ] } ]
|
|
|
|
/dashboards:
|
|
get:
|
|
tags: [ "dashboards" ]
|
|
summary: "List dashboards"
|
|
operationId: "listDashboards"
|
|
responses:
|
|
"200":
|
|
description: "successful operation"
|
|
schema: { type: array, items: { $ref: "#/definitions/DashboardResponse" } }
|
|
examples:
|
|
test:
|
|
- id: simple
|
|
name: Simple
|
|
widgets:
|
|
- name: "open_tickets_per_user"
|
|
aggregation: "owner"
|
|
filter: 'status == "open"'
|
|
type: "bar"
|
|
width: 4
|
|
- name: "tickets_per_week"
|
|
aggregation: 'CONCAT(DATE_YEAR(created), "-", DATE_ISOWEEK(created) < 10 ? "0" : "", DATE_ISOWEEK(created))'
|
|
type: "line"
|
|
width: 8
|
|
security: [ { roles: [ "dashboard:read" ] } ]
|
|
post:
|
|
tags: [ "dashboards" ]
|
|
summary: "Create a new dashboard"
|
|
operationId: "createDashboard"
|
|
parameters:
|
|
- { name: "template", in: "body", description: "New template", required: true, schema: { $ref: "#/definitions/Dashboard" }, x-example: { name: "My Dashboard", widgets: [ ] } }
|
|
responses:
|
|
"200":
|
|
description: "successful operation"
|
|
schema: { $ref: "#/definitions/DashboardResponse" }
|
|
examples:
|
|
test:
|
|
id: "my-dashboard"
|
|
name: "My Dashboard"
|
|
widgets: []
|
|
security: [ { roles: [ "dashboard:write" ] } ]
|
|
|
|
/dashboards/{id}:
|
|
get:
|
|
tags: [ "dashboards" ]
|
|
summary: "Get a single dashboard"
|
|
operationId: "getDashboard"
|
|
parameters:
|
|
- { name: "id", in: "path", description: "Dashboard ID", required: true, type: string, x-example: "simple" }
|
|
responses:
|
|
"200":
|
|
description: "successful operation"
|
|
schema: { $ref: "#/definitions/DashboardResponse" }
|
|
examples:
|
|
test:
|
|
id: simple
|
|
name: Simple
|
|
widgets:
|
|
- name: "open_tickets_per_user"
|
|
aggregation: "owner"
|
|
filter: 'status == "open"'
|
|
type: "bar"
|
|
width: 4
|
|
- name: "tickets_per_week"
|
|
aggregation: 'CONCAT(DATE_YEAR(created), "-", DATE_ISOWEEK(created) < 10 ? "0" : "", DATE_ISOWEEK(created))'
|
|
type: "line"
|
|
width: 8
|
|
security: [ { roles: [ "dashboard:read" ] } ]
|
|
put:
|
|
tags: [ "dashboards" ]
|
|
summary: "Update an existing dashboard"
|
|
operationId: "updateDashboard"
|
|
parameters:
|
|
- { name: "id", in: "path", description: "Dashboard ID", required: true, type: string, x-example: "simple" }
|
|
- { name: "dashboard", in: "body", description: "Dashboard object that needs to be added", required: true, schema: { $ref: "#/definitions/Dashboard" }, x-example: { name: "Simple", widgets: [] } }
|
|
responses:
|
|
"200":
|
|
description: "successful operation"
|
|
schema: { $ref: "#/definitions/DashboardResponse" }
|
|
examples:
|
|
test:
|
|
id: simple
|
|
name: Simple
|
|
widgets: []
|
|
security: [ { roles: [ "dashboard:write" ] } ]
|
|
delete:
|
|
tags: [ "dashboards" ]
|
|
summary: "Delete a dashboard"
|
|
operationId: "deleteDashboard"
|
|
parameters:
|
|
- { name: "id", in: "path", description: "Dashboard ID", required: true, type: string, x-example: "simple" }
|
|
responses:
|
|
"204": { description: "successful operation" }
|
|
security: [ { roles: [ "dashboard:write" ] } ]
|
|
|
|
/dashboard/data:
|
|
get:
|
|
tags: [ "dashboards" ]
|
|
summary: "Get widget data"
|
|
operationId: "dashboardData"
|
|
parameters:
|
|
- { name: "aggregation", in: "query", description: "Aggregation", required: true, type: string, x-example: "type" }
|
|
- { name: "filter", in: "query", description: "Filter", type: string, x-example: 'status == "closed"' }
|
|
responses:
|
|
"200":
|
|
description: "successful operation"
|
|
schema: { type: object }
|
|
examples:
|
|
test:
|
|
alert: 2
|
|
incident: 1
|
|
security: [ { roles: [ "dashboard:read" ] } ]
|
|
|
|
definitions:
|
|
Statistics:
|
|
type: object
|
|
required: [ unassigned, open_tickets_per_user, tickets_per_week, tickets_per_type ]
|
|
properties:
|
|
unassigned: { type: integer }
|
|
open_tickets_per_user: { type: object, additionalProperties: { type: integer } }
|
|
tickets_per_week: { type: object, additionalProperties: { type: integer } }
|
|
tickets_per_type: { type: object, additionalProperties: { type: integer } }
|
|
|
|
Dashboard:
|
|
type: object
|
|
required: [ name, widgets ]
|
|
properties:
|
|
name: { type: string }
|
|
widgets: { type: array, items: { $ref: "#/definitions/Widget" } }
|
|
|
|
DashboardResponse:
|
|
type: object
|
|
required: [ id, name, widgets ]
|
|
properties:
|
|
id: { type: string }
|
|
name: { type: string }
|
|
widgets: { type: array, items: { $ref: "#/definitions/Widget" } }
|
|
|
|
Widget:
|
|
type: object
|
|
required: [ name, type, aggregation, width ]
|
|
properties:
|
|
name: { type: string }
|
|
type: { type: string, enum: [ "bar", "line", "pie" ] }
|
|
filter: { type: string }
|
|
aggregation: { type: string }
|
|
width: { type: integer, minimum: 1, maximum: 12 } |