mirror of
https://github.com/SecurityBrewery/catalyst.git
synced 2026-02-12 00:03:32 +01:00
Add Dashboards (#41)
This commit is contained in:
167
definition/dashboards.yaml
Normal file
167
definition/dashboards.yaml
Normal file
@@ -0,0 +1,167 @@
|
||||
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 }
|
||||
Reference in New Issue
Block a user