Create a Database User¶
Groups and projects are synonymous terms. Your {GROUP-ID}
is the
same as your project ID. For existing groups, your group/project ID
remains the same. The resource and corresponding endpoints use the
term groups
.
https://cloud.mongodb.com/api/atlas/v1.0
The Atlas API uses HTTP Digest Authentication. Provide your Atlas username as the username and Atlas API key as the password as part of the HTTP request.
This endpoint requires that the Atlas user has the Owner
role. To view the available Atlas users, click on
Users & Teams in the left-hand navigation.
For complete documentation on configuring API access for an Atlas project, see Configure Atlas API Access.
Atlas supports a maximum of 100 database users per Atlas project.
If you require more than 100 database users on a project, please contact Atlas support.
Syntax¶
POST /api/atlas/v1.0/groups/{GROUP-ID}/databaseUsers
Request Path Parameters¶
Path Parameter | Type | Necessity | Description |
---|---|---|---|
GROUP-ID | string | Required | Unique identifier for the project. |
Request Query Parameters¶
This endpoint may use any of the HTTP request query parameters available to all Atlas API resources. These are all optional.
Name | Type | Necessity | Description | Default | ||||
---|---|---|---|---|---|---|---|---|
pageNum | integer | Optional | Page number (1-based). | 1 | ||||
itemsPerPage | integer | Optional | Maximum number of items to return, up to a maximum of 100. | 100 | ||||
includeCount | boolean | Optional | Specifies whether the response returns the totalCount field. | true | ||||
pretty | boolean | Optional | Indicates whether the response body should be in a prettyprint format. | false | ||||
envelope | boolean | Optional | Flag indicating if Atlas should wrap the response in a JSON envelope. Some API clients cannot access the HTTP response headers or
status code. To remediate this, set For endpoints that return one result, the response body includes:
For endpoints that return a list of results, the results object is an envelope. Atlas adds the status field to the response body. | false |
Request Body Parameters¶
Body Parameter | Type | Necessity | Description | ||||||
---|---|---|---|---|---|---|---|---|---|
databaseName | string | Required | Database against which Atlas authenticates the user. A user must provide both a username and authentication database to log into MongoDB. Accepted values include:
| ||||||
deleteAfterDate | string | Optional | Timestamp in ISO 8601 date and time format in UTC after which Atlas deletes the user. The specified date must be in the future and within one week of the time you make the API request. Note You may include an ISO 8601 time zone designator to ensure that the expiration date occurs with respect to the local time in the specified time zone. | ||||||
labels | array of documents | Optional | Array containing key-value pairs that tag and categorize the database user. Each key and value has a maximum length of 255 characters.
| ||||||
ldapAuthType | string | Optional | Method by which the provided Accepted values include:
| ||||||
x509Type | string | Optional | X.509 method by which the provided The accepted types are:
| ||||||
awsIAMType | string | Optional | If this value is set, the new database user authenticates with AWS IAM credentials.
If no value is given, Atlas uses the default value of The accepted types are:
| ||||||
groupId | string | Required | Unique identifier of the Atlas project to which the user belongs. | ||||||
roles | array of documents | Required | Array of this user's roles and the databases / collections on
which the roles apply. A role allows the user to perform
particular actions on the specified database. A role on the
Note The available privilege actions for custom roles support a
subset of MongoDB commands. See
Unsupported Commands in Important If a user is assigned a custom role, they cannot be assigned any other roles. | ||||||
roles .collectionName | string | Required | Collection for which the role applies. You can specify a collection for the Note When applied to a collection, the In Atlas, In Atlas, | ||||||
roles .databaseName | string | Required | Database on which the user has the specified role. A role
on the admin database can include privileges that apply to
the other databases. | ||||||
roles .roleName | string | Required | Name of the role. This value can either be a built-in role or a custom role. The following accepted values of
The following accepted values of
The following accepted values of
If you do not specify a collection for the Note If you specify a custom role name in
this field, the | ||||||
scopes | array of documents | Optional | Array of clusters and Atlas Data Lake s that this user has access to. If omitted, Atlas grants the user access to all the clusters and Atlas Data Lake s in the project by default.
| ||||||
scopes.name | string | Required | Name of the cluster or Atlas Data Lake that the user has access to. | ||||||
scopes.type | string | Required | Type of resource that the user has access to. Valid values are:
| ||||||
password | string | Conditional | User's password. Required if:
This field is not included in the server response. | ||||||
username | string | Required | Username for authenticating to MongoDB. Must be a fully qualified distinguished name, as defined in RFC-2253, if:
Must be an Amazon Resource Name (ARN) if:
|
Response Elements¶
If you set the query element envelope
to true
, the response is
wrapped by the content
object.
Response Element | Type | Description | ||||||
---|---|---|---|---|---|---|---|---|
databaseName | string | The user's authentication database. A user must provide both a username and authentication database to log into MongoDB. Returned values include:
| ||||||
deleteAfterDate | string | Timestamp in ISO 8601 date and time format in UTC after which Atlas deletes the user. This field is only present if an expiration date was specified when creating the entry. | ||||||
groupId | string | Unique identifier of the Atlas project to which the user belongs. | ||||||
labels | array of documents | Array containing key-value pairs that tag and categorize the database user. | ||||||
ldapAuthType | string | Method by which the specified Returned values include:
| ||||||
x509Type | string | X.509 method by which the provided The possible types are:
| ||||||
awsIAMType | string | If this value is set, the new database user authenticates with AWS IAM credentials. Possible response values are:
| ||||||
links | document array | One or more links to sub-resources and/or related resources. | ||||||
roles | string array | Array of this user's roles and the databases / collections on
which the roles apply. A role allows the user to perform
particular actions on the specified database. A role on the
admin database can include privileges that apply to the
other databases as well. | ||||||
roles .collectionName | string | Collection on which the user has the specified role. | ||||||
roles .databaseName | string | Database on which the user has the specified role. A role on the
admin database can include privileges that apply to the
other databases. | ||||||
roles .roleName | string | Name of the role. The accepted values are:
| ||||||
scopes | array of documents | Array of clusters and Atlas Data Lake s that this user has access to. Returns an empty array if the user has access to all the clusters and Atlas Data Lake s in the project. Database users are granted access to all resources by default. | ||||||
scopes.name | string | Name of the cluster or Atlas Data Lake that this user has access to. | ||||||
scopes.type | string | Type of resource that this user has access to. Valid values are:
| ||||||
username | string | Username for authenticating to MongoDB. A fully qualified distinguished name, as defined in RFC-2253, is returned if:
An ARN is returned if:
|
Examples¶
Request¶
Create a database user that Atlas authenticates using
SCRAM-SHA and the admin
database.
You must modify the following code block with the appropriate credentials and project ID.
1 curl --user "{PUBLIC-KEY}:{PRIVATE-KEY}" --digest \ 2 --header "Accept: application/json" \ 3 --header "Content-Type: application/json" \ 4 --include \ 5 --request POST "https://cloud.mongodb.com/api/atlas/v1.0/groups/{PROJECT-ID}/databaseUsers" \ 6 --data ' 7 { 8 "databaseName": "admin", 9 "password": "changeme123", 10 "roles": [{ 11 "databaseName": "sales", 12 "roleName": "readWrite" 13 }, { 14 "databaseName": "marketing", 15 "roleName": "read" 16 }], 17 "scopes": [{ 18 "name": "myCluster", 19 "type": "CLUSTER" 20 }], 21 "username": "david" 22 }'
Response Header¶
HTTP/1.1 401 Unauthorized Content-Type: application/json;charset=ISO-8859-1 Date: {dateInUnixFormat} WWW-Authenticate: Digest realm="MMS Public API", domain="", nonce="{nonce}", algorithm=MD5, op="auth", stale=false Content-Length: {requestLengthInBytes} Connection: keep-alive
HTTP/1.1 201 Created Vary: Accept-Encoding Content-Type: application/json Strict-Transport-Security: max-age=300 Date: {dateInUnixFormat} Connection: keep-alive Content-Length: {requestLengthInBytes}
Response Body¶
{ "databaseName": "admin", "groupId": "{PROJECT-ID}", "labels": [], "ldapAuthType": "NONE", "links": [ { "href": "https://cloud.mongodb.com/api/atlas/v1.0/groups/{PROJECT-ID}/databaseUsers/admin/david", "rel": "self" } ], "roles": [ { "databaseName": "sales", "roleName": "readWrite" }, { "databaseName": "marketing", "roleName": "read" } ], "scopes": [ { "name": "myCluster", "type": "CLUSTER" } ], "username": "david", "x509Type": "NONE" }