OutSystems ODC User and Access Management API

REST endpoints for retrieving and managing users, groups, application roles, organization roles, permissions, identity providers, OIDC clients, realms and subjects in an OutSystems Developer Cloud organization. 37 operations.

OpenAPI Specification

outsystems-user-access-management-api-v1-openapi.json Raw ↑
{
  "openapi": "3.0.3",
  "info": {
    "title": "User and Access Management API",
    "description": "REST endpoints for retrieving and managing user and access in your organization.",
    "version": "v1"
  },
  "servers": [
    {
      "url": "https://ODC_PORTAL_DOMAIN/api/identity/v1",
      "description": "Replace ODC_PORTAL_DOMAIN with the domain of your organization."
    },
    {
      "url": "https://{odc-portal-domain}/api/identity/v1",
      "description": "User and Access Management API",
      "variables": {
        "odc-portal-domain": {
          "default": "ODC_PORTAL_DOMAIN",
          "description": "The domain of your organization"
        }
      }
    }
  ],
  "paths": {
    "/application-roles": {
      "get": {
        "tags": [
          "application-roles"
        ],
        "summary": "Returns a list of application roles.",
        "description": "Returns a list of application roles that match the specified filters. Use query parameters to refine the search.\n\nAPI Client needs the **User management > View end users** permission.",
        "operationId": "ApplicationRole_QueryApplicationRoles",
        "parameters": [
          {
            "name": "key",
            "in": "query",
            "description": "The application role key.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "assetKey",
            "in": "query",
            "description": "The asset key that the application role belongs to.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "environmentKey",
            "in": "query",
            "description": "Filters application roles by environment key (stage). Mutually exclusive with `environmentKeys`.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "environmentKeys",
            "in": "query",
            "description": "Filters application roles by environment keys (stages). Comma-separated list of environment keys. Mutually exclusive with `environmentKey`.",
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "format": "uuid"
              }
            }
          },
          {
            "name": "portfolioKeys",
            "in": "query",
            "description": "Only returns application roles in environments belonging to the specified portfolios.",
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "format": "uuid"
              }
            }
          },
          {
            "name": "nameContains",
            "in": "query",
            "description": "Filters application roles by name.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Used for sorting the list. Ascending by default. Prepend a hyphen, \"-\", to get a descending sort, for example \"-name\". Default: name. Allowed: name, environmentKey or assetKey.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of results returned. Allowed values: 1 to 100 Default value: 100.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Offset of the first result returned. Default value: 0.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApplicationRoleApiResponsePaginatedResponseApi"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-os-permissions": "API Client needs the **User management > View end users** permission."
      }
    },
    "/application-roles/{key}/users": {
      "get": {
        "tags": [
          "application-roles"
        ],
        "summary": "Returns the list of users for the specific application role.",
        "description": "Returns a list of users that match the specified filters. Use query parameters to refine the search.\n\nAPI Client needs the **User management > View end users** permission.",
        "operationId": "ApplicationRole_QueryUsersByApplicationRole",
        "parameters": [
          {
            "name": "key",
            "in": "path",
            "description": "Application role key.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "userKey",
            "in": "query",
            "description": "User's key to search.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "nameOrEmailContains",
            "in": "query",
            "description": "Filters users by name or email address. Parameter value must be URL-encoded (percent-encoding) to ensure it's correctly interpreted by the server. Example: Searching for an email with a +\n            \n Incorrect: .../users?email=`john+doe@example.com`.\n            \n Correct: .../users?email=`john%2Bdoe@example.com`",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "nameOrEmailOrUsernameContains",
            "in": "query",
            "description": "Filters users by name or email address or username.. Parameter value must be URL-encoded (percent-encoding) to ensure it's correctly interpreted by the server. Example: Searching for an email with a +\n            \n Incorrect: .../users?email=`john+doe@example.com`.\n            \n Correct: .../users?email=`john%2Bdoe@example.com`",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "lastLoginAtSince",
            "in": "query",
            "description": "Only returns users whose last login occurred on or after the specified date and time.",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "lastLoginAtTo",
            "in": "query",
            "description": "Only returns users whose last login occurred before or on the specified date and time.",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of results returned. Allowed values: 1 to 100 Default value: 100.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Offset of the first result returned. Default value: 0.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Used for sorting the list. Ascending by default. Prepend a hyphen, \"-\", to get a descending sort, for example \"-name\". Default: name. Allowed: userKey, name, email, status, lastLoginAt.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "embed",
            "in": "query",
            "description": "List of fields to embed in the response.",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/components/schemas/UserProfileEmbedType"
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RoleUserResponsePaginatedResponseApi"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-os-permissions": "API Client needs the **User management > View end users** permission."
      }
    },
    "/users/bulk": {
      "post": {
        "tags": [
          "users"
        ],
        "summary": "Bulk create users and optionally in the built-in identity provider.",
        "description": "The number of users added must be between 1 and 100 (inclusive), otherwise a bad request is returned.\nReturns an operations status object with an operation key that can be used later to get the status of the bulk create.\n            \nAPI Client needs the User management > Manage users permission.\n\nAPI Client needs the **User management > Manage users** permission.",
        "operationId": "BulkUserProfile_CreateBulkUserProfilesOperation",
        "requestBody": {
          "description": "Bulk Create User Request.",
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/UserProfileCreateApiRequestBulkApiRequest"
                  }
                ]
              }
            },
            "application/*+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/UserProfileCreateApiRequestBulkApiRequest"
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "202": {
            "description": "Accepted",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BulkUserProfileOperationApiRecordBulkApiResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-os-permissions": "API Client needs the **User management > Manage users** permission."
      }
    },
    "/users/bulk/{key}": {
      "get": {
        "tags": [
          "users"
        ],
        "summary": "Get the bulk user operation status.",
        "description": "Returns an operations status object that contains the overall status of the bulk operation.\nIf the bulk operation has a Finished or FinishedWithError status,\nthe result of each and every item in the list is returned as well.\nIf the bulk operation has a Pending or Processing status, only the overall status is returned.\n            \nAPI Client needs the User management > Manage users permission.\n\nAPI Client needs the **User management > Manage users** permission.",
        "operationId": "BulkUserProfile_GetBulkUserProfileOperationStatus",
        "parameters": [
          {
            "name": "key",
            "in": "path",
            "description": "Key of the operation that was obtained during submitting bulk operation.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BulkUserProfileOperationApiRecordBulkApiResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-os-permissions": "API Client needs the **User management > Manage users** permission."
      }
    },
    "/groups/{key}/users": {
      "patch": {
        "tags": [
          "groups"
        ],
        "summary": "Allow to add or remove users from a group.",
        "description": "Allows adding or removing users from a specified group. Manage group membership by specifying the group key and providing lists of user keys to be added or removed.\n\nAPI Client needs the **User management > Manage end-user groups** permission.",
        "operationId": "Group_AddOrRemoveUsersFromGroup",
        "parameters": [
          {
            "name": "key",
            "in": "path",
            "description": "The group key.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "description": "The request object.",
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/PatchUsersByGroupRequest"
                  }
                ]
              }
            },
            "application/*+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/PatchUsersByGroupRequest"
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-os-permissions": "API Client needs the **User management > Manage end-user groups** permission."
      },
      "get": {
        "tags": [
          "groups"
        ],
        "summary": "Returns a list of users associated with a group.",
        "description": "Returns a list of users associated with a group that match the specified filters. Use query parameters to refine the search.\n\nAPI Client needs the **User management > Manage end-user groups** permission.",
        "operationId": "Group_QueryUsersFromGroup",
        "parameters": [
          {
            "name": "key",
            "in": "path",
            "description": "The group's key.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "userKey",
            "in": "query",
            "description": "The user's key. Mutually exclusive with `userKeys`.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "userKeys",
            "in": "query",
            "description": "Only returns the users matching any of the specified keys. Comma-separated list of user keys. Mutually exclusive with `userKey`.",
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "format": "uuid"
              }
            }
          },
          {
            "name": "nameOrEmailContains",
            "in": "query",
            "description": "Filters users by name or email address. Parameter value must be URL-encoded (percent-encoding) to ensure it's correctly interpreted by the server. Example: Searching for an email with a +\n            \n Incorrect: .../users?email=`john+doe@example.com`.\n            \n Correct: .../users?email=`john%2Bdoe@example.com`",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "nameOrEmailOrUsernameContains",
            "in": "query",
            "description": "Filters users by name or email or username. Parameter value must be URL-encoded (percent-encoding) to ensure it's correctly interpreted by the server. Example: Searching for an email with a +\n            \n Incorrect: .../users?email=`john+doe@example.com`.\n            \n Correct: .../users?email=`john%2Bdoe@example.com`",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "lastLoginAtSince",
            "in": "query",
            "description": "Only returns users whose last login occurred on or after the specified date and time.",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "lastLoginAtTo",
            "in": "query",
            "description": "Only returns users whose last login occurred before or on the specified date and time.",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "membershipType",
            "in": "query",
            "description": "Filters users by membership type that can be `Assigned` or `Mapped`.",
            "schema": {
              "allOf": [
                {
                  "$ref": "#/components/schemas/MembershipType"
                }
              ]
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of results returned. Allowed values: 1 to 100 Default value: 100.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Offset of the first result returned. Default value: 0.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Used for sorting the list. Ascending by default. Prepend a hyphen, \"-\", to get a descending sort, for example \"-name\". Default: name. Allowed: key, name, email, status, lastLoginAt.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "embed",
            "in": "query",
            "description": "List of fields to embed in the response.",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/components/schemas/UserProfileEmbedType"
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GroupUserResponsePaginatedResponseApi"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-os-permissions": "API Client needs the **User management > Manage end-user groups** permission."
      }
    },
    "/groups": {
      "post": {
        "tags": [
          "groups"
        ],
        "summary": "Creates a new group.",
        "description": "Creates a new group by specifying a name and environment (stage). Optionally, you can include a list of users and application roles to assign to the group during creation.\n\nAPI Client needs the **User management > Manage end-user groups** permission.",
        "operationId": "Group_CreateGroup",
        "requestBody": {
          "description": "Group object with the necessary information.",
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/GroupCreateRequest"
                  }
                ]
              }
            },
            "application/*+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/GroupCreateRequest"
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GroupCreateResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-os-permissions": "API Client needs the **User management > Manage end-user groups** permission."
      },
      "get": {
        "tags": [
          "groups"
        ],
        "summary": "Returns the list of groups based on specified conditions.",
        "description": "Returns a list of groups that match the specified filters. Use query parameters to refine the search.\n\nAPI Client needs the **User management > Manage end-user groups** permission.",
        "operationId": "Group_QueryGroups",
        "parameters": [
          {
            "name": "nameContains",
            "in": "query",
            "description": "Filters users by name.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "environmentKey",
            "in": "query",
            "description": "Only returns groups associated with the specified environment (stage). Mutually exclusive with `environmentKeys`.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "environmentKeys",
            "in": "query",
            "description": "Only returns groups associated with any of the specified environments (stages). Comma-separated list of environment keys. Mutually exclusive with `environmentKey`.",
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "format": "uuid"
              }
            }
          },
          {
            "name": "identityProviderKey",
            "in": "query",
            "description": "Only returns groups with claim mappings for the specified identity provider.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "portfolioKeys",
            "in": "query",
            "description": "Only returns groups in environments belonging to any of the specified portfolios.",
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "format": "uuid"
              }
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of results returned. Allowed values: 1 to 100 Default value: 100.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Offset of the first result returned. Default value: 0.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GroupApiResponsePaginatedResponseApi"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application

# --- truncated at 32 KB (196 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/outsystems/refs/heads/main/openapi/outsystems-user-access-management-api-v1-openapi.json