{ "openapi": "3.0.0", "paths": { "/auth/login": { "post": { "operationId": "login", "summary": "Login", "description": "Login with username and api key", "parameters": [], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UserCredentials" } } } }, "responses": { "201": { "description": "Token", "content": { "application/json": { "schema": { "type": "string" } } } } }, "tags": ["Auth"] } }, "/auth/validate": { "post": { "operationId": "validateToken", "summary": "Validate token", "description": "Validate JWT token", "parameters": [], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TokenValidation" } } } }, "responses": { "201": { "description": "Whether the token is valid", "content": { "application/json": { "schema": { "type": "boolean" } } } } }, "tags": ["Auth"] } }, "/auth/is-admin": { "get": { "operationId": "isAdmin", "summary": "Check if the current user is admin", "description": "Check if the current user is admin", "parameters": [], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "type": "boolean" } } } }, "201": { "description": "Whether the user is admin", "content": { "application/json": { "schema": { "type": "boolean" } } } } }, "tags": ["Auth"], "security": [{ "bearer": [] }] } }, "/jobs": { "get": { "operationId": "getJobs", "summary": "Get all jobs", "description": "Returns a list of all jobs that have been queued or processed.", "parameters": [ { "name": "page", "required": false, "in": "query", "description": "Page number", "schema": { "minimum": 1, "default": 1, "type": "number" } }, { "name": "limit", "required": false, "in": "query", "description": "Page size", "schema": { "minimum": 1, "maximum": 320, "default": 80, "type": "number" } } ], "responses": { "200": { "description": "A list of all jobs", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/JobInfo" } } } } } }, "tags": ["Jobs"], "security": [{ "bearer": [] }] } }, "/health": { "get": { "operationId": "healthCheck", "summary": "Health Check", "description": "Check the health of the application", "parameters": [], "responses": { "200": { "description": "The application is healthy" } }, "tags": ["Health"] } }, "/health/manifests": { "get": { "operationId": "getManifestHealth", "summary": "Retrieve manifest health", "description": "Retrieve manifest health", "parameters": [], "responses": { "200": { "description": "Manifest health", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/ManifestHealth" } } } } } }, "tags": ["Health"], "security": [{ "bearer": [] }] } }, "/dashboards/{type}": { "get": { "operationId": "getDashboard", "summary": "Get dashboard", "description": "Get dashboard by type, for the current user", "parameters": [ { "name": "type", "required": true, "in": "path", "schema": { "type": "string" } } ], "responses": { "200": { "description": "Dashboard object", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DashboardConfig" } } } }, "404": { "description": "Dashboard not found" } }, "tags": ["Dashboards"], "security": [{ "bearer": [] }] }, "post": { "operationId": "updateDashboard", "summary": "Update dashboard", "description": "Update dashboard by type, for the current user", "parameters": [ { "name": "type", "required": true, "in": "path", "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DashboardUpdate" } } } }, "responses": { "200": { "description": "Updated dashboard object" }, "201": { "description": "" } }, "tags": ["Dashboards"], "security": [{ "bearer": [] }] } }, "/manifests/{id}": { "get": { "operationId": "getManifest", "summary": "Get a manifest by ID", "description": "Get a manifest by ID", "parameters": [ { "name": "id", "required": true, "in": "path", "schema": { "type": "number" } } ], "responses": { "200": { "description": "Manifest", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Manifest" } } } } }, "tags": ["Manifests"], "security": [{ "bearer": [] }] }, "delete": { "operationId": "deleteManifest", "summary": "Delete a manifest by ID", "description": "Delete a manifest by ID", "parameters": [ { "name": "id", "required": true, "in": "path", "schema": { "type": "number" } } ], "responses": { "200": { "description": "Manifest deleted successfully" } }, "tags": ["Manifests"], "security": [{ "bearer": [] }] } }, "/manifests": { "get": { "operationId": "listManifests", "summary": "List manifests", "description": "List manifests", "parameters": [ { "required": true, "name": "startDate", "in": "query", "schema": { "format": "date-time", "type": "string" } }, { "required": true, "name": "endDate", "in": "query", "schema": { "format": "date-time", "type": "string" } }, { "required": true, "name": "timezone", "in": "query", "schema": { "type": "string" } }, { "required": true, "name": "scale", "in": "query", "schema": { "enum": [ "minute", "hour", "day", "week", "month", "year", "decade", "all" ], "type": "string" } }, { "required": false, "name": "id", "in": "query", "schema": { "type": "number" } }, { "required": false, "name": "type", "in": "query", "schema": { "type": "array", "items": { "type": "string", "enum": [ "approvals", "tickets", "posts", "users", "user_profiles", "flags", "feedbacks", "post_versions" ] } } } ], "responses": { "200": { "description": "List of manifests", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/Manifest" } } } } } }, "tags": ["Manifests"], "security": [{ "bearer": [] }] } }, "/metrics/approvals/count/summary": { "get": { "operationId": "getApprovalCountSummary", "summary": "Approval count summary", "description": "Get total approval counts for a given date range", "parameters": [ { "name": "startDate", "required": false, "in": "query", "schema": { "format": "date-time", "type": "string" } }, { "name": "endDate", "required": false, "in": "query", "schema": { "format": "date-time", "type": "string" } }, { "name": "timezone", "required": false, "in": "query", "schema": { "type": "string" } }, { "name": "scale", "required": false, "in": "query", "schema": { "enum": [ "minute", "hour", "day", "week", "month", "year", "decade", "all" ], "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApprovalCountSummary" } } } } }, "tags": ["Approvals"], "security": [{ "bearer": [] }] } }, "/metrics/approvals/count/series": { "get": { "operationId": "getApprovalCountSeries", "summary": "Approval count series", "description": "Get a time series of approval counts for a given date range", "parameters": [ { "name": "startDate", "required": false, "in": "query", "schema": { "format": "date-time", "type": "string" } }, { "name": "endDate", "required": false, "in": "query", "schema": { "format": "date-time", "type": "string" } }, { "name": "timezone", "required": false, "in": "query", "schema": { "type": "string" } }, { "name": "scale", "required": false, "in": "query", "schema": { "enum": [ "minute", "hour", "day", "week", "month", "year", "decade", "all" ], "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/SeriesCountPoint" } } } } } }, "tags": ["Approvals"], "security": [{ "bearer": [] }] } }, "/metrics/approvals/count/series/by/approver/{approverId}": { "get": { "operationId": "getApprovalCountSeriesByApprover", "summary": "Approval count series by approver", "description": "Get a time series of approval counts for a given date range by approver", "parameters": [ { "name": "approverId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "startDate", "required": false, "in": "query", "schema": { "format": "date-time", "type": "string" } }, { "name": "endDate", "required": false, "in": "query", "schema": { "format": "date-time", "type": "string" } }, { "name": "timezone", "required": false, "in": "query", "schema": { "type": "string" } }, { "name": "scale", "required": false, "in": "query", "schema": { "enum": [ "minute", "hour", "day", "week", "month", "year", "decade", "all" ], "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/SeriesCountPoint" } } } } } }, "tags": ["Approvals"], "security": [{ "bearer": [] }] } }, "/metrics/approvals/activity/summary": { "get": { "operationId": "getApprovalActivitySeries", "summary": "Approval activity summary", "description": "Get a hourly summary of approval activity for a given date range", "parameters": [ { "name": "startDate", "required": false, "in": "query", "schema": { "format": "date-time", "type": "string" } }, { "name": "endDate", "required": false, "in": "query", "schema": { "format": "date-time", "type": "string" } }, { "name": "timezone", "required": false, "in": "query", "schema": { "type": "string" } }, { "name": "scale", "required": false, "in": "query", "schema": { "enum": [ "minute", "hour", "day", "week", "month", "year", "decade", "all" ], "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/SeriesCountPoint" } } } } } }, "tags": ["Approvals"], "security": [{ "bearer": [] }] } }, "/metrics/approvals/activity/summary/by/approver/{approverId}": { "get": { "operationId": "getApprovalActivitySummaryByApprover", "summary": "Approval activity summary by approver", "description": "Get a hourly summary of approval activity for a given date range by approver", "parameters": [ { "name": "approverId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "startDate", "required": false, "in": "query", "schema": { "format": "date-time", "type": "string" } }, { "name": "endDate", "required": false, "in": "query", "schema": { "format": "date-time", "type": "string" } }, { "name": "timezone", "required": false, "in": "query", "schema": { "type": "string" } }, { "name": "scale", "required": false, "in": "query", "schema": { "enum": [ "minute", "hour", "day", "week", "month", "year", "decade", "all" ], "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/SeriesCountPoint" } } } } } }, "tags": ["Approvals"], "security": [{ "bearer": [] }] } }, "/metrics/approvals/approver/summary": { "get": { "operationId": "getApproverSummary", "summary": "Approver summary", "description": "Get a summary of approvals by approver for a given date range", "parameters": [ { "name": "startDate", "required": false, "in": "query", "schema": { "format": "date-time", "type": "string" } }, { "name": "endDate", "required": false, "in": "query", "schema": { "format": "date-time", "type": "string" } }, { "name": "timezone", "required": false, "in": "query", "schema": { "type": "string" } }, { "name": "scale", "required": false, "in": "query", "schema": { "enum": [ "minute", "hour", "day", "week", "month", "year", "decade", "all" ], "type": "string" } }, { "name": "page", "required": false, "in": "query", "description": "Page number", "schema": { "minimum": 1, "default": 1, "type": "number" } }, { "name": "limit", "required": false, "in": "query", "description": "Page size", "schema": { "minimum": 1, "maximum": 320, "default": 80, "type": "number" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/ApproverSummary" } } } } } }, "tags": ["Approvals"], "security": [{ "bearer": [] }] } }, "/users/head/{id}": { "get": { "operationId": "getUserHead", "summary": "Get user head", "description": "Get user head by user id", "parameters": [ { "name": "id", "required": true, "in": "path", "schema": { "type": "number" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UserHead" } } } } }, "tags": ["Users"], "security": [{ "bearer": [] }] } }, "/metrics/tickets/status/summary": { "get": { "operationId": "getTicketStatusSummary", "summary": "Ticket status summary", "description": "Get ticket status (pending, approved, partial) counts for a given date range", "parameters": [ { "name": "startDate", "required": false, "in": "query", "schema": { "format": "date-time", "type": "string" } }, { "name": "endDate", "required": false, "in": "query", "schema": { "format": "date-time", "type": "string" } }, { "name": "timezone", "required": false, "in": "query", "schema": { "type": "string" } }, { "name": "scale", "required": false, "in": "query", "schema": { "enum": [ "minute", "hour", "day", "week", "month", "year", "decade", "all" ], "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TicketStatusSummary" } } } } }, "tags": ["Tickets"], "security": [{ "bearer": [] }] } }, "/metrics/tickets/type/summary": { "get": { "operationId": "getTicketTypeSummary", "summary": "Ticket type summary", "description": "Get ticket types counts for a given date range", "parameters": [ { "name": "startDate", "required": false, "in": "query", "schema": { "format": "date-time", "type": "string" } }, { "name": "endDate", "required": false, "in": "query", "schema": { "format": "date-time", "type": "string" } }, { "name": "timezone", "required": false, "in": "query", "schema": { "type": "string" } }, { "name": "scale", "required": false, "in": "query", "schema": { "enum": [ "minute", "hour", "day", "week", "month", "year", "decade", "all" ], "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TicketTypeSummary" } } } } }, "tags": ["Tickets"], "security": [{ "bearer": [] }] } }, "/metrics/tickets/type/summary/by/handler/{claimantId}": { "get": { "operationId": "getTicketTypeSummaryByHandler", "summary": "Ticket type summary for a handler", "description": "Get ticket types counts for a given date range for a specific handler", "parameters": [ { "name": "claimantId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "startDate", "required": false, "in": "query", "schema": { "format": "date-time", "type": "string" } }, { "name": "endDate", "required": false, "in": "query", "schema": { "format": "date-time", "type": "string" } }, { "name": "timezone", "required": false, "in": "query", "schema": { "type": "string" } }, { "name": "scale", "required": false, "in": "query", "schema": { "enum": [ "minute", "hour", "day", "week", "month", "year", "decade", "all" ], "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TicketTypeSummary" } } } } }, "tags": ["Tickets"], "security": [{ "bearer": [] }] } }, "/metrics/tickets/open/series": { "get": { "operationId": "getTicketOpenSeries", "summary": "Ticket open series", "description": "Get a time series of open tickets for a given date range", "parameters": [ { "name": "startDate", "required": false, "in": "query", "schema": { "format": "date-time", "type": "string" } }, { "name": "endDate", "required": false, "in": "query", "schema": { "format": "date-time", "type": "string" } }, { "name": "timezone", "required": false, "in": "query", "schema": { "type": "string" } }, { "name": "scale", "required": false, "in": "query", "schema": { "enum": [ "minute", "hour", "day", "week", "month", "year", "decade", "all" ], "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/SeriesCountPoint" } } } } } }, "tags": ["Tickets"], "security": [{ "bearer": [] }] } }, "/metrics/tickets/created/series": { "get": { "operationId": "getTicketCreatedSeries", "summary": "Ticket created series", "description": "Get a time series of created tickets for a given date range", "parameters": [ { "name": "startDate", "required": false, "in": "query", "schema": { "format": "date-time", "type": "string" } }, { "name": "endDate", "required": false, "in": "query", "schema": { "format": "date-time", "type": "string" } }, { "name": "timezone", "required": false, "in": "query", "schema": { "type": "string" } }, { "name": "scale", "required": false, "in": "query", "schema": { "enum": [ "minute", "hour", "day", "week", "month", "year", "decade", "all" ], "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/SeriesCountPoint" } } } } } }, "tags": ["Tickets"], "security": [{ "bearer": [] }] } }, "/metrics/tickets/created/series/by/reporter/{repoterId}": { "get": { "operationId": "getTicketCreatedSeriesByReporter", "summary": "Ticket created series by reporter", "description": "Get a time series of created tickets for a given date range for a specific reporter", "parameters": [ { "name": "repoterId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "startDate", "required": false, "in": "query", "schema": { "format": "date-time", "type": "string" } }, { "name": "endDate", "required": false, "in": "query", "schema": { "format": "date-time", "type": "string" } }, { "name": "timezone", "required": false, "in": "query", "schema": { "type": "string" } }, { "name": "scale", "required": false, "in": "query", "schema": { "enum": [ "minute", "hour", "day", "week", "month", "year", "decade", "all" ], "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/SeriesCountPoint" } } } } } }, "tags": ["Tickets"], "security": [{ "bearer": [] }] } }, "/metrics/tickets/closed/series": { "get": { "operationId": "getTicketClosedSeries", "summary": "Ticket closed series", "description": "Get a time series of closed tickets for a given date range", "parameters": [ { "name": "startDate", "required": false, "in": "query", "schema": { "format": "date-time", "type": "string" } }, { "name": "endDate", "required": false, "in": "query", "schema": { "format": "date-time", "type": "string" } }, { "name": "timezone", "required": false, "in": "query", "schema": { "type": "string" } }, { "name": "scale", "required": false, "in": "query", "schema": { "enum": [ "minute", "hour", "day", "week", "month", "year", "decade", "all" ], "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/SeriesCountPoint" } } } } } }, "tags": ["Tickets"], "security": [{ "bearer": [] }] } }, "/metrics/tickets/closed/series/by/handler/{handlerId}": { "get": { "operationId": "getTicketClosedSeriesByHandler", "summary": "Ticket closed series by handler", "description": "Get a time series of closed tickets for a given date range for a specific handler", "parameters": [ { "name": "handlerId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "startDate", "required": false, "in": "query", "schema": { "format": "date-time", "type": "string" } }, { "name": "endDate", "required": false, "in": "query", "schema": { "format": "date-time", "type": "string" } }, { "name": "timezone", "required": false, "in": "query", "schema": { "type": "string" } }, { "name": "scale", "required": false, "in": "query", "schema": { "enum": [ "minute", "hour", "day", "week", "month", "year", "decade", "all" ], "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/SeriesCountPoint" } } } } } }, "tags": ["Tickets"], "security": [{ "bearer": [] }] } }, "/metrics/tickets/activity/summary": { "get": { "operationId": "getTicketActivitySummary", "summary": "Ticket summary series", "description": "Get a hourly summary of ticket activity for a given date range", "parameters": [ { "name": "startDate", "required": false, "in": "query", "schema": { "format": "date-time", "type": "string" } }, { "name": "endDate", "required": false, "in": "query", "schema": { "format": "date-time", "type": "string" } }, { "name": "timezone", "required": false, "in": "query", "schema": { "type": "string" } }, { "name": "scale", "required": false, "in": "query", "schema": { "enum": [ "minute", "hour", "day", "week", "month", "year", "decade", "all" ], "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/SeriesCountPoint" } } } } } }, "tags": ["Tickets"], "security": [{ "bearer": [] }] } }, "/metrics/tickets/activity/summary/by/handler/{claimantId}": { "get": { "operationId": "getTicketActivitySummaryByHandler", "summary": "Ticket activity summary by handler", "description": "Get a hourly summary of ticket activity for a given date range for a specific handler", "parameters": [ { "name": "claimantId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "startDate", "required": false, "in": "query", "schema": { "format": "date-time", "type": "string" } }, { "name": "endDate", "required": false, "in": "query", "schema": { "format": "date-time", "type": "string" } }, { "name": "timezone", "required": false, "in": "query", "schema": { "type": "string" } }, { "name": "scale", "required": false, "in": "query", "schema": { "enum": [ "minute", "hour", "day", "week", "month", "year", "decade", "all" ], "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/SeriesCountPoint" } } } } } }, "tags": ["Tickets"], "security": [{ "bearer": [] }] } }, "/metrics/tickets/age/series": { "get": { "operationId": "getTicketAgeSeries", "summary": "Ticket age series", "description": "Get a time series of ticket ages for a given date range", "parameters": [ { "name": "startDate", "required": false, "in": "query", "schema": { "format": "date-time", "type": "string" } }, { "name": "endDate", "required": false, "in": "query", "schema": { "format": "date-time", "type": "string" } }, { "name": "timezone", "required": false, "in": "query", "schema": { "type": "string" } }, { "name": "scale", "required": false, "in": "query", "schema": { "enum": [ "minute", "hour", "day", "week", "month", "year", "decade", "all" ], "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/TicketAgeSeriesPoint" } } } } } }, "tags": ["Tickets"], "security": [{ "bearer": [] }] } }, "/metrics/tickets/age/summary": { "get": { "operationId": "getTicketAgeSummary", "summary": "Ticket age summary", "description": "Get a summary of ticket ages for a given date range", "parameters": [ { "name": "startDate", "required": false, "in": "query", "schema": { "format": "date-time", "type": "string" } }, { "name": "endDate", "required": false, "in": "query", "schema": { "format": "date-time", "type": "string" } }, { "name": "timezone", "required": false, "in": "query", "schema": { "type": "string" } }, { "name": "scale", "required": false, "in": "query", "schema": { "enum": [ "minute", "hour", "day", "week", "month", "year", "decade", "all" ], "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TicketAgeSummary" } } } } }, "tags": ["Tickets"], "security": [{ "bearer": [] }] } }, "/metrics/tickets/handler/summary": { "get": { "operationId": "getTicketHandlerSummary", "summary": "Handler summary", "description": "Get a summary of ticket handling counts for a given date range", "parameters": [ { "name": "startDate", "required": false, "in": "query", "schema": { "format": "date-time", "type": "string" } }, { "name": "endDate", "required": false, "in": "query", "schema": { "format": "date-time", "type": "string" } }, { "name": "timezone", "required": false, "in": "query", "schema": { "type": "string" } }, { "name": "scale", "required": false, "in": "query", "schema": { "enum": [ "minute", "hour", "day", "week", "month", "year", "decade", "all" ], "type": "string" } }, { "name": "page", "required": false, "in": "query", "description": "Page number", "schema": { "minimum": 1, "default": 1, "type": "number" } }, { "name": "limit", "required": false, "in": "query", "description": "Page size", "schema": { "minimum": 1, "maximum": 320, "default": 80, "type": "number" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/TicketHandlerSummary" } } } } } }, "tags": ["Tickets"], "security": [{ "bearer": [] }] } }, "/metrics/tickets/reporter/summary": { "get": { "operationId": "getTicketReporterSummary", "summary": "Reporter summary", "description": "Get a summary of ticket reporting counts for a given date range", "parameters": [ { "name": "startDate", "required": false, "in": "query", "schema": { "format": "date-time", "type": "string" } }, { "name": "endDate", "required": false, "in": "query", "schema": { "format": "date-time", "type": "string" } }, { "name": "timezone", "required": false, "in": "query", "schema": { "type": "string" } }, { "name": "scale", "required": false, "in": "query", "schema": { "enum": [ "minute", "hour", "day", "week", "month", "year", "decade", "all" ], "type": "string" } }, { "name": "page", "required": false, "in": "query", "description": "Page number", "schema": { "minimum": 1, "default": 1, "type": "number" } }, { "name": "limit", "required": false, "in": "query", "description": "Page size", "schema": { "minimum": 1, "maximum": 320, "default": 80, "type": "number" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/TicketReporterSummary" } } } } } }, "tags": ["Tickets"], "security": [{ "bearer": [] }] } }, "/metrics/posts/status/summary": { "get": { "operationId": "getPostStatusSummary", "summary": "Post status summary", "description": "Get post status (approved, deleted, permitted) counts for a given date range", "parameters": [ { "name": "startDate", "required": false, "in": "query", "schema": { "format": "date-time", "type": "string" } }, { "name": "endDate", "required": false, "in": "query", "schema": { "format": "date-time", "type": "string" } }, { "name": "timezone", "required": false, "in": "query", "schema": { "type": "string" } }, { "name": "scale", "required": false, "in": "query", "schema": { "enum": [ "minute", "hour", "day", "week", "month", "year", "decade", "all" ], "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PostStatusSummary" } } } } }, "tags": ["Posts"], "security": [{ "bearer": [] }] } }, "/metrics/posts/pending/series": { "get": { "operationId": "getPostPendingSeries", "summary": "Post pending series", "description": "Get post pending series for a given date range", "parameters": [ { "name": "startDate", "required": false, "in": "query", "schema": { "format": "date-time", "type": "string" } }, { "name": "endDate", "required": false, "in": "query", "schema": { "format": "date-time", "type": "string" } }, { "name": "timezone", "required": false, "in": "query", "schema": { "type": "string" } }, { "name": "scale", "required": false, "in": "query", "schema": { "enum": [ "minute", "hour", "day", "week", "month", "year", "decade", "all" ], "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/SeriesCountPoint" } } } } } }, "tags": ["Posts"], "security": [{ "bearer": [] }] } }, "/metrics/deletions/count/series": { "get": { "operationId": "getDeletionCountSeries", "summary": "Post deletion series", "description": "Get a time series of post deletion counts for a given date range", "parameters": [ { "name": "startDate", "required": false, "in": "query", "schema": { "format": "date-time", "type": "string" } }, { "name": "endDate", "required": false, "in": "query", "schema": { "format": "date-time", "type": "string" } }, { "name": "timezone", "required": false, "in": "query", "schema": { "type": "string" } }, { "name": "scale", "required": false, "in": "query", "schema": { "enum": [ "minute", "hour", "day", "week", "month", "year", "decade", "all" ], "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/SeriesCountPoint" } } } } } }, "tags": ["Deletions"], "security": [{ "bearer": [] }] } }, "/metrics/deletions/count/series/by/deleter/{userId}": { "get": { "operationId": "getDeletionSeriesByDeleter", "summary": "Post deletion series by deleter", "description": "Get a time series of post deletion counts for a given date range by deleter", "parameters": [ { "name": "userId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "startDate", "required": false, "in": "query", "schema": { "format": "date-time", "type": "string" } }, { "name": "endDate", "required": false, "in": "query", "schema": { "format": "date-time", "type": "string" } }, { "name": "timezone", "required": false, "in": "query", "schema": { "type": "string" } }, { "name": "scale", "required": false, "in": "query", "schema": { "enum": [ "minute", "hour", "day", "week", "month", "year", "decade", "all" ], "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/SeriesCountPoint" } } } } } }, "tags": ["Deletions"], "security": [{ "bearer": [] }] } }, "/metrics/deletions/activity/summary": { "get": { "operationId": "getDeletionActivitySummary", "summary": "Post deletion activity summary", "description": "Get a hourly summary of post deletion counts for a given date range", "parameters": [ { "name": "startDate", "required": false, "in": "query", "schema": { "format": "date-time", "type": "string" } }, { "name": "endDate", "required": false, "in": "query", "schema": { "format": "date-time", "type": "string" } }, { "name": "timezone", "required": false, "in": "query", "schema": { "type": "string" } }, { "name": "scale", "required": false, "in": "query", "schema": { "enum": [ "minute", "hour", "day", "week", "month", "year", "decade", "all" ], "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/SeriesCountPoint" } } } } } }, "tags": ["Deletions"], "security": [{ "bearer": [] }] } }, "/metrics/deletions/activity/summary/by/deleter/{userId}": { "get": { "operationId": "getDeletionActivitySummaryByDeleter", "summary": "Post deletion activity summary by deleter", "description": "Get a hourly summary of post deletion counts for a given date range by deleter", "parameters": [ { "name": "userId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "startDate", "required": false, "in": "query", "schema": { "format": "date-time", "type": "string" } }, { "name": "endDate", "required": false, "in": "query", "schema": { "format": "date-time", "type": "string" } }, { "name": "timezone", "required": false, "in": "query", "schema": { "type": "string" } }, { "name": "scale", "required": false, "in": "query", "schema": { "enum": [ "minute", "hour", "day", "week", "month", "year", "decade", "all" ], "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/SeriesCountPoint" } } } } } }, "tags": ["Deletions"], "security": [{ "bearer": [] }] } }, "/metrics/feedbacks/type/summary": { "get": { "operationId": "getFeedbackTypeSummary", "summary": "Feedback type summary", "description": "Get feedback types counts for a given date range", "parameters": [ { "name": "startDate", "required": false, "in": "query", "schema": { "format": "date-time", "type": "string" } }, { "name": "endDate", "required": false, "in": "query", "schema": { "format": "date-time", "type": "string" } }, { "name": "timezone", "required": false, "in": "query", "schema": { "type": "string" } }, { "name": "scale", "required": false, "in": "query", "schema": { "enum": [ "minute", "hour", "day", "week", "month", "year", "decade", "all" ], "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/FeedbackTypeSummary" } } } } }, "tags": ["Feedbacks"], "security": [{ "bearer": [] }] } }, "/metrics/feedbacks/count/series": { "get": { "operationId": "getFeedbackCountSeries", "summary": "Feedback count series", "description": "Get a time series of feedback counts for a given date range", "parameters": [ { "name": "startDate", "required": false, "in": "query", "schema": { "format": "date-time", "type": "string" } }, { "name": "endDate", "required": false, "in": "query", "schema": { "format": "date-time", "type": "string" } }, { "name": "timezone", "required": false, "in": "query", "schema": { "type": "string" } }, { "name": "scale", "required": false, "in": "query", "schema": { "enum": [ "minute", "hour", "day", "week", "month", "year", "decade", "all" ], "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/FeedbackCountSeriesPoint" } } } } } }, "tags": ["Feedbacks"], "security": [{ "bearer": [] }] } }, "/metrics/uploads/count": { "get": { "operationId": "getUploadCount", "summary": "Upload series", "description": "Get a time series of upload counts for a given date range", "parameters": [ { "name": "startDate", "required": false, "in": "query", "schema": { "format": "date-time", "type": "string" } }, { "name": "endDate", "required": false, "in": "query", "schema": { "format": "date-time", "type": "string" } }, { "name": "timezone", "required": false, "in": "query", "schema": { "type": "string" } }, { "name": "scale", "required": false, "in": "query", "schema": { "enum": [ "minute", "hour", "day", "week", "month", "year", "decade", "all" ], "type": "string" } }, { "name": "uploaderId", "required": false, "in": "query", "schema": { "type": "number" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/SeriesCountPoint" } } } } } }, "tags": ["Uploads"], "security": [{ "bearer": [] }] } } }, "info": { "title": "5-thirty", "description": "backend data aggregate for 6 o'clock", "version": "0.0.3", "contact": {} }, "tags": [], "servers": [], "components": { "securitySchemes": { "bearer": { "scheme": "bearer", "bearerFormat": "JWT", "type": "http" } }, "schemas": { "UserCredentials": { "type": "object", "properties": { "username": { "type": "string", "minLength": 1 }, "password": { "type": "string", "pattern": "/^[a-zA-Z0-9]{24,32}$/" } }, "required": ["username", "password"] }, "TokenValidation": { "type": "object", "properties": { "token": { "type": "string" } }, "required": ["token"] }, "JobInfo": { "type": "object", "properties": { "id": { "type": "number" }, "title": { "type": "string" }, "key": { "type": "string" }, "startedAt": { "format": "date-time", "type": "string" }, "endedAt": { "format": "date-time", "type": "string" }, "succeeded": { "type": "boolean" }, "cancelled": { "type": "boolean" } }, "required": ["id", "title", "succeeded", "cancelled"] }, "ManifestSlice": { "type": "object", "properties": { "startId": { "type": "number" }, "endId": { "type": "number" }, "available": { "type": "number" }, "unavailable": { "type": "number" }, "none": { "type": "number" } }, "required": ["startId", "endId", "available", "unavailable", "none"] }, "ManifestHealth": { "type": "object", "properties": { "id": { "type": "number" }, "type": { "type": "string", "enum": [ "approvals", "tickets", "posts", "users", "user_profiles", "flags", "feedbacks", "post_versions" ] }, "startDate": { "format": "date-time", "type": "string" }, "endDate": { "format": "date-time", "type": "string" }, "startId": { "type": "number" }, "endId": { "type": "number" }, "count": { "type": "number" }, "slices": { "type": "array", "items": { "$ref": "#/components/schemas/ManifestSlice" } } }, "required": [ "id", "type", "startDate", "endDate", "startId", "endId", "count", "slices" ] }, "DashboardPosition": { "type": "object", "properties": { "i": { "type": "string" }, "x": { "type": "number" }, "y": { "type": "number" }, "w": { "type": "number" }, "h": { "type": "number" } }, "required": ["i", "x", "y", "w", "h"] }, "DashboardPositions": { "type": "object", "properties": { "xs": { "type": "array", "items": { "$ref": "#/components/schemas/DashboardPosition" } }, "sm": { "type": "array", "items": { "$ref": "#/components/schemas/DashboardPosition" } }, "md": { "type": "array", "items": { "$ref": "#/components/schemas/DashboardPosition" } }, "lg": { "type": "array", "items": { "$ref": "#/components/schemas/DashboardPosition" } }, "xl": { "type": "array", "items": { "$ref": "#/components/schemas/DashboardPosition" } } } }, "DashboardConfig": { "type": "object", "properties": { "type": { "type": "string", "enum": ["moderator", "janitor"] }, "userId": { "type": "number" }, "positions": { "$ref": "#/components/schemas/DashboardPositions" }, "meta": { "type": "object" } }, "required": ["type", "userId", "positions", "meta"] }, "DashboardUpdate": { "type": "object", "properties": { "positions": { "$ref": "#/components/schemas/DashboardPositions" }, "meta": { "type": "object" } } }, "Manifest": { "type": "object", "properties": { "id": { "type": "number" }, "startDate": { "format": "date-time", "type": "string" }, "endDate": { "format": "date-time", "type": "string" }, "type": { "enum": [ "approvals", "tickets", "posts", "users", "user_profiles", "flags", "feedbacks", "post_versions" ], "type": "string" }, "lowerId": { "type": "number" }, "upperId": { "type": "number" } }, "required": ["id", "startDate", "endDate", "type", "lowerId", "upperId"] }, "ApprovalCountSummary": { "type": "object", "properties": { "total": { "type": "number" } }, "required": ["total"] }, "SeriesCountPoint": { "type": "object", "properties": { "date": { "format": "date-time", "type": "string" }, "value": { "type": "number" } }, "required": ["date", "value"] }, "UserHead": { "type": "object", "properties": { "id": { "type": "number" }, "name": { "type": "string" }, "avatar": { "type": "string" }, "level": { "type": "string" } }, "required": ["id", "name", "level"] }, "ApproverSummary": { "type": "object", "properties": { "userId": { "type": "number" }, "head": { "$ref": "#/components/schemas/UserHead" }, "total": { "type": "number" }, "position": { "type": "number" }, "days": { "type": "number" } }, "required": ["userId", "total", "position", "days"] }, "TicketStatusSummary": { "type": "object", "properties": { "pending": { "type": "number" }, "approved": { "type": "number" }, "partial": { "type": "number" } }, "required": ["pending", "approved", "partial"] }, "TicketTypeSummary": { "type": "object", "properties": { "user": { "type": "number" }, "comment": { "type": "number" }, "forum": { "type": "number" }, "blip": { "type": "number" }, "wiki": { "type": "number" }, "pool": { "type": "number" }, "set": { "type": "number" }, "post": { "type": "number" }, "dmail": { "type": "number" } }, "required": [ "user", "comment", "forum", "blip", "wiki", "pool", "set", "post", "dmail" ] }, "TicketAgeSeriesPoint": { "type": "object", "properties": { "date": { "format": "date-time", "type": "string" }, "oneDay": { "type": "number" }, "threeDays": { "type": "number" }, "oneWeek": { "type": "number" }, "twoWeeks": { "type": "number" }, "oneMonth": { "type": "number" }, "aboveOneMonth": { "type": "number" } }, "required": [ "date", "oneDay", "threeDays", "oneWeek", "twoWeeks", "oneMonth", "aboveOneMonth" ] }, "TicketAgeSummary": { "type": "object", "properties": { "oneDay": { "type": "number" }, "threeDays": { "type": "number" }, "oneWeek": { "type": "number" }, "twoWeeks": { "type": "number" }, "oneMonth": { "type": "number" }, "aboveOneMonth": { "type": "number" } }, "required": [ "oneDay", "threeDays", "oneWeek", "twoWeeks", "oneMonth", "aboveOneMonth" ] }, "TicketHandlerSummary": { "type": "object", "properties": { "userId": { "type": "number" }, "head": { "$ref": "#/components/schemas/UserHead" }, "total": { "type": "number" }, "position": { "type": "number" }, "days": { "type": "number" } }, "required": ["userId", "total", "position", "days"] }, "TicketReporterSummary": { "type": "object", "properties": { "userId": { "type": "number" }, "head": { "$ref": "#/components/schemas/UserHead" }, "total": { "type": "number" }, "days": { "type": "number" } }, "required": ["userId", "total", "days"] }, "PostStatusSummary": { "type": "object", "properties": { "pending": { "type": "number" }, "approved": { "type": "number" }, "deleted": { "type": "number" }, "permitted": { "type": "number" } }, "required": ["pending", "approved", "deleted", "permitted"] }, "FeedbackTypeSummary": { "type": "object", "properties": { "negative": { "type": "number" }, "neutral": { "type": "number" }, "positive": { "type": "number" } }, "required": ["negative", "neutral", "positive"] }, "FeedbackCountGroup": { "type": "object", "properties": { "negative": { "type": "number" }, "neutral": { "type": "number" }, "positive": { "type": "number" } }, "required": ["negative", "neutral", "positive"] }, "FeedbackCountSeriesPoint": { "type": "object", "properties": { "date": { "format": "date-time", "type": "string" }, "groups": { "$ref": "#/components/schemas/FeedbackCountGroup" } }, "required": ["date", "groups"] } } }, "externalDocs": { "description": "/swagger.json", "url": "/swagger.json" } }