openapi: 3.2.0 info: title: Jans Config Jans Assets 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: Jans Assets paths: /api/v1/jans-assets/{inum}: get: tags: - Jans Assets summary: 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: "{\n \"dn\": \"inum=0b436302-b729-4eb2-b211-335980dcab43,ou=document,o=jans\",\n \"selected\": false,\n \"inum\": \"0b436302-b729-4eb2-b211-335980dcab43\",\n \"displayName\": \"mermaid-extra.css\",\n \"description\": \"/opt/jans/jetty/jans-config-api/\",\n \"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\",\n \"jansModuleProperty\": [\n \"config-api\",\n \"jar\",\n \"/opt/jans/jetty/jans-config-api/custom/lib\"\n ],\n \"jansLevel\": \"1\",\n \"jansRevision\": \"2\",\n \"jansEnabled\": true,\n \"baseDn\": \"inum=0b436302-b729-4eb2-b211-335980dcab43,ou=document,o=jans\"\n}\n" '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 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 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: "{\n \"start\": 0,\n \"totalEntriesCount\": 2,\n \"entriesCount\": 2,\n \"entries\": [\n {\n \"dn\": \"inum=0b436302-b729-4eb2-b211-335980dcab43,ou=document,o=jans\",\n \"selected\": false,\n \"inum\": \"0b436302-b729-4eb2-b211-335980dcab43\",\n \"displayName\": \"mermaid-extra.css\",\n \"description\": \"/opt/jans/jetty/jans-config-api/\",\n \"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\",\n \"jansModuleProperty\": [\n \"config-api\",\n \"jar\",\n \"/opt/jans/jetty/jans-config-api/custom/lib\"\n ],\n \"jansLevel\": \"1\",\n \"jansRevision\": \"2\",\n \"jansEnabled\": true,\n \"baseDn\": \"inum=0b436302-b729-4eb2-b211-335980dcab43,ou=document,o=jans\"\n },\n {\n \"dn\": \"inum=9d2f39f5-a910-4a03-a888-6f0f1ee03445,ou=document,o=jans\",\n \"selected\": false,\n \"inum\": \"9d2f39f5-a910-4a03-a888-6f0f1ee03445\",\n \"displayName\": \"saml-plugin.jar\",\n \"description\": \"/opt/jans/jetty/jans-config-api/\",\n \"creationDate\": \"2024-03-14T12:53:00\",\n \"jansModuleProperty\": [\n \"config-api\",\n \"jar\",\n \"/opt/jans/jetty/jans-config-api/custom/lib\"\n ],\n \"jansEnabled\": true,\n \"baseDn\": \"inum=9d2f39f5-a910-4a03-a888-6f0f1ee03445,ou=document,o=jans\"\n }\n ]\n}\n" '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 operationId: get-asset-services responses: '200': description: Ok content: application/json: schema: type: array items: type: string '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-type: get: tags: - Jans Assets summary: Get valid asset types operationId: get-asset-types responses: '200': description: Ok content: application/json: schema: type: array items: type: string '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/service/{service-name}: post: tags: - Jans Assets summary: Load assets on server for a service operationId: load-service-asset parameters: - name: service-name in: path description: Service Name required: true schema: type: string requestBody: description: String multipart form. content: multipart/form-data: schema: type: string responses: '200': description: Asset file loaded content: application/json: schema: type: string examples: Response json example: description: Response json example value: '' '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.write - oauth2: - https://jans.io/oauth/config/asset.admin - oauth2: - https://jans.io/oauth/config/write-all /api/v1/jans-assets/upload: put: tags: - Jans Assets summary: Update existing asset operationId: put-asset requestBody: description: String multipart form. content: multipart/form-data: schema: $ref: '#/components/schemas/AssetForm' examples: Response json example: description: Response json example value: "{\n \"dn\": \"inum=ed901270-c0cd-43cf-a683-10795ff66349,ou=document,o=jans\",\n \"selected\": false,\n \"inum\": \"ed901270-c0cd-43cf-a683-10795ff66349\",\n \"displayName\": \"janssen_dove_icon.png\",\n \"description\": \"/opt/jans/jetty/jans-auth/custom/static\",\n\t\"jansModuleProperty\": [\n \"agama\",\n \"img\",\n \"/opt/jans/jetty/jans-auth\"\n ],\n \"jansLevel\": \"1\",\n \"jansRevision\": \"2\",\n \"jansEnabled\": true,\n \"baseDn\": \"inum=ed901270-c0cd-43cf-a683-10795ff66349,ou=document,o=jans\"\n}\n" responses: '200': description: Modified Asset content: application/json-patch+json: schema: $ref: '#/components/schemas/Document' examples: Response json example: description: Response json example value: "{\n \"dn\": \"inum=ed901270-c0cd-43cf-a683-10795ff66349,ou=document,o=jans\",\n \"selected\": false,\n \"inum\": \"ed901270-c0cd-43cf-a683-10795ff66349\",\n \"displayName\": \"janssen_dove_icon.png\",\n \"description\": \"/opt/jans/jetty/jans-auth/custom/static\",\n\t\"jansModuleProperty\": [\n \"agama\",\n \"img\",\n \"/opt/jans/jetty/jans-auth\"\n ],\n \"jansLevel\": \"1\",\n \"jansRevision\": \"2\",\n \"jansEnabled\": true,\n \"baseDn\": \"inum=ed901270-c0cd-43cf-a683-10795ff66349,ou=document,o=jans\"\n}\n" '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/ApiError' '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/ApiError' '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.write - oauth2: - https://jans.io/oauth/config/asset.admin - oauth2: - https://jans.io/oauth/config/write-all post: tags: - Jans Assets summary: Upload new asset operationId: post-new-asset requestBody: description: String multipart form. content: multipart/form-data: schema: $ref: '#/components/schemas/AssetForm' examples: Response json example: description: Response json example value: "{\n \"displayName\": \"saml-plugin.jar\",\n \"description\": \"Config api pligin\",\n \"document\":\"\",\n \"jansModuleProperty\": [\n\t\t\"config-api\",\n\t\t\"jar\",\n\t\t\"/opt/jans/jetty/jans-config-api/custom/lib\"\n\t],\t\n \"jansLevel\": \"1\",\n \"jansRevision\": \"1\",\n \"jansEnabled\": true\n}\n" responses: '201': description: Newly created Asset content: application/json-patch+json: schema: $ref: '#/components/schemas/Document' examples: Response json example: description: Response json example value: "{\n \"displayName\": \"saml-plugin.jar\",\n \"description\": \"Config api pligin\",\n \"document\":\"\",\n \"jansModuleProperty\": [\n\t\t\"config-api\",\n\t\t\"jar\",\n\t\t\"/opt/jans/jetty/jans-config-api/custom/lib\"\n\t],\t\n \"jansLevel\": \"1\",\n \"jansRevision\": \"1\",\n \"jansEnabled\": true\n}\n" '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.write - oauth2: - https://jans.io/oauth/config/asset.admin - oauth2: - https://jans.io/oauth/config/write-all components: schemas: AssetDirMapping: type: object properties: directory: type: string description: Relative path to asset base directory. type: type: array description: List of file extention that are stored in directory. items: type: string description: List of file extention that are stored in directory. description: type: string description: Description of assets stored in directory. jansServiceModule: type: array description: List of supported service module where asset can be uploaded. items: type: string description: List of supported service module where asset can be uploaded. description: Asset type mapped to server directory. ApiError: type: object properties: code: type: string message: type: string description: type: string Document: type: object properties: dn: type: string inum: type: string fileName: type: string filePath: type: string description: type: string document: type: string creationDate: type: string format: date-time service: type: string level: type: integer format: int32 revision: type: integer format: int32 enabled: type: boolean baseDn: type: string AssetForm: required: - assetFile - document type: object properties: document: $ref: '#/components/schemas/Document' assetFile: type: string format: binary PagedResult: type: object properties: start: type: integer format: int32 totalEntriesCount: type: integer format: int32 entriesCount: type: integer format: int32 entries: type: array items: type: object DocumentPagedResult: 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/Document' securitySchemes: oauth2: type: oauth2 flows: clientCredentials: tokenUrl: https://{op-hostname}/.../token scopes: https://jans.io/oauth/jans-auth-server/config/properties.readonly: View Auth Server properties related information https://jans.io/oauth/jans-auth-server/config/properties.write: Manage Auth Server properties related information https://jans.io/oauth/config/attributes.readonly: View attribute related information https://jans.io/oauth/config/attributes.write: Manage attribute related information https://jans.io/oauth/config/attributes.delete: Delete attribute related information https://jans.io/oauth/config/acrs.readonly: View ACRS related information https://jans.io/oauth/config/acrs.write: Manage ACRS related information https://jans.io/oauth/config/database/ldap.readonly: View LDAP database related information https://jans.io/oauth/config/database/ldap.write: Manage LDAP database related information https://jans.io/oauth/config/database/ldap.delete: Delete LDAP database related information https://jans.io/oauth/config/scripts.readonly: View cache scripts information https://jans.io/oauth/config/scripts.write: Manage scripts related information https://jans.io/oauth/config/scripts.delete: Delete scripts related information https://jans.io/oauth/config/cache.readonly: View cache related information https://jans.io/oauth/config/cache.write: Manage cache related information https://jans.io/oauth/config/smtp.readonly: View SMTP related information https://jans.io/oauth/config/smtp.write: Manage SMTP related information https://jans.io/oauth/config/smtp.delete: Delete SMTP related information https://jans.io/oauth/config/logging.readonly: View logging related information https://jans.io/oauth/config/logging.write: Manage logging related information https://jans.io/oauth/config/jwks.readonly: View JWKS related information https://jans.io/oauth/config/jwks.write: Manage JWKS related information https://jans.io/oauth/config/jwks.delete: Delete JWKS related information https://jans.io/oauth/config/openid/clients.readonly: View clients related information https://jans.io/oauth/config/openid/clients.write: Manage clients related information https://jans.io/oauth/config/openid/clients.delete: Delete clients related information https://jans.io/oauth/config/scopes.readonly: View scope related information https://jans.io/oauth/config/scopes.write: Manage scope related information https://jans.io/oauth/config/scopes.delete: Delete scope related information https://jans.io/oauth/config/stats.readonly: View server with basic statistic https://jans.io/oauth/config/organization.readonly: View organization configuration information https://jans.io/oauth/config/organization.write: Manage organization configuration information https://jans.io/oauth/config/agama.readonly: View Agama Flow related information https://jans.io/oauth/config/agama.write: Manage Agama Flow related information https://jans.io/oauth/config/agama.delete: Delete Agama Flow related information https://jans.io/oauth/jans-auth-server/session.readonly: View Session related information https://jans.io/oauth/jans-auth-server/session.delete: Delete Session information https://jans.io/oauth/config/read-all: Super admin read access to all configuration resources https://jans.io/oauth/config/write-all: Super admin write access to all configuration resources https://jans.io/oauth/config/delete-all: Super admin delete access to all configuration resources https://jans.io/oauth/config/openid/openid.readonly: View OpenID functionality https://jans.io/oauth/config/openid/openid.write: Manage OpenID functionality https://jans.io/oauth/config/openid/openid.delete: Delete OpenID functionality https://jans.io/oauth/config/uma.readonly: View UMA functionality https://jans.io/oauth/config/uma.write: Manage UMA functionality https://jans.io/oauth/config/uma.delete: Delete UMA functionality https://jans.io/oauth/config/plugin.readonly: View Plugin information https://jans.io/oauth/config/properties.readonly: View Config-API related configuration properties https://jans.io/oauth/config/properties.write: Manage Config-API related configuration properties https://jans.io/oauth/client/authorizations.readonly: View ClientAuthorizations https://jans.io/oauth/client/authorizations.delete: Revoke ClientAuthorizations https://jans.io/oauth/config/asset.readonly: View Jans Assets https://jans.io/oauth/config/asset.write: Manage Jans Assets https://jans.io/oauth/config/asset.delete: Delete Jans Assets https://jans.io/oauth/config/token.readonly: View Token details https://jans.io/oauth/config/token.write: Manage Token details https://jans.io/oauth/config/token.delete: Delete Token details https://jans.io/oauth/config/data.readonly: View Config-API related data https://jans.io/oauth/config/ssa.readonly: View SSA details https://jans.io/oauth/config/ssa.write: Manage SSA details https://jans.io/oauth/config/ssa.delete: Delete SSA details https://jans.io/oauth/jans-auth-server/config/properties.admin: Admin scope for Auth Server properties https://jans.io/oauth/config/attributes.admin: Admin for Attribute management https://jans.io/oauth/config/acrs.admin: Admin for ACRS management https://jans.io/oauth/config/database.admin: Admin for Database config management https://jans.io/oauth/config/scripts.admin: Admin for Scripts management https://jans.io/oauth/config/cache.admin: Admin for Cache management https://jans.io/oauth/config/message.admin: Admin for Message management https://jans.io/oauth/config/smtp.admin: Admin for SMTP management https://jans.io/oauth/config/logging.admin: Admin for Logging management https://jans.io/oauth/config/jwks.admin: Admin for JWKS management https://jans.io/oauth/config/openid/clients.admin: Admin for clients management https://jans.io/oauth/config/token.admin: Admin for Token management https://jans.io/oauth/config/scopes.admin: Admin for scope management https://jans.io/oauth/config/stats.admin: Admin for statistic management https://jans.io/oauth/config/organization.admin: Admin for organization configuration management https://jans.io/oauth/config/agama.admin: Admin for Agama flow management https://jans.io/oauth/jans-auth-server/session.admin: Admin for Session management https://jans.io/oauth/config/uma.admin: Admin for UMA management https://jans.io/oauth/config/plugin.admin: Admin for Plugin management https://jans.io/oauth/config/properties.admin: Admin for Config-API management https://jans.io/oauth/client/authorizations.admin: Admin for Client Authorizations management https://jans.io/oauth/config/asset.admin: Admin for Jans Assets management https://jans.io/auth/ssa.admin: Admin for SSA management https://jans.io/oauth/config/health.admin: Admin for Health API management