openapi: 3.0.1 info: title: Jans Config API - Metric contact: name: Gluu Support url: https://support.gluu.org email: support@gluu.org license: name: Apache 2.0 url: https://github.com/JanssenProject/jans/blob/main/LICENSE version: 1.0.0 servers: - url: https://jans.io/ description: The Jans server tags: - name: Metric paths: /metric/aggregations: get: tags: - Metric summary: Get aggregated metric entries within a time range. description: "Returns a page of jansMetricAggregation entries for an aggregation\ \ period (HOURLY, DAILY, WEEKLY, MONTHLY) within the given date range. The\ \ aggregation producer runs on application nodes as a separate task; until\ \ it is deployed this endpoint returns an empty page." operationId: get-metric-aggregations parameters: - name: aggregationType in: query description: "Aggregation period. One of HOURLY, DAILY, WEEKLY, MONTHLY." required: true schema: type: string - name: appType in: query description: "Application type (jansAppTyp) to narrow the search, for example\ \ jans_auth or fido2." schema: type: string - name: metricType in: query description: Metric type (jansMetricTyp) to narrow the search. schema: type: string - name: subType in: query description: Metric subtype (jansMetricSubTyp) to narrow the search. schema: type: string - name: start_date in: query description: "Start date/time for entries. Accepted format ISO-8601 date-time\ \ (e.g. 2026-08-01T00:00:00Z), ISO-8601 date, or legacy dd-MM-yyyy." required: true schema: type: string - name: end_date in: query description: End date/time for entries. required: true schema: type: string - name: limit in: query description: Maximum number of results to return schema: type: integer format: int32 default: 50 - name: startIndex in: query description: The 0-based index of the first query result schema: type: integer format: int32 default: 0 - name: sortBy in: query description: "Attribute to sort by. One of jansStartDate, jansEndDate, creationDate." schema: type: string default: jansStartDate - name: sortOrder in: query description: Sort order - ascending or descending. schema: type: string default: descending responses: "200": description: Ok content: application/json: schema: $ref: "#/components/schemas/MetricAggregationPagedResult" "400": description: Bad Request "401": description: Unauthorized "500": description: InternalServerError security: - oauth2: - https://jans.io/oauth/config/metric.readonly - oauth2: - https://jans.io/oauth/config/read-all /metric/app-types: get: tags: - Metric summary: Get application types reporting metrics. description: Discovers the distinct application types (jansAppTyp) present in jansMetric data. operationId: get-metric-app-types responses: "200": description: Ok content: application/json: schema: type: array items: type: string "401": description: Unauthorized "500": description: InternalServerError security: - oauth2: - https://jans.io/oauth/config/metric.readonly - oauth2: - https://jans.io/oauth/config/read-all /metric/entries: get: tags: - Metric summary: Get metric entries within a time range. description: "Returns a page of raw jansMetric entries for a metric type (and,\ \ optionally, application type and subtype) within the given date range. When\ \ subType is omitted, both plain and per-subtype rows are returned." operationId: get-metric-entries parameters: - name: metricType in: query description: "Metric type (jansMetricTyp), for example user_authentication_success." required: true schema: type: string - name: appType in: query description: "Application type (jansAppTyp) to narrow the search, for example\ \ jans_auth or fido2." schema: type: string - name: subType in: query description: "Metric subtype (jansMetricSubTyp). When omitted, both plain\ \ and per-subtype rows are returned." schema: type: string - name: start_date in: query description: "Start date/time for entries. Accepted format ISO-8601 date-time\ \ (e.g. 2026-08-01T00:00:00Z), ISO-8601 date, or legacy dd-MM-yyyy." required: true schema: type: string - name: end_date in: query description: End date/time for entries. required: true schema: type: string - name: limit in: query description: Maximum number of results to return schema: type: integer format: int32 default: 50 - name: startIndex in: query description: The 0-based index of the first query result schema: type: integer format: int32 default: 0 - name: sortBy in: query description: "Attribute to sort by. One of jansStartDate, jansEndDate, creationDate." schema: type: string default: jansStartDate - name: sortOrder in: query description: Sort order - ascending or descending. schema: type: string default: descending responses: "200": description: Ok content: application/json: schema: $ref: "#/components/schemas/MetricEntryPagedResult" "400": description: Bad Request "401": description: Unauthorized "500": description: InternalServerError security: - oauth2: - https://jans.io/oauth/config/metric.readonly - oauth2: - https://jans.io/oauth/config/read-all /metric/types: get: tags: - Metric summary: Get metric types reported by applications. description: "Discovers the distinct metric types (jansMetricTyp), and their\ \ subtypes (jansMetricSubTyp) when present, found in jansMetric data - optionally\ \ filtered by application type (jansAppTyp) and narrowed to a date range." operationId: get-metric-types parameters: - name: appType in: query description: "Application type (jansAppTyp) to narrow the search, for example\ \ jans_auth or fido2." schema: type: string - name: start_date in: query description: "Start date/time to narrow the discovery scan. Accepted format\ \ ISO-8601 date-time (e.g. 2026-08-01T00:00:00Z), ISO-8601 date, or legacy\ \ dd-MM-yyyy." schema: type: string - name: end_date in: query description: End date/time to narrow the discovery scan. schema: type: string responses: "200": description: Ok content: application/json: schema: type: array items: $ref: "#/components/schemas/MetricTypeInfo" "400": description: Bad Request "401": description: Unauthorized "500": description: InternalServerError security: - oauth2: - https://jans.io/oauth/config/metric.readonly - oauth2: - https://jans.io/oauth/config/read-all components: schemas: MetricAggregationEntry: type: object properties: dn: type: string id: type: string aggregationType: type: string enum: - HOURLY - DAILY - WEEKLY - MONTHLY startDate: type: string format: date-time endDate: type: string format: date-time applicationType: type: string metricType: type: string metricSubType: type: string data: type: string creationDate: type: string format: date-time nodeIdentifier: type: string expirationDate: type: string format: date-time ttl: type: integer format: int32 deletable: type: boolean MetricAggregationPagedResult: type: object properties: start: type: integer format: int32 totalEntriesCount: type: integer format: int32 entriesCount: type: integer format: int32 entries: type: array items: $ref: "#/components/schemas/MetricAggregationEntry" JsonNode: type: object MetricDataEntry: type: object properties: dn: type: string id: type: string startDate: type: string format: date-time endDate: type: string format: date-time applicationType: type: string metricType: type: string metricSubType: type: string creationDate: type: string format: date-time nodeIdentifier: type: string expirationDate: type: string format: date-time ttl: type: integer format: int32 deletable: type: boolean data: $ref: "#/components/schemas/JsonNode" MetricEntryPagedResult: type: object properties: start: type: integer format: int32 totalEntriesCount: type: integer format: int32 entriesCount: type: integer format: int32 entries: type: array items: $ref: "#/components/schemas/MetricDataEntry" MetricTypeInfo: type: object properties: appType: type: string metricType: type: string subTypes: uniqueItems: true type: array items: type: string securitySchemes: oauth2: type: oauth2 flows: clientCredentials: tokenUrl: "https://{op-hostname}/.../token" scopes: https://jans.io/oauth/config/metric.readonly: View metric related information https://jans.io/oauth/config/read-all: Super admin for viewing application resource information