The Ceptor UserAdmin / Identity REST API is available as an API Deployed on Ceptor Internal Gateway.
Ceptor Internal Gateway is a specific gateway instance provided in the example configuration distributed with Ceptor. This instance exposes all the Ceptor REST APIs (for the Ceptor Agent API look hereĀ Ceptor Agent REST API)
If a new installation is setup not to use the example configuration and use a new database, the Ceptor APIs can be imported using the import/export feature from the "Ceptor_apis.zip" file in the samples folder. Afterwards the APis can be published on the internal gateway.
The following is the OpenAPI specification of the UserAdmin / Identity REST API:
--- openapi: "3.0.0" info: version: "1.0.0" title: "Ceptor UserAdmin" paths: /user: get: summary: "Get User" tags: - "user" parameters: - name: "session" in: "query" description: "Session ID" required: true schema: type: "string" - name: "id" in: "query" description: "User ID (integer)" required: true schema: type: "integer" responses: 200: description: "User Record" content: application/json: schema: $ref: "#/components/schemas/User" default: description: "unexpected error" content: application/json: schema: $ref: "#/components/schemas/Error" delete: summary: "Deletes a User" tags: - "user" parameters: - name: "session" in: "query" description: "Session ID" required: true schema: type: "string" - name: "id" in: "query" description: "User ID" required: true schema: type: "integer" responses: 201: description: "OK" default: description: "unexpected error" content: application/json: schema: $ref: "#/components/schemas/Error" put: summary: "Create User" tags: - "user" parameters: - name: "session" in: "query" description: "Session ID" required: true schema: type: "string" - name: "logonid" in: "query" description: "Logon ID" required: true schema: type: "string" - name: "method" in: "query" description: "Method ID" required: true schema: type: "integer" - name: "authlevel" in: "query" description: "Authentication Level" required: false schema: type: "integer" - name: "credentials" in: "query" description: "Credentials" required: true schema: type: "string" format: "byte" responses: 200: description: "User ID of the newly created record" content: application/json: schema: type: "integer" description: "User ID" default: description: "unexpected error" content: application/json: schema: $ref: "#/components/schemas/Error" /userByKey: get: summary: "Get User by key / attribute / column" tags: - "user" parameters: - name: "session" in: "query" description: "Session ID" required: true schema: type: "string" - name: "key" in: "query" description: "Key / attribute / column to use for lookup" required: true schema: $ref: "#/components/schemas/Key" - name: "value" in: "query" description: "Value to search for" required: true schema: type: "string" responses: 200: description: "User Record" content: application/json: schema: $ref: "#/components/schemas/User" default: description: "unexpected error" content: application/json: schema: $ref: "#/components/schemas/Error" /usersByACL: get: summary: "Retrieves the users linked to an ACL" tags: - "acl" parameters: - name: "session" in: "query" description: "Session ID" required: true schema: type: "string" - name: "aclname" in: "query" description: "Name of ACL" required: true schema: type: "string" responses: 200: description: "User Records" content: application/json: schema: type: "array" items: $ref: "#/components/schemas/QuickUser" default: description: "unexpected error" content: application/json: schema: $ref: "#/components/schemas/Error" /userByLogonID: get: summary: "Get User by LogonID and Authentication Method" tags: - "user" parameters: - name: "session" in: "query" description: "Session ID" required: true schema: type: "string" - name: "logonid" in: "query" description: "LogonID" required: true schema: type: "string" - name: "method" in: "query" description: "Method ID" required: true schema: type: "integer" responses: 200: description: "User Record" content: application/json: schema: $ref: "#/components/schemas/User" default: description: "unexpected error" content: application/json: schema: $ref: "#/components/schemas/Error" /allGroups: get: summary: "Get all user groups" tags: - "group" parameters: - name: "session" in: "query" description: "Session ID" required: true schema: type: "string" responses: 200: description: "Groups" content: application/json: schema: type: "array" description: "List of available Groups" items: $ref: "#/components/schemas/Group" default: description: "unexpected error" content: application/json: schema: $ref: "#/components/schemas/Error" /group: put: summary: "Create a new group" tags: - "group" parameters: - name: "session" in: "query" description: "Session ID" required: true schema: type: "string" - name: "name" in: "query" description: "Group name" required: true schema: type: "string" - name: "description" in: "query" description: "Description" required: true schema: type: "string" - name: "authlvl" in: "query" description: "Minimum authentication level" required: true schema: type: "integer" responses: 200: description: "OK" content: application/json: schema: type: "integer" description: "ID of the new group" default: description: "unexpected error" content: application/json: schema: $ref: "#/components/schemas/Error" patch: summary: "Updates a group" tags: - "group" parameters: - name: "session" in: "query" description: "Session ID" required: true schema: type: "string" - name: "id" in: "query" description: "Group ID" required: true schema: type: "integer" - name: "name" in: "query" description: "Group name" required: true schema: type: "string" - name: "description" in: "query" description: "Description" required: true schema: type: "string" - name: "authlvl" in: "query" description: "Minimum authentication level" required: true schema: type: "integer" responses: 201: description: "OK" default: description: "unexpected error" content: application/json: schema: $ref: "#/components/schemas/Error" delete: summary: "Deletes a Group" tags: - "group" parameters: - name: "session" in: "query" description: "Session ID" required: true schema: type: "string" - name: "id" in: "query" description: "Group ID" required: true schema: type: "integer" responses: 201: description: "OK" default: description: "unexpected error" content: application/json: schema: $ref: "#/components/schemas/Error" /allProfiles: get: summary: "Get all user profiles" tags: - "profile" parameters: - name: "session" in: "query" description: "Session ID" required: true schema: type: "string" responses: 200: description: "Profiles" content: application/json: schema: type: "array" description: "List of available Profiles" items: $ref: "#/components/schemas/Profile" default: description: "unexpected error" content: application/json: schema: $ref: "#/components/schemas/Error" /profile: put: summary: "Create a new profile" tags: - "profile" parameters: - name: "session" in: "query" description: "Session ID" required: true schema: type: "string" - name: "name" in: "query" description: "Group name" required: true schema: type: "string" - name: "description" in: "query" description: "Description" required: true schema: type: "string" responses: 200: description: "OK" content: application/json: schema: type: "integer" description: "ID of the new profile" default: description: "unexpected error" content: application/json: schema: $ref: "#/components/schemas/Error" patch: summary: "Updates a profile" tags: - "profile" parameters: - name: "session" in: "query" description: "Session ID" required: true schema: type: "string" - name: "id" in: "query" description: "Profile ID" required: true schema: type: "integer" - name: "name" in: "query" description: "Group name" required: true schema: type: "string" - name: "description" in: "query" description: "Description" required: true schema: type: "string" responses: 200: description: "OK" content: application/json: schema: type: "integer" description: "ID of the new profile" default: description: "unexpected error" content: application/json: schema: $ref: "#/components/schemas/Error" /profile/attachGroup: put: summary: "Attach a group to a Profile" tags: - "profile" parameters: - name: "session" in: "query" description: "Session ID" required: true schema: type: "string" - name: "id" in: "query" description: "Profile ID" required: true schema: type: "integer" - name: "groupID" in: "query" description: "Group ID" required: true schema: type: "integer" responses: 201: description: "OK" default: description: "unexpected error" content: application/json: schema: $ref: "#/components/schemas/Error" /profile/detachGroup: put: summary: "Detach a group from a profile" tags: - "profile" parameters: - name: "session" in: "query" description: "Session ID" required: true schema: type: "string" - name: "id" in: "query" description: "Profile ID" required: true schema: type: "integer" - name: "groupID" in: "query" description: "Group ID" required: true schema: type: "integer" responses: 201: description: "OK" default: description: "unexpected error" content: application/json: schema: $ref: "#/components/schemas/Error" /assignableProfiles: get: summary: "Get a list of assignable profiles for the currently authenticated\ \ user" tags: - "profile" parameters: - name: "session" in: "query" description: "Session ID" required: true schema: type: "string" responses: 200: description: "OK" content: application/json: schema: type: "array" items: $ref: "#/components/schemas/Profile" default: description: "unexpected error" content: application/json: schema: $ref: "#/components/schemas/Error" /allACLs: get: summary: "Get all ACL entries" tags: - "acl" parameters: - name: "session" in: "query" description: "Session ID" required: true schema: type: "string" responses: 200: description: "ACLs" content: application/json: schema: type: "array" description: "List of available ACLs" items: $ref: "#/components/schemas/ACL" default: description: "unexpected error" content: application/json: schema: $ref: "#/components/schemas/Error" /acl: put: summary: "Create a new ACL" tags: - "acl" parameters: - name: "session" in: "query" description: "Session ID" required: true schema: type: "string" - name: "name" in: "query" description: "Group name" required: true schema: type: "string" - name: "description" in: "query" description: "Description" required: true schema: type: "string" responses: 201: description: "OK" default: description: "unexpected error" content: application/json: schema: $ref: "#/components/schemas/Error" delete: summary: "Deletes an ACL" tags: - "acl" parameters: - name: "session" in: "query" description: "Session ID" required: true schema: type: "string" - name: "name" in: "query" description: "ACL Name" required: true schema: type: "string" responses: 201: description: "OK" default: description: "unexpected error" content: application/json: schema: $ref: "#/components/schemas/Error" patch: summary: "Updates an ACL" tags: - "acl" parameters: - name: "session" in: "query" description: "Session ID" required: true schema: type: "string" - name: "name" in: "query" description: "Group name" required: true schema: type: "string" - name: "description" in: "query" description: "Description" required: true schema: type: "string" responses: 201: description: "OK" default: description: "unexpected error" content: application/json: schema: $ref: "#/components/schemas/Error" /acl/attachGroup: put: summary: "Attach a group to an ACL" tags: - "acl" parameters: - name: "session" in: "query" description: "Session ID" required: true schema: type: "string" - name: "name" in: "query" description: "ACL name" required: true schema: type: "string" - name: "groupID" in: "query" description: "Group ID" required: true schema: type: "integer" responses: 201: description: "OK" default: description: "unexpected error" content: application/json: schema: $ref: "#/components/schemas/Error" /acl/detachGroup: put: summary: "Detach a group from an ACL" tags: - "acl" parameters: - name: "session" in: "query" description: "Session ID" required: true schema: type: "string" - name: "name" in: "query" description: "ACL name" required: true schema: type: "string" - name: "groupID" in: "query" description: "Group ID" required: true schema: type: "integer" responses: 201: description: "OK" default: description: "unexpected error" content: application/json: schema: $ref: "#/components/schemas/Error" /acl/attachUser: put: summary: "Attach a user to an ACL" tags: - "acl" parameters: - name: "session" in: "query" description: "Session ID" required: true schema: type: "string" - name: "name" in: "query" description: "ACL name" required: true schema: type: "string" - name: "userID" in: "query" description: "User ID" required: true schema: type: "integer" responses: 201: description: "OK" default: description: "unexpected error" content: application/json: schema: $ref: "#/components/schemas/Error" /acl/detachUser: put: summary: "Detach a user from an ACL" tags: - "acl" parameters: - name: "session" in: "query" description: "Session ID" required: true schema: type: "string" - name: "name" in: "query" description: "ACL name" required: true schema: type: "string" - name: "userID" in: "query" description: "User ID" required: true schema: type: "integer" responses: 201: description: "OK" default: description: "unexpected error" content: application/json: schema: $ref: "#/components/schemas/Error" /allOrganisations: get: summary: "Get all Organisation records" tags: - "organisation" parameters: - name: "session" in: "query" description: "Session ID" required: true schema: type: "string" responses: 200: description: "Organisations" content: application/json: schema: type: "array" description: "List of available Organisations" items: $ref: "#/components/schemas/Organisation" default: description: "unexpected error" content: application/json: schema: $ref: "#/components/schemas/Error" /organisationsByParent: get: summary: "Get all Organisation records for a given parent" tags: - "organisation" parameters: - name: "session" in: "query" description: "Session ID" required: true schema: type: "string" - name: "parent" in: "query" description: "Parent Organisation ID" required: true schema: type: "integer" responses: 200: description: "Organisations" content: application/json: schema: type: "array" description: "List of available Organisations" items: $ref: "#/components/schemas/Organisation" default: description: "unexpected error" content: application/json: schema: $ref: "#/components/schemas/Error" /organisationProfiles: get: summary: "Get all Profiles attached to a particular organisation" tags: - "organisation" parameters: - name: "session" in: "query" description: "Session ID" required: true schema: type: "string" - name: "orgid" in: "query" description: "Organisation ID" required: true schema: type: "integer" responses: 200: description: "Profiles" content: application/json: schema: type: "array" description: "List of Profiles for this organisation" items: $ref: "#/components/schemas/Profile" default: description: "unexpected error" content: application/json: schema: $ref: "#/components/schemas/Error" /organisation: get: summary: "Gets organisation" tags: - "organisation" parameters: - name: "session" in: "query" description: "Session ID" required: true schema: type: "string" - name: "orgid" in: "query" description: "Organisation ID" required: true schema: type: "integer" responses: 200: description: "OK" content: application/json: schema: $ref: "#/components/schemas/Organisation" default: description: "unexpected error" content: application/json: schema: $ref: "#/components/schemas/Error" put: summary: "Create a new organisation" tags: - "organisation" parameters: - name: "session" in: "query" description: "Session ID" required: true schema: type: "string" - name: "name" in: "query" description: "Organisation Name" required: true schema: type: "string" - name: "description" in: "query" description: "Description" required: true schema: type: "string" - name: "parent" in: "query" description: "Parent ID" required: true schema: type: "integer" - name: "status" in: "query" description: "Status ID" required: true schema: type: "integer" - name: "statusinfo" in: "query" description: "StatusInfo ID" required: true schema: type: "integer" responses: 201: description: "OK" default: description: "unexpected error" content: application/json: schema: $ref: "#/components/schemas/Error" patch: summary: "Updates an organisation" tags: - "organisation" parameters: - name: "session" in: "query" description: "Session ID" required: true schema: type: "string" - name: "orgid" in: "query" description: "Organisation ID" required: true schema: type: "integer" - name: "name" in: "query" description: "Organisation Name" required: true schema: type: "string" - name: "description" in: "query" description: "Description" required: true schema: type: "string" - name: "parent" in: "query" description: "Parent ID" required: true schema: type: "integer" - name: "status" in: "query" description: "Status ID" required: true schema: type: "integer" - name: "statusinfo" in: "query" description: "StatusInfo ID" required: true schema: type: "integer" responses: 201: description: "OK" default: description: "unexpected error" content: application/json: schema: $ref: "#/components/schemas/Error" delete: summary: "Deletes an organisation" tags: - "organisation" parameters: - name: "session" in: "query" description: "Session ID" required: true schema: type: "string" - name: "orgid" in: "query" description: "Organisation ID" required: true schema: type: "integer" responses: 201: description: "OK" default: description: "unexpected error" content: application/json: schema: $ref: "#/components/schemas/Error" /organisationAttribute: put: summary: "Create/update organisation attributes" tags: - "organisation" parameters: - name: "session" in: "query" description: "Session ID" required: true schema: type: "string" - name: "orgid" in: "query" description: "Organisation ID" required: true schema: type: "integer" - name: "keys" in: "query" description: "Attribute Keys" required: true schema: type: "array" items: type: "string" - name: "values" in: "query" description: "Attribute Values" required: true schema: type: "array" items: type: "string" responses: 201: description: "OK" default: description: "unexpected error" content: application/json: schema: $ref: "#/components/schemas/Error" /organisation/attachProfile: put: summary: "Attach a profile to an organisation" tags: - "organisation" parameters: - name: "session" in: "query" description: "Session ID" required: true schema: type: "string" - name: "orgid" in: "query" description: "Organisation ID" required: true schema: type: "integer" - name: "profileID" in: "query" description: "Profile ID" required: true schema: type: "integer" responses: 201: description: "OK" default: description: "unexpected error" content: application/json: schema: $ref: "#/components/schemas/Error" /organisation/detachProfile: put: summary: "Detaches a profile from an organisation" tags: - "organisation" parameters: - name: "session" in: "query" description: "Session ID" required: true schema: type: "string" - name: "orgid" in: "query" description: "Organisation ID" required: true schema: type: "integer" - name: "profileID" in: "query" description: "Profile ID" required: true schema: type: "integer" responses: 201: description: "OK" default: description: "unexpected error" content: application/json: schema: $ref: "#/components/schemas/Error" /allDeliveryMethods: get: summary: "Get all delivery methods" tags: - "misc" parameters: - name: "session" in: "query" description: "Session ID" required: true schema: type: "string" responses: 200: description: "Delivery Methods" content: application/json: schema: type: "array" description: "List of available Delivery Methods" items: $ref: "#/components/schemas/DeliveryMethod" default: description: "unexpected error" content: application/json: schema: $ref: "#/components/schemas/Error" /userAttributes: get: summary: "Get a list of all user attributes" tags: - "user" parameters: - name: "session" in: "query" description: "Session ID" required: true schema: type: "string" responses: 200: description: "User Attribute names" content: application/json: schema: type: "array" description: "List of available User Attributes" items: type: "string" default: description: "unexpected error" content: application/json: schema: $ref: "#/components/schemas/Error" /allAuthenticationMethods: get: summary: "Get all authentication methods" tags: - "misc" parameters: - name: "session" in: "query" description: "Session ID" required: true schema: type: "string" responses: 200: description: "Authentication Methods" content: application/json: schema: type: "array" description: "List of available Authentication Methods" items: $ref: "#/components/schemas/AuthenticationMethod" default: description: "unexpected error" content: application/json: schema: $ref: "#/components/schemas/Error" /allStatus: get: summary: "Get all status records" tags: - "misc" parameters: - name: "session" in: "query" description: "Session ID" required: true schema: type: "string" responses: 200: description: "Status" content: application/json: schema: type: "array" description: "List of available Status records" items: $ref: "#/components/schemas/Status" default: description: "unexpected error" content: application/json: schema: $ref: "#/components/schemas/Error" /allStatusInfo: get: summary: "Get all statusinfo records" tags: - "misc" parameters: - name: "session" in: "query" description: "Session ID" required: true schema: type: "string" responses: 200: description: "Status Info" content: application/json: schema: type: "array" description: "List of available Status Info records" items: $ref: "#/components/schemas/StatusInfo" default: description: "unexpected error" content: application/json: schema: $ref: "#/components/schemas/Error" /groupsByUser: get: summary: "Retrieves the groups a specific user is member of" tags: - "user" - "group" parameters: - name: "session" in: "query" description: "Session ID" required: true schema: type: "string" - name: "userid" in: "query" description: "UserID" required: true schema: type: "integer" responses: 200: description: "List of groups" content: application/json: schema: type: "array" description: "List of available Groups" items: $ref: "#/components/schemas/Group" default: description: "unexpected error" content: application/json: schema: $ref: "#/components/schemas/Error" /profilesByUser: get: summary: "Retrieves the profiles a specific user is member of" tags: - "profile" - "user" parameters: - name: "session" in: "query" description: "Session ID" required: true schema: type: "string" - name: "userid" in: "query" description: "UserID" required: true schema: type: "integer" responses: 200: description: "Profiles" content: application/json: schema: type: "array" description: "List of available Profiles" items: $ref: "#/components/schemas/Profile" default: description: "unexpected error" content: application/json: schema: $ref: "#/components/schemas/Error" /groupsByProfile: get: summary: "Retrieves the groups attached to a specific profile" tags: - "group" - "profile" parameters: - name: "session" in: "query" description: "Session ID" required: true schema: type: "string" - name: "profileid" in: "query" description: "Profile ID" required: true schema: type: "integer" responses: 200: description: "List of groups" content: application/json: schema: type: "array" description: "List of available Groups" items: $ref: "#/components/schemas/Group" default: description: "unexpected error" content: application/json: schema: $ref: "#/components/schemas/Error" /profilesByGroup: get: summary: "Retrieves the list of profiles that a group is attached to" tags: - "group" - "profile" parameters: - name: "session" in: "query" description: "Session ID" required: true schema: type: "string" - name: "groupid" in: "query" description: "Group ID" required: true schema: type: "integer" responses: 200: description: "List of profiles" content: application/json: schema: type: "array" description: "List of Profiles" items: $ref: "#/components/schemas/Profile" default: description: "unexpected error" content: application/json: schema: $ref: "#/components/schemas/Error" /login/succeeded: post: summary: "Login succeeded, increases successful login counter" tags: - "misc" parameters: - name: "session" in: "query" description: "Session ID" required: true schema: type: "string" - name: "logonid" in: "query" description: "Logon ID" required: true schema: type: "string" - name: "method" in: "query" description: "Method ID" required: true schema: type: "integer" responses: 201: description: "OK" default: description: "unexpected error" content: application/json: schema: $ref: "#/components/schemas/Error" /login/failed: post: summary: "Login failed, increases failed login counter" tags: - "misc" parameters: - name: "session" in: "query" description: "Session ID" required: true schema: type: "string" - name: "logonid" in: "query" description: "Logon ID" required: true schema: type: "string" - name: "method" in: "query" description: "Method ID" required: true schema: type: "integer" responses: 201: description: "OK" default: description: "unexpected error" content: application/json: schema: $ref: "#/components/schemas/Error" /login/reset: post: summary: "Resets the number of invalid password attempts" tags: - "misc" parameters: - name: "session" in: "query" description: "Session ID" required: true schema: type: "string" - name: "logonid" in: "query" description: "Logon ID" required: true schema: type: "string" - name: "method" in: "query" description: "Method ID" required: true schema: type: "integer" responses: 201: description: "OK" default: description: "unexpected error" content: application/json: schema: $ref: "#/components/schemas/Error" /user/status: patch: summary: "Updates user status" description: "Updates a users status and statusinfo - note that the status values\ \ are dynamic and the possible values are stored in the database." tags: - "user" parameters: - name: "session" in: "query" description: "Session ID" required: true schema: type: "string" - name: "userid" in: "query" description: "User ID" required: true schema: type: "integer" - name: "status" in: "query" description: "New User Status" required: true schema: type: "integer" - name: "statusinfo" in: "query" description: "Status info" required: true schema: type: "integer" responses: 200: description: "List of profiles" content: application/json: schema: type: "array" description: "List of Profiles" items: $ref: "#/components/schemas/Profile" default: description: "unexpected error" content: application/json: schema: $ref: "#/components/schemas/Error" /challenge/status: patch: summary: "Updates challenge status" description: "Updates a challenge status and statusinfo - note that the status\ \ values are dynamic and the possible values are stored in the database." tags: - "user" parameters: - name: "session" in: "query" description: "Session ID" required: true schema: type: "string" - name: "logonid" in: "query" description: "Logon ID" required: true schema: type: "string" - name: "method" in: "query" description: "Method ID" required: true schema: type: "integer" - name: "status" in: "query" description: "New Challenge Status" required: true schema: type: "integer" responses: 200: description: "List of profiles" content: application/json: schema: type: "array" description: "List of Profiles" items: $ref: "#/components/schemas/Profile" default: description: "unexpected error" content: application/json: schema: $ref: "#/components/schemas/Error" /challenge/authlevel: patch: summary: "Updates challenge authentication level" tags: - "user" parameters: - name: "session" in: "query" description: "Session ID" required: true schema: type: "string" - name: "logonid" in: "query" description: "Logon ID" required: true schema: type: "string" - name: "method" in: "query" description: "Method ID" required: true schema: type: "integer" - name: "authlevel" in: "query" description: "New Authentication level" required: true schema: type: "integer" - name: "statusinfo" in: "query" description: "Status info ID" required: true schema: type: "integer" responses: 200: description: "List of profiles" content: application/json: schema: type: "array" description: "List of Profiles" items: $ref: "#/components/schemas/Profile" default: description: "unexpected error" content: application/json: schema: $ref: "#/components/schemas/Error" /challenge: get: summary: "Gets a challenge for a user, using eitehr userid or logonid as key\ \ along with the method" tags: - "user" parameters: - name: "session" in: "query" description: "Session ID" required: true schema: type: "string" - name: "userid" in: "query" description: "User ID" required: true schema: type: "integer" - name: "logonid" in: "query" description: "Logon ID" required: false schema: type: "string" - name: "method" in: "query" description: "Method ID" required: true schema: type: "integer" responses: 200: description: "Challenge" content: application/json: schema: $ref: "#/components/schemas/Challenge" default: description: "unexpected error" content: application/json: schema: $ref: "#/components/schemas/Error" put: summary: "Creates a new challenge" tags: - "user" parameters: - name: "session" in: "query" description: "Session ID" required: true schema: type: "string" - name: "userid" in: "query" description: "User ID" required: true schema: type: "integer" - name: "logonid" in: "query" description: "Logon ID" required: true schema: type: "string" - name: "method" in: "query" description: "Method ID" required: true schema: type: "integer" - name: "credentials" in: "query" description: "Credentials" required: true schema: type: "string" format: "byte" - name: "authlevel" in: "query" description: "Authentication Level" required: false schema: type: "integer" - name: "deliverymethod" in: "query" description: "Delivery method ID - if specified, plugin for the delivery method\ \ is called to deliver the credentials - e.g. my mail, email or otherwise" required: false schema: type: "integer" responses: 201: description: "Created" default: description: "unexpected error" content: application/json: schema: $ref: "#/components/schemas/Error" delete: summary: "Deletes a challenge" tags: - "user" parameters: - name: "session" in: "query" description: "Session ID" required: true schema: type: "string" - name: "logonid" in: "query" description: "Logon ID" required: true schema: type: "string" - name: "method" in: "query" description: "Method ID" required: true schema: type: "integer" responses: 201: description: "Deleted" default: description: "unexpected error" content: application/json: schema: $ref: "#/components/schemas/Error" patch: summary: "Updates a challenge" tags: - "user" parameters: - name: "session" in: "query" description: "Session ID" required: true schema: type: "string" - name: "logonid" in: "query" description: "Logon ID" required: true schema: type: "string" - name: "method" in: "query" description: "Method ID" required: true schema: type: "integer" - name: "credentials" in: "query" description: "Credentials - either credentials and/or newlogonid must be provided" required: false schema: type: "string" format: "byte" - name: "newlogonid" in: "query" description: "New Logon ID - can be used to 'rename' a challenge logonid,\ \ fails if it already exists" required: false schema: type: "string" responses: 201: description: "Created" default: description: "unexpected error" content: application/json: schema: $ref: "#/components/schemas/Error" /user/attribute: put: summary: "Updates user attributes" description: "Updates a users status and statusinfo - note that the status values\ \ are dynamic and the possible values are stored in the database." tags: - "user" parameters: - name: "session" in: "query" description: "Session ID" required: true schema: type: "string" - name: "userid" in: "query" description: "User ID" required: true schema: type: "integer" - name: "name" in: "query" description: "Attribute name" required: true schema: type: "string" - name: "value" in: "query" description: "Value of attribute" required: false schema: type: "string" responses: 201: description: "OK" default: description: "unexpected error" content: application/json: schema: $ref: "#/components/schemas/Error" /user/profile: put: summary: "Attach a profile to a user" tags: - "user" parameters: - name: "session" in: "query" description: "Session ID" required: true schema: type: "string" - name: "userid" in: "query" description: "User ID" required: true schema: type: "integer" - name: "profileid" in: "query" description: "Profile ID" required: true schema: type: "integer" responses: 201: description: "OK" default: description: "unexpected error" content: application/json: schema: $ref: "#/components/schemas/Error" delete: summary: "Detach a profile from a user" tags: - "user" parameters: - name: "session" in: "query" description: "Session ID" required: true schema: type: "string" - name: "userid" in: "query" description: "User ID" required: true schema: type: "integer" - name: "profileid" in: "query" description: "Profile ID" required: true schema: type: "integer" responses: 201: description: "OK" default: description: "unexpected error" content: application/json: schema: $ref: "#/components/schemas/Error" /user/organisation: put: summary: "Updates a users organisation ID" tags: - "user" parameters: - name: "session" in: "query" description: "Session ID" required: true schema: type: "string" - name: "userid" in: "query" description: "User ID" required: true schema: type: "integer" - name: "orgid" in: "query" description: "Organisation ID" required: true schema: type: "integer" responses: 201: description: "OK" default: description: "unexpected error" content: application/json: schema: $ref: "#/components/schemas/Error" /user/organisations: put: summary: "Updates a users organisation IDs" tags: - "user" parameters: - name: "session" in: "query" description: "Session ID" required: true schema: type: "string" - name: "userid" in: "query" description: "User ID" required: true schema: type: "integer" - name: "orgids" in: "query" description: "Organisation IDs" required: true schema: type: "array" items: type: "integer" responses: 201: description: "OK" default: description: "unexpected error" content: application/json: schema: $ref: "#/components/schemas/Error" /user/organisation/profile/attach: put: summary: "Updates all users attached to an organisation to be attached to the\ \ given profile" tags: - "user" - "organisation" - "profile" parameters: - name: "session" in: "query" description: "Session ID" required: true schema: type: "string" - name: "orgid" in: "query" description: "Organisation ID" required: true schema: type: "integer" - name: "profile" in: "query" description: "Profile ID" required: true schema: type: "integer" - name: "existingprofile" in: "query" description: "Existing Profile ID - if specified, users must have this profile\ \ already in order to get the new profile attached to them" required: false schema: type: "integer" responses: 200: description: "OK" content: application/json: schema: description: "Number of profiles actually attached to users" type: "integer" default: description: "unexpected error" content: application/json: schema: $ref: "#/components/schemas/Error" /user/organisation/profile/detach: put: summary: "Updates all users attached to an organisation to be detached from\ \ the given profile" tags: - "user" - "organisation" - "profile" parameters: - name: "session" in: "query" description: "Session ID" required: true schema: type: "string" - name: "orgid" in: "query" description: "Organisation ID" required: true schema: type: "integer" - name: "profile" in: "query" description: "Profile ID" required: true schema: type: "integer" - name: "timestamp" in: "query" description: "Only profiles attached after this timestamp will be detached" required: true schema: type: "string" format: "date-time" responses: 200: description: "OK" content: application/json: schema: description: "Number of profiles actually attached to users" type: "integer" default: description: "unexpected error" content: application/json: schema: $ref: "#/components/schemas/Error" /revisionlog: post: summary: "Logs an entry in the revision log" tags: - "misc" parameters: - name: "session" in: "query" description: "Session ID" required: true schema: type: "string" - name: "text" in: "query" description: "Text to log" required: true schema: type: "string" responses: 201: description: "OK" default: description: "unexpected error" content: application/json: schema: $ref: "#/components/schemas/Error" /auditlog: post: summary: "Logs an entry in the audit log for a user" tags: - "misc" parameters: - name: "session" in: "query" description: "Session ID" required: true schema: type: "string" - name: "userid" in: "query" description: "User ID" required: true schema: type: "integer" - name: "text" in: "query" description: "Text to log" required: true schema: type: "string" responses: 201: description: "OK" default: description: "unexpected error" content: application/json: schema: $ref: "#/components/schemas/Error" /auditlog/wssecurity: post: summary: "Logs an entry in the WS-Security audit log" tags: - "misc" parameters: - name: "session" in: "query" description: "Session ID" required: true schema: type: "string" - name: "userid" in: "query" description: "User ID" required: true schema: type: "string" - name: "errortext" in: "query" description: "ErrorText to log" required: true schema: type: "string" - name: "errorcode" in: "query" description: "Error code" required: true schema: type: "string" - name: "xmltype" in: "query" description: "Type of XML being logged, e.g. 'Outgoing SOAP', 'Incoming SOAP',\ \ 'Outgoing XMLDSIG', 'Incoming XMLDSIG'" required: true schema: type: "string" - name: "xml" in: "query" description: "Actual XML to log" required: true schema: type: "string" responses: 201: description: "OK" default: description: "unexpected error" content: application/json: schema: $ref: "#/components/schemas/Error" /search/initialChallenges: get: summary: "Searches for challenges with a specific authentication level which\ \ was created and never used" tags: - "search" parameters: - name: "session" in: "query" description: "Session ID" required: true schema: type: "string" - name: "authlevel" in: "query" description: "Authentication level" required: true schema: type: "integer" - name: "timestamp" in: "query" description: "Date / time" required: true schema: type: "string" format: "date-time" - name: "before" in: "query" description: "Before or after - set to true to search for dates before the\ \ timestamp, false to search for dates after" required: true schema: type: "boolean" responses: 200: description: "Challenges matching the criteria" content: application/json: schema: type: "array" items: $ref: "#/components/schemas/Challenge" default: description: "unexpected error" content: application/json: schema: $ref: "#/components/schemas/Error" /search/inactiveChallenges: get: summary: "Searches for challenges with a specific authentication level which\ \ have not logged on since a specific date" tags: - "search" parameters: - name: "session" in: "query" description: "Session ID" required: true schema: type: "string" - name: "authlevel" in: "query" description: "Authentication level" required: true schema: type: "integer" - name: "timestamp" in: "query" description: "Date / time" required: true schema: type: "string" format: "date-time" - name: "before" in: "query" description: "Before or after - set to true to search for dates before the\ \ timestamp, false to search for dates after" required: true schema: type: "boolean" responses: 200: description: "Challenges matching the criteria" content: application/json: schema: type: "array" items: $ref: "#/components/schemas/Challenge" default: description: "unexpected error" content: application/json: schema: $ref: "#/components/schemas/Error" /search/challenges: get: summary: "Searches for challenges with the specified logon ID pattern, and who\ \ is (optionally) member of the given group" tags: - "search" parameters: - name: "session" in: "query" description: "Session ID" required: true schema: type: "string" - name: "logonidPattern" in: "query" description: "Logon ID Pattern" required: true schema: type: "string" - name: "group" in: "query" description: "Group name" required: false schema: type: "string" - name: "maxresults" in: "query" description: "Maximum results to return" required: true schema: type: "integer" responses: 200: description: "Challenges matching the criteria" content: application/json: schema: type: "array" items: $ref: "#/components/schemas/Challenge" default: description: "unexpected error" content: application/json: schema: $ref: "#/components/schemas/Error" /search/userByAttribute: get: summary: "Searches for users by looking through the attribute table for the\ \ value of a single attribute" tags: - "search" parameters: - name: "session" in: "query" description: "Session ID" required: true schema: type: "string" - name: "key" in: "query" description: "Attribute key/name to lookup" required: true schema: type: "string" - name: "value" in: "query" description: "Value - wildcards are allowed (use % as wildcard)" required: false schema: type: "string" - name: "orgid" in: "query" description: "Organisation ID to search in, if not specified, all allowed\ \ organisations for the caller is searched" required: false schema: type: "integer" responses: 200: description: "Users matching the criteria" content: application/json: schema: type: "array" items: $ref: "#/components/schemas/QuickUser" default: description: "unexpected error" content: application/json: schema: $ref: "#/components/schemas/Error" /search/userByAttributes: get: summary: "Searches for users by a list of attributes and values" tags: - "search" parameters: - name: "session" in: "query" description: "Session ID" required: true schema: type: "string" - name: "keys" in: "query" description: "Attribute key/name to lookup" required: true schema: type: "array" items: $ref: "#/components/schemas/Key" - name: "values" in: "query" description: "Values" required: true schema: type: "array" items: type: "string" - name: "sortrow" in: "query" description: "Row to sort results after" required: false schema: type: "string" responses: 200: description: "Users matching the criteria" content: application/json: schema: type: "array" items: $ref: "#/components/schemas/QuickUser" default: description: "unexpected error" content: application/json: schema: $ref: "#/components/schemas/Error" /search/userByLogonid: get: summary: "Searches for users by logon ID" tags: - "search" parameters: - name: "session" in: "query" description: "Session ID" required: true schema: type: "string" - name: "logonid" in: "query" description: "Logon ID" required: true schema: type: "string" - name: "orgid" in: "query" description: "Organisation ID to search in, if not specified, all allowed\ \ organisations for the caller is searched" required: false schema: type: "integer" responses: 200: description: "Users matching the criteria" content: application/json: schema: type: "array" items: $ref: "#/components/schemas/QuickUser" default: description: "unexpected error" content: application/json: schema: $ref: "#/components/schemas/Error" /search/organisations: get: summary: "Searches for organisations by their attached attributes" tags: - "search" parameters: - name: "session" in: "query" description: "Session ID" required: true schema: type: "string" - name: "keys" in: "query" description: "Attribute Keys" required: true schema: type: "array" items: type: "string" - name: "values" in: "query" description: "Attribute Values" required: true schema: type: "array" items: type: "string" - name: "sortrow" in: "query" description: "Row to sort results after" required: false schema: type: "string" responses: 200: description: "Organisations matching the criteria" content: application/json: schema: type: "array" items: $ref: "#/components/schemas/Organisation" default: description: "unexpected error" content: application/json: schema: $ref: "#/components/schemas/Error" components: schemas: Key: type: "string" enum: - "organisation_id" - "organisation_ids" - "status" - "statusinfo" - "segmentid" - "firstname" - "lastname" - "title" - "coaddress" - "address1" - "address2" - "address3" - "address4" - "zipcode" - "city" - "country" - "email1" - "email2" - "phoneprivate" - "phonework" - "phonemobile" - "bestcontact" - "custid1" - "custid2" - "custid3" - "custid4" - "custid5" - "custid6" Group: properties: ID: type: "integer" description: "Group ID" name: type: "string" description: "Group Name" description: type: "string" description: "Description of group" minimumAuthenticationLevel: type: "integer" description: "Minimum authentication level required for this group" changedBy: type: "string" description: "Who changed this record" changedAt: type: "string" description: "When was this record last changed" createdBy: type: "string" description: "Who created this record" createdAt: type: "string" description: "When was this record last changed" Profile: properties: ID: type: "integer" description: "Profile ID" name: type: "string" description: "Profile Name" description: type: "string" description: "Description of profile" QuickUser: description: "A user record containing only basic attributes, not extends attributes,\ \ challenges etc." properties: id: type: "string" description: "User ID" organisation_id: type: "integer" description: "ID of organisation user belongs to, or 0 if no organisation" status: type: "integer" description: "User status" statusinfo: type: "integer" description: "More info about user status - e.g. if locked, it can contain\ \ the reason." successfulLogons: type: "integer" description: "Number of successful logons for this user" failedLogons: type: "integer" description: "Number of failed logons for this user" failedSinceLastSuccess: type: "integer" description: "Number of failed logons since last successful logon" locked: type: "boolean" description: "true if user is locked - note that locked users might be able\ \ to login depending on their status and the authentication plugins interpretation\ \ of it - e.g. the status might indicate a user is initial, in which case\ \ he can still login, but the locked flag will be set to true if status\ \ is > 0." custid1: type: "string" description: "Custom attribute 1" custid2: type: "string" description: "Custom attribute 2" custid3: type: "string" description: "Custom attribute 3" custid4: type: "string" description: "Custom attribute 4" custid5: type: "string" description: "Custom attribute 5" custid6: type: "string" description: "Custom attribute 6" bestcontact: type: "string" description: "Best time of contact" phonemobile: type: "string" description: "Mobile phone number" phonework: type: "string" description: "Work phone number" phoneprivate: type: "string" description: "Private phone number" email1: type: "string" description: "Primary email address" email2: type: "string" description: "Secondary email address" country: type: "string" description: "Country" User: properties: id: type: "string" description: "User ID" organisation_id: type: "integer" description: "ID of organisation user belongs to, or 0 if no organisation" status: type: "integer" description: "User status" statusinfo: type: "integer" description: "More info about user status - e.g. if locked, it can contain\ \ the reason." successfulLogons: type: "integer" description: "Number of successful logons for this user" failedLogons: type: "integer" description: "Number of failed logons for this user" failedSinceLastSuccess: type: "integer" description: "Number of failed logons since last successful logon" locked: type: "boolean" description: "true if user is locked - note that locked users might be able\ \ to login depending on their status and the authentication plugins interpretation\ \ of it - e.g. the status might indicate a user is initial, in which case\ \ he can still login, but the locked flag will be set to true if status\ \ is > 0." custid1: type: "string" description: "Custom attribute 1" custid2: type: "string" description: "Custom attribute 2" custid3: type: "string" description: "Custom attribute 3" custid4: type: "string" description: "Custom attribute 4" custid5: type: "string" description: "Custom attribute 5" custid6: type: "string" description: "Custom attribute 6" bestcontact: type: "string" description: "Best time of contact" phonemobile: type: "string" description: "Mobile phone number" phonework: type: "string" description: "Work phone number" phoneprivate: type: "string" description: "Private phone number" email1: type: "string" description: "Primary email address" email2: type: "string" description: "Secondary email address" country: type: "string" description: "Country" challenges: description: "Challenges which a user can identify herself with, this can\ \ be userid, password, OTP codes, TOTP secrets etc." type: "array" items: $ref: "#/components/schemas/Challenge" Challenge: description: "A Challenge describes how a user can identify herself, it can\ \ be e.g. userid and password, where the credentials is then often a hash\ \ of the real password" properties: authenticationMethodID: type: "integer" description: "ID of the authentication method this challenge is for" userID: type: "integer" description: "ID of the user record this challenge is attached to" isLocked: type: "boolean" description: "true if locked" firstLogin: type: "string" description: "The timestamp of the users first login using this challenge" lastLogin: type: "string" description: "The timestamp of the users last login using this challenge" creationDate: type: "string" description: "The timestamp of creation" logonID: type: "string" description: "LogonID, userid or username" credentials: type: "array" items: type: "number" format: "byte" description: "A byte array containing the credentials" status: type: "integer" description: "Status of challenge - or 0 for no status" failedAttempts: type: "integer" description: "Number of failed attempts to use this challenge" failedAttemptsSinceLastLogin: type: "integer" description: "Number of failed attempts to use this challenge since last\ \ successful login" successFullAttempts: type: "integer" description: "Number of completed logon attempts to use this challenge" authenticationLevel: type: "integer" description: "Normal authentication level for this challenge" customAuthenticationLevel: type: "integer" description: "Authentication level customized for this individual challenge/user" authenticationMethod: $ref: "#/components/schemas/AuthenticationMethod" changedBy: type: "string" description: "Who changed this record" changedAt: type: "string" description: "When was this record last changed" createdBy: type: "string" description: "Who created this record" createdAt: type: "string" description: "When was this record last changed" ACL: description: "Access Control List (ACL) Entry" properties: name: type: "string" description: "ACL Name" description: type: "string" description: "A description of the ACL" group: type: "array" description: "Groups attached to this ACL" items: $ref: "#/components/schemas/Group" users: type: "array" description: "Users attached directly to this ACL" items: $ref: "#/components/schemas/QuickUser" changedBy: type: "string" description: "Who changed this record" changedAt: type: "string" description: "When was this record last changed" createdBy: type: "string" description: "Who created this record" createdAt: type: "string" description: "When was this record last changed" Organisation: description: "Organisation Entry" properties: ID: type: "integer" parentID: type: "integer" description: "Parent Organisation ID" name: type: "string" description: "Organisation Name" description: type: "string" description: "Organisation Description" status: type: "integer" description: "Status ID" statusinfo: type: "integer" description: "Statusinfo ID" attributes: type: "array" description: "Optional attributes" items: $ref: "#/components/schemas/Attribute" changedBy: type: "string" description: "Who changed this record" changedAt: type: "string" description: "When was this record last changed" createdBy: type: "string" description: "Who created this record" createdAt: type: "string" description: "When was this record last changed" Attribute: description: "Organisation Entry" properties: key: type: "string" description: "Attribute key" value: type: "string" description: "Attribute value" changedBy: type: "string" description: "Who changed this record" changedAt: type: "string" description: "When was this record last changed" createdBy: type: "string" description: "Who created this record" createdAt: type: "string" description: "When was this record last changed" DeliveryMethod: description: "Delivery Method - identifies a type of credentials delivery" properties: deliveryID: description: "Delivery Method ID" type: "integer" methodID: type: "integer" description: "Authentication method ID" description: type: "string" description: "Description" authenticationLevel: type: "integer" description: "This returns the level that tied to this delivery method.\ \ If this method returns -1 the standard delivery method for. the tied\ \ authentication method applies." changedBy: type: "string" description: "Who changed this record" changedAt: type: "string" description: "When was this record last changed" createdBy: type: "string" description: "Who created this record" createdAt: type: "string" description: "When was this record last changed" AuthenticationMethod: description: "Authentication Method - identifies a type of authentication" properties: methodID: type: "integer" description: "Authentication method ID" name: type: "string" description: "Name" description: type: "string" description: "Description" authenticationLevel: type: "integer" description: "This returns the level that tied to this delivery method.\ \ If this method returns -1 the standard delivery method for. the tied\ \ authentication method applies." changedBy: type: "string" description: "Who changed this record" changedAt: type: "string" description: "When was this record last changed" createdBy: type: "string" description: "Who created this record" createdAt: type: "string" description: "When was this record last changed" Status: description: "Status record" properties: ID: type: "integer" description: "Status ID" name: type: "string" description: "Status Name" description: type: "string" description: "Status Description" changedBy: type: "string" description: "Who changed this record" changedAt: type: "string" description: "When was this record last changed" createdBy: type: "string" description: "Who created this record" createdAt: type: "string" description: "When was this record last changed" StatusInfo: description: "Status Info record" properties: ID: type: "integer" description: "StatusInfo ID" statusInfo: type: "string" description: "Status Info text" changedBy: type: "string" description: "Who changed this record" changedAt: type: "string" description: "When was this record last changed" createdBy: type: "string" description: "Who created this record" createdAt: type: "string" description: "When was this record last changed" Error: required: - "code" - "message" properties: code: type: "integer" format: "int32" message: type: "string" |