openapi: 3.2.0 info: title: Jans Config Metric API 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: 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 JsonNode: type: object 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' 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 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