Janssen Lock API

Jans Lock is the enterprise authorization control plane for the Cedarling PDP — it centralises Cedar policy distribution and collects audit logs, health entries and telemetry from every embedded PDP. 12 operations across 11 paths, including a /.well-known/lock-server-configuration discovery document.

Operations 12

GET /api/v1/configuration Request .well-known data #
GET /.well-known/lock-server-configuration Request .well-known data #
POST /api/v1/audit/health/bulk Bulk save health data #
POST /api/v1/audit/log/bulk Bulk save log data #
POST /api/v1/audit/telemetry/bulk Bulk save telemetry data #
POST /api/v1/audit/health Save health data #
POST /api/v1/audit/log Save log data #
POST /api/v1/audit/telemetry Save telemetry data #
GET /api/v1/policy Request policies URI list #
GET /api/v1/policy/{uri} Request policy data #
GET /api/v1/internal/stat Request stat data #
POST /api/v1/internal/stat Request stat data #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/jans-lock-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

gluu-jans-lock-server-openapi.yml Raw ↑
openapi: 3.0.1
info:
  title: Jans Lock API
  contact:
    name: Contact
    url: https://github.com/JanssenProject/jans/discussions
  license:
    name: License
    url: https://github.com/JanssenProject/jans/blob/main/LICENSE
  version: OAS Version
servers:
- url: https://jans.local.io
  description: The Jans server
tags:
- name: Lock - Server Configuration
- name: Lock - Stat
- name: Lock - Audit Health
- name: Lock - Audit Log
- name: Lock - Audit Telemetry
paths:
  /api/v1/configuration:
    get:
      tags:
      - Lock - Server Configuration
      summary: Request .well-known data
      description: Request .well-know Lock server configuration
      operationId: getConfiguration
      responses:
        "200":
          description: Ok
          content:
            application/json:
              schema:
                type: string
        "500":
          description: InternalServerError
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/LockApiError"
  /.well-known/lock-server-configuration:
    get:
      tags:
      - Lock - Server Configuration
      summary: Request .well-known data
      description: Request .well-know Lock server configuration
      operationId: doGet
      responses:
        "200":
          description: Ok
          content:
            application/json:
              schema:
                type: string
        "500":
          description: InternalServerError
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/LockApiError"
  /api/v1/audit/health/bulk:
    post:
      tags:
      - Lock - Audit Health
      summary: Bulk save health data
      description: Bulk save health data
      operationId: processBulkHealthRequest
      requestBody:
        description: Bulk health entry
        content:
          application/json:
            schema:
              type: array
              items:
                $ref: "#/components/schemas/HealthEntry"
      responses:
        "200":
          description: Ok
        "400":
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/LockApiError"
        "401":
          description: Unauthorized
        "404":
          description: Not Found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/LockApiError"
        "500":
          description: InternalServerError
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/LockApiError"
      security:
      - oauth2:
        - https://jans.io/oauth/lock/health.write
  /api/v1/audit/log/bulk:
    post:
      tags:
      - Lock - Audit Log
      summary: Bulk save log data
      description: Bulk save log data
      operationId: processBulkLogRequest
      requestBody:
        description: Bulk log entry
        content:
          application/json:
            schema:
              type: array
              items:
                $ref: "#/components/schemas/LogEntry"
      responses:
        "200":
          description: Ok
        "400":
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/LockApiError"
        "401":
          description: Unauthorized
        "404":
          description: Not Found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/LockApiError"
        "500":
          description: InternalServerError
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/LockApiError"
      security:
      - oauth2:
        - https://jans.io/oauth/lock/log.write
  /api/v1/audit/telemetry/bulk:
    post:
      tags:
      - Lock - Audit Telemetry
      summary: Bulk save telemetry data
      description: Bulk save telemetry data
      operationId: processBulkTelemetryRequest
      requestBody:
        description: Bulk telemetry entry
        content:
          application/json:
            schema:
              type: array
              items:
                $ref: "#/components/schemas/TelemetryEntry"
      responses:
        "200":
          description: Ok
        "400":
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/LockApiError"
        "401":
          description: Unauthorized
        "404":
          description: Not Found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/LockApiError"
        "500":
          description: InternalServerError
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/LockApiError"
      security:
      - oauth2:
        - https://jans.io/oauth/lock/telemetry.write
  /api/v1/audit/health:
    post:
      tags:
      - Lock - Audit Health
      summary: Save health data
      description: Save health data
      operationId: processHealthRequest
      requestBody:
        description: Health entry
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/HealthEntry"
      responses:
        "200":
          description: Ok
        "400":
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/LockApiError"
        "401":
          description: Unauthorized
        "404":
          description: Not Found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/LockApiError"
        "500":
          description: InternalServerError
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/LockApiError"
      security:
      - oauth2:
        - https://jans.io/oauth/lock/health.write
  /api/v1/audit/log:
    post:
      tags:
      - Lock - Audit Log
      summary: Save log data
      description: Save log data
      operationId: processLogRequest
      requestBody:
        description: Log entry
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/LogEntry"
      responses:
        "200":
          description: Ok
        "400":
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/LockApiError"
        "401":
          description: Unauthorized
        "404":
          description: Not Found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/LockApiError"
        "500":
          description: InternalServerError
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/LockApiError"
      security:
      - oauth2:
        - https://jans.io/oauth/lock/log.write
  /api/v1/audit/telemetry:
    post:
      tags:
      - Lock - Audit Telemetry
      summary: Save telemetry data
      description: Save telemetry data
      operationId: processTelemetryRequest
      requestBody:
        description: Telemetry entry
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/TelemetryEntry"
      responses:
        "200":
          description: Ok
        "400":
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/LockApiError"
        "401":
          description: Unauthorized
        "404":
          description: Not Found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/LockApiError"
        "500":
          description: InternalServerError
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/LockApiError"
      security:
      - oauth2:
        - https://jans.io/oauth/lock/telemetry.write
  /api/v1/policy:
    get:
      tags:
      - Lock - Policy
      summary: Request policies URI list
      description: Request policies URI list
      operationId: getPoliciesUriList
      responses:
        "200":
          description: Ok
          content:
            application/json:
              schema:
                type: string
        "400":
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/LockApiError"
        "401":
          description: Unauthorized
        "404":
          description: Not Found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/LockApiError"
        "500":
          description: InternalServerError
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/LockApiError"
      security:
      - oauth2:
        - https://jans.io/oauth/lock/policy.readonly
  /api/v1/policy/{uri}:
    get:
      tags:
      - Lock - Policy
      summary: Request policy data
      description: Request policy data
      operationId: getPolicyByUri
      parameters:
      - name: uri
        in: path
        description: Policy URI
        required: true
        schema:
          type: string
      responses:
        "200":
          description: Ok
          content:
            application/json:
              schema:
                type: string
        "400":
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/LockApiError"
        "401":
          description: Unauthorized
        "404":
          description: Not Found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/LockApiError"
        "500":
          description: InternalServerError
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/LockApiError"
      security:
      - oauth2:
        - https://jans.io/oauth/lock/policy.readonly
  /api/v1/internal/stat:
    get:
      tags:
      - Lock - Stat
      summary: Request stat data
      description: Request stat data
      operationId: statGet
      parameters:
      - name: month
        in: query
        schema:
          type: string
      - name: start-month
        in: query
        schema:
          type: string
      - name: end-month
        in: query
        schema:
          type: string
      - name: format
        in: query
        schema:
          type: string
      responses:
        "200":
          description: Ok
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/FlatStatResponse"
        "400":
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/LockApiError"
        "401":
          description: Unauthorized
        "403":
          description: Future stat is disabled on server
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/LockApiError"
        "404":
          description: Not Found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/LockApiError"
        "500":
          description: InternalServerError
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/LockApiError"
      security:
      - oauth2:
        - https://jans.io/oauth/lock/stat.readonly
    post:
      tags:
      - Lock - Stat
      summary: Request stat data
      description: Request stat data
      operationId: statPost
      requestBody:
        content:
          '*/*':
            schema:
              type: object
              properties:
                month:
                  type: string
                start-month:
                  type: string
                end-month:
                  type: string
                format:
                  type: string
      responses:
        "200":
          description: Ok
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/FlatStatResponse"
        "400":
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/LockApiError"
        "401":
          description: Unauthorized
        "403":
          description: Future stat is disabled on server
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/LockApiError"
        "404":
          description: Not Found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/LockApiError"
        "500":
          description: InternalServerError
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/LockApiError"
      security:
      - oauth2:
        - https://jans.io/oauth/lock/stat.readonly
components:
  schemas:
    LockApiError:
      type: object
      properties:
        code:
          type: string
        message:
          type: string
        description:
          type: string
    HealthEntry:
      type: object
      properties:
        dn:
          type: string
        baseDn:
          type: string
        inum:
          type: string
        creationDate:
          type: string
          description: Creation date of the entry
          format: date-time
          example: 2026-07-24T15:33:06.875Z
        eventTime:
          type: string
          description: Time when the event occurred
          format: date-time
          example: 2026-07-24T15:33:06.875Z
        service:
          type: string
          description: Service name
          example: Lock Server
        nodeName:
          type: string
          description: Node name or identifier
          example: 04bbe9ef-a853-417c-a2b8-5328b62936e2
        status:
          type: string
          description: Health status
          example: running
        engineStatus:
          type: object
          additionalProperties:
            type: string
      description: Health audit entry
    LogEntry:
      type: object
      properties:
        dn:
          type: string
        baseDn:
          type: string
        inum:
          type: string
        creationDate:
          type: string
          description: Creation date of the entry
          format: date-time
          example: 2026-07-24T15:33:02.937Z
        eventTime:
          type: string
          description: Time when the event occurred
          format: date-time
          example: 2026-07-24T15:33:02.937Z
        service:
          type: string
          description: Service name
          example: Lock Server
        nodeName:
          type: string
          description: Node name or identifier
          example: 04bbe9ef-a853-417c-a2b8-5328b62936e2
        eventType:
          type: string
          description: Type of event
          example: Decision
        severityLevel:
          type: string
          description: Severity level
          example: warning
          enum:
          - info
          - warning
          - error
          - critical
        action:
          type: string
          description: Action performed
          example: Jans::Action::"POST"
        decisionResult:
          type: string
          description: Decision result
          example: ALLOW
          enum:
          - ALLOW
          - DENY
        requestedResource:
          type: string
          description: Requested resource identifier
          example: Jans::HTTP_Request::"lock_audit_log_write"
        principalId:
          type: string
          description: Principal (user) identifier
          example: ACC0001
        clientId:
          type: string
          description: Client identifier
          example: CLI001
        jti:
          type: string
          description: JWT ID - unique identifier for the token
          example: 550e8400-e29b-41d4-a716-446655440000
        contextInformation:
          type: object
          additionalProperties:
            type: string
            description: Additional context information as key-value pairs
          description: Additional context information as key-value pairs
      description: Log audit entry
    TelemetryEntry:
      type: object
      properties:
        dn:
          type: string
        baseDn:
          type: string
        inum:
          type: string
        creationDate:
          type: string
          description: Creation date of the entry
          format: date-time
          example: 2026-07-24T15:33:06.872Z
        service:
          type: string
          description: Service name
          example: Lock Server
        nodeName:
          type: string
          description: Node name or identifier
          example: 04bbe9ef-a853-417c-a2b8-5328b62936e2
        status:
          type: string
          description: Service status
          example: running
        policyStats:
          type: object
          additionalProperties:
            type: integer
            description: Per-policy evaluation counters as key-value pairs
            format: int64
          description: Per-policy evaluation counters as key-value pairs
        errorCounters:
          type: object
          additionalProperties:
            type: integer
            description: Error counters broken down by error type
            format: int64
          description: Error counters broken down by error type
        operationalStats:
          type: object
          additionalProperties:
            type: integer
            description: "Operational statistics (requests, decisions, eval times)\
              \ as key-value pairs"
            format: int64
          description: "Operational statistics (requests, decisions, eval times) as\
            \ key-value pairs"
        intervalSecs:
          type: integer
          description: Telemetry collection interval in seconds
          format: int64
          example: 5
      description: Telemetry audit entry
    FlatStatResponse:
      type: object
      properties:
        response:
          type: array
          items:
            $ref: "#/components/schemas/StatResponseItem"
    StatResponseItem:
      type: object
      properties:
        month:
          type: string
        monthly_active_users:
          type: integer
          format: int64
        monthly_active_clients:
          type: integer
          format: int64
        operations_by_type:
          type: object
          additionalProperties:
            type: object
            additionalProperties:
              type: integer
              format: int64
  securitySchemes:
    oauth2:
      type: oauth2
      flows:
        clientCredentials:
          tokenUrl: "https://{op-hostname}/.../token"
          scopes:
            https://jans.io/oauth/lock/policy.readonly: View policy related information
            https://jans.io/oauth/lock/health.write: Write audit health entries
            https://jans.io/oauth/lock/log.write: Write audit log entries
            https://jans.io/oauth/lock/telemetry.write: Write telemetry health entries
            https://jans.io/oauth/lock/stat.readonly: View stat related information