Atlassian: Create user
Atlassian users.createUser: arguments, response, policy and SDK examples.
← Users operations · Get started
Operation atlassian.createuser
Provider route: POST /{cloudId}/rest/api/3/user. Alter supplies the connection’s credentials and routing.
Call through Alter
Section titled “Call through Alter”Install @alter-ai/sdk @alter-ai/atlassian with npm, or alter-sdk-atlassian with pip. Supply your connected customer’s grant ID and the arguments described below.
import { App } from "@alter-ai/sdk";import { AtlassianIntegration } from "@alter-ai/atlassian";
async function execute(input: Parameters<AtlassianIntegration["users"]["createUser"]>[0]) { const app = new App({ apiKey: process.env.ALTER_API_KEY! }); try { const provider = new AtlassianIntegration(app, { grantId: process.env.PROVIDER_GRANT_ID! }); const call = await provider.users.createUser(input); const result = await call.wait(); return result.bodyJson(); } finally { await app.close(); }}import osfrom alter_sdk import Appfrom alter_sdk_atlassian import AtlassianIntegration
async def execute(arguments): async with App(api_key=os.environ["ALTER_API_KEY"]) as app: provider = AtlassianIntegration(app, {"grant_id": os.environ["PROVIDER_GRANT_ID"]}) call = await provider.users.create_user(arguments) result = await call.wait() return result.body_json()| Field | Type | Presence | Description and constraints |
|---|---|---|---|
$ | object | Root | Additional keys: not allowed |
path | object | Required within parent | Additional keys: not allowed |
path.cloudId | string | Required within parent | Pattern: ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$ |
body | Model | Required within parent | Expand Create user — request body — body |
Referenced models: Create user — request body — body
Response
Section titled “Response”Response media type: application/json. The table describes the pinned successful response. Referenced models link to their complete fields.
| Field | Type | Presence | Description and constraints |
|---|---|---|---|
$ | JSON | Root | |
$ (anyOf 1) | Model | Alternative | Expand Get user — response body |
$ (anyOf 2) | Model | Alternative | Expand Get user — response body |
Referenced models: Get user — response body
Schemas
Section titled “Schemas”3 more schemas are linked from the tables above, on the schema pages.
Create user — request body — body
| Field | Type | Presence | Description and constraints |
|---|---|---|---|
$ | object | Root | The user details. Additional keys: allowed |
applicationKeys | array | Optional | Deprecated, do not use. |
applicationKeys[] | string | Each item | |
displayName | string | Optional | This property is no longer available. If the user has an Atlassian account, their display name is not changed. If the user does not have an Atlassian account, they are sent an email asking them set up an account. |
emailAddress | string | Required within parent | The email address for the user. |
key | string | Optional | This property is no longer available. See the [migration guide](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide/) for details. |
name | string | Optional | This property is no longer available. See the [migration guide](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide/) for details. |
password | string | Optional | This property is no longer available. If the user has an Atlassian account, their password is not changed. If the user does not have an Atlassian account, they are sent an email asking them set up an account. |
products | array | Required within parent | Products the new user has access to. Valid products are: jira-core, jira-servicedesk, jira-product-discovery, jira-software. To create a user without product access, set this field to be an empty array. Unique items: true |
products[] | string | Each item | |
self | string | Optional | The URL of the user. Read only: true |
Get user — response body
| Field | Type | Presence | Description and constraints |
|---|---|---|---|
$ | object | Root | A user with details as permitted by the user's Atlassian Account privacy settings. However, be aware of these exceptions: * User record deleted from Atlassian: This occurs as the result of a right to be forgotten request. In this case, `displayName` provides an indication and other parameters have default values or are blank (for example, email is blank). * User record corrupted: This occurs as a results of events such as a server import and can only happen to deleted users. In this case, `accountId` returns *unknown* and all other parameters have fallback values. * User record unavailable: This usually occurs due to an internal service outage. In this case, all parameters have fallback values. |
accountId | JSON | Optional | |
accountId (anyOf 1) | string | Alternative | The account ID of the user, which uniquely identifies the user across all Atlassian products. For example, *5b10ac8d82e05b22cc7d4ef5*. Required in requests. Maximum length: 128 |
accountId (anyOf 2) | null | Alternative | |
accountType | JSON | Optional | |
accountType (anyOf 1) | string | Alternative | The user account type. Can take the following values: * `atlassian` regular Atlassian user account * `app` system account used for Connect applications and OAuth to represent external systems * `customer` Jira Service Desk account representing an external service desk Known values: atlassian, app, customer, unknown Read only: true |
accountType (anyOf 2) | null | Alternative | |
active | JSON | Optional | |
active (anyOf 1) | boolean | Alternative | Whether the user is active. Read only: true |
active (anyOf 2) | null | Alternative | |
appType | JSON | Optional | |
appType (anyOf 1) | string | Alternative | The app type of the user account when accountType is 'app'. Can take the following values: * `service` Service Account * `agent` Rovo Agent Account * `unknown` Unknown app type Read only: true |
appType (anyOf 2) | null | Alternative | |
applicationRoles | JSON | Optional | |
applicationRoles (anyOf 1) | Model | Alternative | Expand Get user — response body — application Roles callback, items, max-results, paging Callback, size The application roles the user is assigned to. Read only: true |
applicationRoles (anyOf 2) | null | Alternative | |
avatarUrls | JSON | Optional | |
avatarUrls (anyOf 1) | Model | Alternative | Expand Get user — response body — avatar Urls 16x16, 24x24, 32x32, 48x48 The avatars of the user. Read only: true |
avatarUrls (anyOf 2) | null | Alternative | |
displayName | JSON | Optional | |
displayName (anyOf 1) | string | Alternative | The display name of the user. Depending on the user’s privacy setting, this may return an alternative value. Read only: true |
displayName (anyOf 2) | null | Alternative | |
emailAddress | JSON | Optional | |
emailAddress (anyOf 1) | string | Alternative | The email address of the user. Depending on the user’s privacy setting, this may be returned as null. Read only: true |
emailAddress (anyOf 2) | null | Alternative | |
expand | JSON | Optional | |
expand (anyOf 1) | string | Alternative | Expand options that include additional user details in the response. Read only: true |
expand (anyOf 2) | null | Alternative | |
groups | JSON | Optional | |
groups (anyOf 1) | Model | Alternative | Expand Get user — response body — groups callback, items, max-results, paging Callback, size The groups that the user belongs to. Read only: true |
groups (anyOf 2) | null | Alternative | |
guest | JSON | Optional | |
guest (anyOf 1) | boolean | Alternative | Whether the user is a guest. Read only: true |
guest (anyOf 2) | null | Alternative | |
key | JSON | Optional | |
key (anyOf 1) | string | Alternative | This property is no longer available and will be removed from the documentation soon. See the [deprecation notice](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide/) for details. |
key (anyOf 2) | null | Alternative | |
locale | JSON | Optional | |
locale (anyOf 1) | string | Alternative | The locale of the user. Depending on the user’s privacy setting, this may be returned as null. Read only: true |
locale (anyOf 2) | null | Alternative | |
name | JSON | Optional | |
name (anyOf 1) | string | Alternative | This property is no longer available and will be removed from the documentation soon. See the [deprecation notice](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide/) for details. |
name (anyOf 2) | null | Alternative | |
self | JSON | Optional | |
self (anyOf 1) | string | Alternative | The URL of the user. Format: uri Read only: true |
self (anyOf 2) | null | Alternative | |
timeZone | JSON | Optional | |
timeZone (anyOf 1) | string | Alternative | The time zone specified in the user's profile. If the user's time zone is not visible to the current user (due to user's profile setting), or if a time zone has not been set, the instance's default time zone will be returned. Read only: true |
timeZone (anyOf 2) | null | Alternative |
Referenced models: Get user — response body — avatar Urls 16x16, 24x24, 32x32, 48x48, Get user — response body — application Roles callback, items, max-results, paging Callback, size, Get user — response body — groups callback, items, max-results, paging Callback, size
Get user — response body — avatar Urls 16x16, 24x24, 32x32, 48x48
| Field | Type | Presence | Description and constraints |
|---|---|---|---|
$ | object | Root | |
16x16 | JSON | Optional | |
16x16 (anyOf 1) | string | Alternative | The URL of the item's 16x16 pixel avatar. Format: uri |
16x16 (anyOf 2) | null | Alternative | |
24x24 | JSON | Optional | |
24x24 (anyOf 1) | string | Alternative | The URL of the item's 24x24 pixel avatar. Format: uri |
24x24 (anyOf 2) | null | Alternative | |
32x32 | JSON | Optional | |
32x32 (anyOf 1) | string | Alternative | The URL of the item's 32x32 pixel avatar. Format: uri |
32x32 (anyOf 2) | null | Alternative | |
48x48 | JSON | Optional | |
48x48 (anyOf 1) | string | Alternative | The URL of the item's 48x48 pixel avatar. Format: uri |
48x48 (anyOf 2) | null | Alternative |
Get user — response body — groups callback, items, max-results, paging Callback, size callback object
| Field | Type | Presence | Description and constraints |
|---|---|---|---|
$ | object | Root |
Get user groups — response body — item
| Field | Type | Presence | Description and constraints |
|---|---|---|---|
$ | object | Root | Details about a group. |
groupId | JSON | Optional | |
groupId (anyOf 1) | JSON | Alternative | |
groupId (anyOf 1) (anyOf 1) | string | Alternative | The ID of the group, which uniquely identifies the group across all Atlassian products. For example, *952d12c3-5b5b-4d04-bb32-44d383afc4b2*. |
groupId (anyOf 1) (anyOf 2) | null | Alternative | |
groupId (anyOf 2) | null | Alternative | |
name | JSON | Optional | |
name (anyOf 1) | string | Alternative | The name of group. |
name (anyOf 2) | null | Alternative | |
self | JSON | Optional | |
self (anyOf 1) | string | Alternative | The URL for these group details. Format: uri Read only: true |
self (anyOf 2) | null | Alternative |
Policy, approvals and errors
Section titled “Policy, approvals and errors”SDK function policy ID: atlassian.createuser. Catalog operation: createuser. Rules can name either ID; function rules distinguish managed calls and conservatively cover raw calls sharing the route. Existing grant permissions and policy rules apply. wait() returns an immediate result or waits for a required approval; it never approves the request itself. Persist the approval ID to resume after a restart.
Provider errors retain their response; JSON decoding raises ProviderAPIError for provider failures. ManagedOperationError identifies contract/input/retention errors. See error handling and provider-specific behavior. Sensitive input may be refused before approval storage. A decoding error never resubmits a write.
Required provider scopes: ["manage:jira-configuration"]