Every API here is available over the APIs.io API and to AI agents over MCP.
openapi: 3.0.1
info:
title: Jans Config 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: Attribute
- name: Default Authentication Method
- name: Cache Configuration
- name: Cache Configuration – Memcached
- name: Cache Configuration – Redis
- name: Cache Configuration – in-Memory
- name: Cache Configuration – Native-Persistence
- name: Configuration – Properties
- name: Configuration – SMTP
- name: Configuration – Logging
- name: Configuration – JWK - JSON Web Key (JWK)
- name: Custom Scripts
- name: Database - LDAP configuration
- name: OAuth - OpenID Connect - Clients
- name: OAuth - UMA Resources
- name: OAuth - Scopes
- name: Agama - Configuration
- name: Agama
- name: Statistics - User
- name: Health - Check
- name: Server Stats
- name: Auth - Session Management
- name: Organization Configuration
- name: Auth Server Health - Check
- name: Plugins
- name: Configuration – Config API
- name: Client Authorization
- name: Jans Assets
- name: Token
- name: Logs
- name: Database
- name: Software Statement Assertion (SSA)
paths:
/api/v1/health/app-version:
get:
tags:
- Health - Check
summary: Returns application version
description: Returns application version
operationId: get-app-version
parameters:
- name: artifact
in: query
description: artifact name for which version is requied else ALL
schema:
type: string
default: all
responses:
"200":
description: Ok
content:
application/json:
schema:
$ref: "#/components/schemas/JsonNode"
"500":
description: InternalServerError
security:
- oauth2:
- https://jans.io/oauth/config/app-version.readonly
- oauth2:
- https://jans.io/oauth/config/health.admin
- oauth2:
- https://jans.io/oauth/config/read-all
/api/v1/health:
get:
tags:
- Health - Check
summary: Returns application health status
description: Returns application health status
operationId: get-config-health
responses:
"200":
description: Ok
content:
application/json:
schema:
type: array
items:
$ref: "#/components/schemas/HealthStatus"
"500":
description: InternalServerError
/api/v1/health/live:
get:
tags:
- Health - Check
summary: Returns application liveness status
description: Returns application liveness status
operationId: get-config-health-live
responses:
"200":
description: Ok
content:
application/json:
schema:
$ref: "#/components/schemas/Status"
"500":
description: InternalServerError
/api/v1/health/ready:
get:
tags:
- Health - Check
summary: Returns application readiness status
description: Returns application readiness status
operationId: get-config-health-ready
responses:
"200":
description: Ok
content:
application/json:
schema:
$ref: "#/components/schemas/Status"
"500":
description: InternalServerError
/api/v1/health/server-stat:
get:
tags:
- Health - Check
summary: Returns application server status
description: Returns application server status
operationId: get-server-stat
responses:
"200":
description: Ok
content:
application/json:
schema:
$ref: "#/components/schemas/StatsData"
examples:
Response json example:
description: Response json example
value: |
{
"dbType": "sql",
"lastUpdate": "2024-11-01T12:11:01",
"facterData": {
"memoryfree": "39.7%",
"swapfree": "0.0%",
"hostname": "pujavs-amazed-rat.gluu.info",
"ipaddress": "167.99.13.66",
"uptime": "1 day, 3:54",
"free_disk_space": "95.4%",
"load_average": "0.13623046875"
}
}
"500":
description: InternalServerError
/api/v1/health/service-status:
get:
tags:
- Health - Check
summary: Fetch service status
description: Fetch service status
operationId: get-service-status
parameters:
- name: service
in: query
description: Service name to check status
schema:
type: string
default: all
responses:
"200":
description: Ok
content:
application/json:
schema:
$ref: "#/components/schemas/JsonNode"
examples:
Response json example:
description: Response json example
value: |
{
"jans-auth": "Running",
"jans-config-api": "Down",
"jans-casa": "Not present",
"jans-fido2": "Running",
"jans-scim": "Running",
"jans-link": "Running",
"jans-lock": "Running"
}
"500":
description: InternalServerError
security:
- oauth2:
- https://jans.io/oauth/config/data.readonly
- oauth2:
- https://jans.io/oauth/config/health.admin
- oauth2:
- https://jans.io/oauth/config/read-all
/api/v1/acrs:
get:
tags:
- Default Authentication Method
summary: Gets default authentication method.
description: Gets default authentication method.
operationId: get-acrs
responses:
"200":
description: Ok
content:
application/json:
schema:
$ref: "#/components/schemas/AuthenticationMethod"
examples:
Response example:
description: Response example
value: |
{
"defaultAcr": "basic"
}
"401":
description: Unauthorized
"500":
description: InternalServerError
security:
- oauth2:
- https://jans.io/oauth/config/acrs.readonly
- oauth2:
- https://jans.io/oauth/config/acrs.write
- oauth2:
- https://jans.io/oauth/config/acrs.admin
- oauth2:
- https://jans.io/oauth/config/read-all
- oauth2:
- https://jans.io/oauth/config/write-all
put:
tags:
- Default Authentication Method
summary: Updates default authentication method.
description: Updates default authentication method.
operationId: put-acrs
requestBody:
description: String representing patch-document.
content:
application/json:
schema:
$ref: "#/components/schemas/AuthenticationMethod"
examples:
Request json example:
description: Request json example
value: |
{
"defaultAcr": "basic"
}
responses:
"200":
description: Ok
content:
application/json:
schema:
$ref: "#/components/schemas/AuthenticationMethod"
"400":
description: Bad Request
content:
application/json:
schema:
$ref: "#/components/schemas/ApiError"
"401":
description: Unauthorized
content:
application/json:
schema:
$ref: "#/components/schemas/ApiError"
"500":
description: InternalServerError
content:
application/json:
schema:
$ref: "#/components/schemas/ApiError"
security:
- oauth2:
- https://jans.io/oauth/config/acrs.write
- oauth2:
- https://jans.io/oauth/config/acrs.admin
- oauth2:
- https://jans.io/oauth/config/write-all
/api/v1/agama-deployment/{name}:
get:
tags:
- Agama
summary: Retrieve details of a single deployment by name.
description: Retrieve details of a single deployment by name.
operationId: get-agama-prj-by-name
parameters:
- name: name
in: path
description: Agama project name
required: true
schema:
type: string
responses:
"200":
description: Agama project
content:
application/json:
schema:
$ref: "#/components/schemas/Deployment"
examples:
Response json example:
description: Response json example
value: ""
"204":
description: No Content
"401":
description: Unauthorized
"404":
description: Not Found
"500":
description: InternalServerError
security:
- oauth2:
- https://jans.io/oauth/config/agama.readonly
- oauth2:
- https://jans.io/oauth/config/agama.write
- oauth2:
- https://jans.io/oauth/config/agama.admin
- oauth2:
- https://jans.io/oauth/config/read-all
- oauth2:
- https://jans.io/oauth/config/write-all
post:
tags:
- Agama
summary: Add or replace an Agama project to the server.
description: Add or replace an Agama project to the server.
operationId: post-agama-prj
parameters:
- name: name
in: path
description: Agama project name
required: true
schema:
type: string
- name: autoconfigure
in: query
description: 'Boolean value to indicating to auto configure the project '
schema:
type: string
requestBody:
description: Agama gama file
content:
application/zip:
schema:
type: string
format: byte
responses:
"202":
description: Agama project accepted
content:
application/zip:
schema:
type: string
examples:
Response json example:
description: Response json example
value: ""
"400":
description: Bad Request
"401":
description: Unauthorized
"409":
description: Conflict
"500":
description: InternalServerError
security:
- oauth2:
- https://jans.io/oauth/config/agama.write
- oauth2:
- https://jans.io/oauth/config/agama.admin
- oauth2:
- https://jans.io/oauth/config/write-all
delete:
tags:
- Agama
summary: Undeploy an Agama project from the server.
description: Undeploy an Agama project from the server.
operationId: delete-agama-prj
parameters:
- name: name
in: path
description: Agama project name
required: true
schema:
type: string
responses:
"204":
description: No Content
"401":
description: Unauthorized
"404":
description: Not Found
"409":
description: Conflict
"500":
description: InternalServerError
security:
- oauth2:
- https://jans.io/oauth/config/agama.delete
- oauth2:
- https://jans.io/oauth/config/agama.admin
- oauth2:
- https://jans.io/oauth/config/delete-all
/api/v1/agama-deployment/configs/{name}:
get:
tags:
- Agama
summary: Retrieve the configurations associated to flows that belong to the
project of interest. The project must have been already processed fully.
description: Retrieve the configurations associated to flows that belong to
the project of interest. The project must have been already processed fully.
operationId: get-agama-prj-configs
parameters:
- name: name
in: path
description: Agama project name
required: true
schema:
type: string
responses:
"200":
description: Agama projects configs
content:
application/json:
schema:
type: string
examples:
Response json example:
description: Response json example
value: ""
"401":
description: Unauthorized
"500":
description: InternalServerError
security:
- oauth2:
- https://jans.io/oauth/config/agama.readonly
- oauth2:
- https://jans.io/oauth/config/agama.write
- oauth2:
- https://jans.io/oauth/config/agama.admin
- oauth2:
- https://jans.io/oauth/config/read-all
- oauth2:
- https://jans.io/oauth/config/write-all
put:
tags:
- Agama
summary: Set or replace the configurations associated to flows that belong to
the project. The project must have been already processed fully.
description: Set or replace the configurations associated to flows that belong
to the project. The project must have been already processed fully.
operationId: put-agama-prj
parameters:
- name: name
in: path
description: Agama project name
required: true
schema:
type: string
requestBody:
description: 'JSON object with configurations associated to flows '
content:
application/json:
schema:
type: string
examples:
Request example:
description: Request example
value: |
{
"org.gluu.agama.ldap.pw.main": {
"lockConfig": {
"MAX_LOGIN_ATTEMPT": 6,
"ENABLE_LOCK": true,
"LOCK_EXP_TIME": 180
},
"useInternalLdapConfig": false,
"serversConfig": [
{
"configId": "ad_1",
"bindDN": "cn=directory manager",
"bindPassword": "encoded_password/plain_passowrd",
"servers": [
"localhost:1389"
],
"maxConnections": 3,
"useSSL": false,
"baseDNs": [
"ou=people,o=jans"
],
"loginAttributes": [
"uid"
],
"localLoginAttributes": [
"uid"
]
}
]
}
}
responses:
"200":
description: JSON object with properties values correspond to a boolean
indicating the success of the update for the given flow.
content:
application/json:
schema:
type: string
examples:
Response json example:
description: Response json example
value: |
{"org.gluu.agama.ldap.pw.main"=true}
"400":
description: Bad Request
"401":
description: Unauthorized
"409":
description: Conflict
"500":
description: InternalServerError
security:
- oauth2:
- https://jans.io/oauth/config/agama.write
- oauth2:
- https://jans.io/oauth/config/agama.admin
- oauth2:
- https://jans.io/oauth/config/write-all
/api/v1/agama-deployment:
get:
tags:
- Agama
summary: Retrieve the list of projects deployed currently.
description: Retrieve the list of projects deployed currently.
operationId: get-agama-prj
parameters:
- name: start
in: query
description: Start index for the result
schema:
type: integer
format: int32
- name: count
in: query
description: Search size - count of the results to return
schema:
type: integer
format: int32
responses:
"200":
description: Agama projects
content:
application/json:
schema:
$ref: "#/components/schemas/PagedResult"
examples:
Response json example:
description: Response json example
value: ""
"401":
description: Unauthorized
"500":
description: InternalServerError
security:
- oauth2:
- https://jans.io/oauth/config/agama.readonly
- oauth2:
- https://jans.io/oauth/config/agama.write
- oauth2:
- https://jans.io/oauth/config/agama.admin
- oauth2:
- https://jans.io/oauth/config/read-all
- oauth2:
- https://jans.io/oauth/config/write-all
/api/v1/agama-repo/download:
get:
tags:
- Agama
summary: Download agama project.
description: Download agama project.
operationId: get-agama-project
parameters:
- name: downloadLink
in: query
description: Agama project download Link
schema:
type: string
responses:
"200":
description: Agama project
content:
text/plain:
schema:
type: string
format: binary
"204":
description: No Content
"400":
description: Bad Request
"401":
description: Unauthorized
"404":
description: Not Found
"500":
description: InternalServerError
security:
- oauth2:
- https://jans.io/oauth/config/agama-repo.readonly
- oauth2:
- https://jans.io/oauth/config/agama-repo.write
- oauth2:
- https://jans.io/oauth/config/agama.admin
- oauth2:
- https://jans.io/oauth/config/read-all
- oauth2:
- https://jans.io/oauth/config/write-all
/api/v1/agama-repo:
get:
tags:
- Agama
summary: Gets all agama repositories.
description: Gets all agama repositories.
operationId: get-agama-repositories
responses:
"200":
description: Agama repositories
content:
application/json:
schema:
$ref: "#/components/schemas/JsonNode"
examples:
Response json example:
description: Response json example
value: ""
"204":
description: No Content
"401":
description: Unauthorized
"404":
description: Not Found
"500":
description: InternalServerError
security:
- oauth2:
- https://jans.io/oauth/config/agama-repo.readonly
- oauth2:
- https://jans.io/oauth/config/agama-repo.write
- oauth2:
- https://jans.io/oauth/config/agama.admin
- oauth2:
- https://jans.io/oauth/config/read-all
- oauth2:
- https://jans.io/oauth/config/write-all
/api/v1/agama/syntax-check/{qname}:
post:
tags:
- Agama - Configuration
summary: Determine if the text passed is valid Agama code
description: Determine if the text passed is valid Agama code
operationId: agama-syntax-check
parameters:
- name: qname
in: path
description: Agama Flow name
required: true
schema:
type: string
requestBody:
content:
text/plain:
schema:
type: string
responses:
"200":
description: Agama Syntax Check message
content:
application/json:
schema:
type: string
"401":
description: Unauthorized
"500":
description: InternalServerError
security:
- oauth2:
- https://jans.io/oauth/config/agama.readonly
- oauth2:
- https://jans.io/oauth/config/agama.write
- oauth2:
- https://jans.io/oauth/config/agama.admin
- oauth2:
- https://jans.io/oauth/config/read-all
- oauth2:
- https://jans.io/oauth/config/write-all
/api/v1/jans-assets/{inum}:
get:
tags:
- Jans Assets
summary: Gets an asset by inum - unique identifier
description: Gets an asset by inum - unique identifier
operationId: get-asset-by-inum
parameters:
- name: inum
in: path
description: Asset Inum
required: true
schema:
type: string
responses:
"200":
description: Ok
content:
application/json:
schema:
$ref: "#/components/schemas/PagedResult"
examples:
Response example:
description: Response example
value: |
{
"dn": "inum=0b436302-b729-4eb2-b211-335980dcab43,ou=document,o=jans",
"selected": false,
"inum": "0b436302-b729-4eb2-b211-335980dcab43",
"displayName": "mermaid-extra.css",
"description": "/opt/jans/jetty/jans-config-api/",
"document": ".mermaid {\r\n\toverflow: auto;\r\n}\r\n\r\n.mermaid svg {\r\n\twidth: 1315px;\r\n\theight: 600px;\r\n}\r\n",
"jansModuleProperty": [
"config-api",
"jar",
"/opt/jans/jetty/jans-config-api/custom/lib"
],
"jansLevel": "1",
"jansRevision": "2",
"jansEnabled": true,
"baseDn": "inum=0b436302-b729-4eb2-b211-335980dcab43,ou=document,o=jans"
}
"401":
description: Unauthorized
"404":
description: Not Found
content:
application/json:
schema:
$ref: "#/components/schemas/ApiError"
"500":
description: InternalServerError
content:
application/json:
schema:
$ref: "#/components/schemas/ApiError"
security:
- oauth2:
- https://jans.io/oauth/config/asset.readonly
- oauth2:
- https://jans.io/oauth/config/asset.write
- oauth2:
- https://jans.io/oauth/config/asset.admin
- oauth2:
- https://jans.io/oauth/config/read-all
- oauth2:
- https://jans.io/oauth/config/write-all
delete:
tags:
- Jans Assets
summary: Delete an asset
description: Delete an asset
operationId: delete-asset
parameters:
- name: inum
in: path
description: Asset identifier
required: true
schema:
type: string
responses:
"204":
description: No Content
"400":
description: Bad Request
content:
application/json:
schema:
$ref: "#/components/schemas/ApiError"
"401":
description: Unauthorized
"404":
description: Not Found
content:
application/json:
schema:
$ref: "#/components/schemas/ApiError"
"500":
description: InternalServerError
content:
application/json:
schema:
$ref: "#/components/schemas/ApiError"
security:
- oauth2:
- https://jans.io/oauth/config/asset.delete
- oauth2:
- https://jans.io/oauth/config/asset.admin
- oauth2:
- https://jans.io/oauth/config/delete-all
/api/v1/jans-assets/name/{name}:
get:
tags:
- Jans Assets
summary: Fetch asset by name
description: Fetch asset by name.
operationId: get-asset-by-name
parameters:
- name: name
in: path
description: Asset Name
required: true
schema:
type: string
responses:
"200":
description: Ok
content:
application/json:
schema:
$ref: "#/components/schemas/DocumentPagedResult"
examples:
Response example:
description: Response example
value: ""
"401":
description: Unauthorized
"404":
description: Not Found
content:
application/json:
schema:
$ref: "#/components/schemas/ApiError"
"500":
description: InternalServerError
content:
application/json:
schema:
$ref: "#/components/schemas/ApiError"
security:
- oauth2:
- https://jans.io/oauth/config/asset.readonly
- oauth2:
- https://jans.io/oauth/config/asset.write
- oauth2:
- https://jans.io/oauth/config/asset.admin
- oauth2:
- https://jans.io/oauth/config/read-all
- oauth2:
- https://jans.io/oauth/config/write-all
/api/v1/jans-assets/asset-dir-mapping:
get:
tags:
- Jans Assets
summary: Get valid asset types
description: Get valid asset types
operationId: get-asset-dir-mapping
responses:
"200":
description: Ok
content:
application/json:
schema:
type: array
items:
$ref: "#/components/schemas/AssetDirMapping"
"401":
description: Unauthorized
"404":
description: Not Found
content:
application/json:
schema:
$ref: "#/components/schemas/ApiError"
"500":
description: InternalServerError
content:
application/json:
schema:
$ref: "#/components/schemas/ApiError"
security:
- oauth2:
- https://jans.io/oauth/config/asset.readonly
- oauth2:
- https://jans.io/oauth/config/asset.write
- oauth2:
- https://jans.io/oauth/config/asset.admin
- oauth2:
- https://jans.io/oauth/config/read-all
- oauth2:
- https://jans.io/oauth/config/write-all
/api/v1/jans-assets:
get:
tags:
- Jans Assets
summary: Gets all Jans assets.
description: Gets all Jans assets.
operationId: get-all-assets
parameters:
- name: limit
in: query
description: Search size - max size of the results to return
schema:
type: integer
format: int32
default: 50
- name: pattern
in: query
description: Search pattern
schema:
type: string
default: ""
- name: status
in: query
description: Status of the attribute
schema:
type: string
default: all
- name: startIndex
in: query
description: The 1-based index of the first query result
schema:
type: integer
format: int32
default: 0
- name: sortBy
in: query
description: Attribute whose value will be used to order the returned response
schema:
type: string
default: inum
- name: sortOrder
in: query
description: Order in which the sortBy param is applied. Allowed values are
"ascending" and "descending"
schema:
type: string
default: ascending
- name: fieldValuePair
in: query
description: Field and value pair for seraching
schema:
type: string
default: ""
examples:
Field value example:
description: Field value example
value: "adminCanEdit=true,dataType=string"
responses:
"200":
description: Ok
content:
application/json:
schema:
$ref: "#/components/schemas/DocumentPagedResult"
examples:
Response example:
description: Response example
value: |
{
"start": 0,
"totalEntriesCount": 2,
"entriesCount": 2,
"entries": [
{
"dn": "inum=0b436302-b729-4eb2-b211-335980dcab43,ou=document,o=jans",
"selected": false,
"inum": "0b436302-b729-4eb2-b211-335980dcab43",
"displayName": "mermaid-extra.css",
"description": "/opt/jans/jetty/jans-config-api/",
"document": ".mermaid {\r\n\toverflow: auto;\r\n}\r\n\r\n.mermaid svg {\r\n\twidth: 1315px;\r\n\theight: 600px;\r\n}\r\n",
"jansModuleProperty": [
"config-api",
"jar",
"/opt/jans/jetty/jans-config-api/custom/lib"
],
"jansLevel": "1",
"jansRevision": "2",
"jansEnabled": true,
"baseDn": "inum=0b436302-b729-4eb2-b211-335980dcab43,ou=document,o=jans"
},
{
"dn": "inum=9d2f39f5-a910-4a03-a888-6f0f1ee03445,ou=document,o=jans",
"selected": false,
"inum": "9d2f39f5-a910-4a03-a888-6f0f1ee03445",
"displayName": "saml-plugin.jar",
"description": "/opt/jans/jetty/jans-config-api/",
"creationDate": "2024-03-14T12:53:00",
"jansModuleProperty": [
"config-api",
"jar",
"/opt/jans/jetty/jans-config-api/custom/lib"
],
"jansEnabled": true,
"baseDn": "inum=9d2f39f5-a910-4a03-a888-6f0f1ee03445,ou=document,o=jans"
}
]
}
"401":
description: Unauthorized
"500":
description: InternalServerError
content:
application/json:
schema:
$ref: "#/components/schemas/ApiError"
security:
- oauth2:
- https://jans.io/oauth/config/asset.readonly
- oauth2:
- https://jans.io/oauth/config/asset.write
- oauth2:
- https://jans.io/oauth/config/asset.admin
- oauth2:
- https://jans.io/oauth/config/read-all
- oauth2:
- https://jans.io/oauth/config/write-all
/api/v1/jans-assets/services:
get:
tags:
- Jans Assets
summary: Gets asset services
description: Gets asset services
operationId: get-asset-services
responses:
"200":
description: Ok
content:
application/json:
# --- truncated at 32 KB (805 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/gluu/refs/heads/main/openapi/gluu-jans-config-api-openapi.yml