From d1f62263ef47552260852da981b3dacefff215cd Mon Sep 17 00:00:00 2001 From: Sebastien Blot Date: Fri, 2 Feb 2024 10:08:34 +0100 Subject: [PATCH] add /usage-metrics endpoint definition --- pkg/models/localapi_swagger.yaml | 162 +++++++++++++++++++++++++++++++ 1 file changed, 162 insertions(+) diff --git a/pkg/models/localapi_swagger.yaml b/pkg/models/localapi_swagger.yaml index 66132e5e3..528463e45 100644 --- a/pkg/models/localapi_swagger.yaml +++ b/pkg/models/localapi_swagger.yaml @@ -684,6 +684,36 @@ paths: $ref: "#/definitions/ErrorResponse" security: - JWTAuthorizer: [] + /usage-metrics: + post: + description: Post usage metrics from a LP or a bouncer + summary: Send usage metrics + tags: + - bouncers + - watchers + operationId: usage-metrics + produces: + - application/json + parameters: + - name: body + in: body + required: true + schema: + $ref: '#/definitions/AllMetrics' + description: 'All metrics' + responses: + '200': + description: successful operation + schema: + $ref: '#/definitions/SuccessResponse' + headers: {} + '400': + description: "400 response" + schema: + $ref: "#/definitions/ErrorResponse" + security: + - APIKeyAuthorizer: [] + - JWTAuthorizer: [] definitions: WatcherRegistrationRequest: title: WatcherRegistrationRequest @@ -994,6 +1024,128 @@ definitions: type: string value: type: string + RemediationComponentsMetrics: + title: RemediationComponentsMetrics + type: array + maxItems: 1 + items: + allOf: + - $ref: '#/definitions/BaseMetrics' + - type: object + properties: + type: + type: string + description: type of the remediation component + LogProcessorsMetrics: + title: LogProcessorsMetrics + type: array + maxItems: 1 + items: + allOf: + - $ref: '#/definitions/BaseMetrics' + - type: object + properties: + console_options: + $ref: '#/definitions/ConsoleOptions' + datasources: + type: object + description: Number of datasources per type + additionalProperties: + type: integer + AllMetrics: + title: AllMetrics + type: object + properties: + remediation_components: + type: array + items: + $ref: '#/definitions/RemediationComponentsMetrics' + description: remediation components metrics + log_processors: + type: array + items: + $ref: '#/definitions/LogProcessorsMetrics' + description: log processors metrics + BaseMetrics: + title: BaseMetrics + type: object + properties: + version: + type: string + description: version of the remediation component + meta: + type: object + $ref: '#/definitions/MetricsMeta' + description: metrics meta + os: + type: object + $ref: '#/definitions/OSversion' + description: OS information + metrics: + type: array + items: + $ref: '#/definitions/MetricsDetailItem' + description: metrics details + feature_flags: + type: array + items: + type: string + description: feature flags (expected to be empty for remediation components) + required: + - version + - os + - meta + OSversion: + title: OSversion + type: object + properties: + name: + type: string + description: name of the OS + version: + type: string + description: version of the OS + MetricsDetailItem: + title: MetricsDetailItem + type: object + properties: + name: + type: string + description: name of the metric + value: + type: number + description: value of the metric + unit: + type: string + description: unit of the metric + labels: + $ref: '#/definitions/MetricsLabels' + description: labels of the metric + MetricsMeta: + title: MetricsMeta + type: object + properties: + window_size_seconds: + type: integer + description: Size, in seconds, of the window used to compute the metric + utc_startup_timestamp: + type: number + description: UTC timestamp of the startup of the software + utc_now_timestamp: + type: number + description: UTC timestamp of the current time + MetricsLabels: + title: MetricsLabels + type: object + additionalProperties: + type: string + description: label of the metric + ConsoleOptions: + title: ConsoleOptions + type: array + items: + type: string + description: enabled console options ErrorResponse: type: "object" required: @@ -1007,6 +1159,16 @@ definitions: description: "more detail on individual errors" title: "error response" description: "error response return by the API" + SuccessResponse: + type: "object" + required: + - "message" + properties: + message: + type: "string" + description: "message" + title: "success response" + description: "success response return by the API" tags: - name: bouncers description: 'Operations about decisions : bans, captcha, rate-limit etc.'