๐Ÿ‘ฅ
User
The user management REST API lets you manage users (managed accounts) in an organization. Only an organization admin can edit the details of a managed account. As an organization admin with verified domains, you can use the user management REST API to perform operations including:
  • Get a list of your permissions to manage a user
  • Get information about a user
  • Update a user profile or set a user's email address
  • Enable or disable a user

Get user management permissions

Returns the set of permissions you have for managing the specified Atlassian account
package main
โ€‹
import (
"context"
"github.com/ctreminiom/go-atlassian/admin"
"log"
"os"
)
โ€‹
func main() {
โ€‹
//ATLASSIAN_ADMIN_TOKEN
var apiKey = os.Getenv("ATLASSIAN_ADMIN_TOKEN")
โ€‹
cloudAdmin, err := admin.New(nil)
if err != nil {
log.Fatal(err)
}
โ€‹
cloudAdmin.Auth.SetBearerToken(apiKey)
cloudAdmin.Auth.SetUserAgent("curl/7.54.0")
โ€‹
var accountID = "606a7ff396e8d60068a5c652"
โ€‹
permissions, response, err := cloudAdmin.User.Permissions(context.Background(), accountID, nil)
if err != nil {
if response != nil {
log.Println("Response HTTP Response", string(response.BodyAsBytes))
}
log.Fatal(err)
}
โ€‹
log.Println("Response HTTP Code", response.StatusCode)
log.Println("HTTP Endpoint Used", response.Endpoint)
โ€‹
log.Println(permissions.APITokenDelete.Allowed)
log.Println(permissions.EmailSet.Allowed)
}
โ€‹

Get profile

Returns information about a single Atlassian account by ID
package main
โ€‹
import (
"context"
"github.com/ctreminiom/go-atlassian/admin"
"log"
"os"
)
โ€‹
func main() {
โ€‹
//ATLASSIAN_ADMIN_TOKEN
var apiKey = os.Getenv("ATLASSIAN_ADMIN_TOKEN")
โ€‹
cloudAdmin, err := admin.New(nil)
if err != nil {
log.Fatal(err)
}
โ€‹
cloudAdmin.Auth.SetBearerToken(apiKey)
cloudAdmin.Auth.SetUserAgent("curl/7.54.0")
โ€‹
var accountID = "606a7ff396e8d60068a5c652"
โ€‹
user, response, err := cloudAdmin.User.Get(context.Background(), accountID)
if err != nil {
if response != nil {
log.Println("Response HTTP Response", string(response.BodyAsBytes))
}
log.Fatal(err)
}
โ€‹
log.Println("Response HTTP Code", response.StatusCode)
log.Println("HTTP Endpoint Used", response.Endpoint)
โ€‹
log.Println(user.Account.Name, user.Account.AccountType)
}
โ€‹
๐Ÿงšโ€โ™€๏ธ Tips: You can extract the following struct tags
type UserScheme struct {
Account struct {
AccountID string `json:"account_id"`
Name string `json:"name"`
Nickname string `json:"nickname"`
Zoneinfo string `json:"zoneinfo"`
Locale string `json:"locale"`
Email string `json:"email"`
Picture string `json:"picture"`
ExtendedProfile struct {
JobTitle string `json:"job_title"`
TeamType string `json:"team_type"`
} `json:"extended_profile"`
AccountType string `json:"account_type"`
AccountStatus string `json:"account_status"`
EmailVerified bool `json:"email_verified"`
PrivacySettings struct {
Name string `json:"name"`
Nickname string `json:"nickname"`
Picture string `json:"picture"`
ExtendedProfileJobTitle string `json:"extended_profile.job_title"`
ExtendedProfileDepartment string `json:"extended_profile.department"`
ExtendedProfileOrganization string `json:"extended_profile.organization"`
ExtendedProfileLocation string `json:"extended_profile.location"`
ZoneInfo string `json:"zoneinfo"`
Email string `json:"email"`
ExtendedProfilePhoneNumber string `json:"extended_profile.phone_number"`
ExtendedProfileTeamType string `json:"extended_profile.team_type"`
} `json:"privacy_settings"`
} `json:"account"`
}

Update profile

Updates fields in a user account. The profile.write privilege details which fields you can change.
package main
โ€‹
import (
"context"
"github.com/ctreminiom/go-atlassian/admin"
"log"
"os"
)
โ€‹
func main() {
โ€‹
//ATLASSIAN_ADMIN_TOKEN
var apiKey = os.Getenv("ATLASSIAN_ADMIN_TOKEN")
โ€‹
cloudAdmin, err := admin.New(nil)
if err != nil {
log.Fatal(err)
}
โ€‹
cloudAdmin.Auth.SetBearerToken(apiKey)
cloudAdmin.Auth.SetUserAgent("curl/7.54.0")
โ€‹
var accountID = "5e5f6a63157ed50cd2b9eaca"
โ€‹
/*
-------------- NOTE --------------
The fields the endpoint can edit depends how you configured the user provisioning, for example:
If the provisioning is made using the GSuite integration or the SCIM connector, you won't be able to
edit that field using this endpoint because that field is blocked.
โ€‹
You can check the availability using the Permission method and searching on the tag permissions.EmailSet.Allowed
-------------- NOTE --------------
*/
var payload = make(map[string]interface{})
payload["nickname"] = "marshmallow"
โ€‹
userUpdated, response, err := cloudAdmin.User.Update(context.Background(), accountID, payload)
if err != nil {
if response != nil {
log.Println("Response HTTP Response", string(response.BodyAsBytes))
}
log.Fatal(err)
}
โ€‹
log.Println("Response HTTP Code", response.StatusCode)
log.Println("HTTP Endpoint Used", response.Endpoint)
log.Println("New NickName, ", userUpdated.Account.Nickname)
โ€‹
}
โ€‹

Disable a user

Disables the specified user account. The permission to make use of this resource is exposed by the lifecycle.enablement privilege. You can optionally set a message associated with the block that will be shown to the user on attempted authentication. If none is supplied, a default message will be used.
package main
โ€‹
import (
"context"
"github.com/ctreminiom/go-atlassian/admin"
"log"
"os"
)
โ€‹
func main() {
โ€‹
//ATLASSIAN_ADMIN_TOKEN
var apiKey = os.Getenv("ATLASSIAN_ADMIN_TOKEN")
โ€‹
cloudAdmin, err := admin.New(nil)
if err != nil {
log.Fatal(err)
}
โ€‹
cloudAdmin.Auth.SetBearerToken(apiKey)
cloudAdmin.Auth.SetUserAgent("curl/7.54.0")
โ€‹
/*
--------- NOTE ---------
You can only disable an account if it's not related to a SCIM integration (GSUITE)
--------- NOTE ---------
*/
โ€‹
var accountID = "5e5f6a63157ed50cd2b9eaca"
โ€‹
response, err := cloudAdmin.User.Disable(context.Background(), accountID, "Sample message")
if err != nil {
if response != nil {
log.Println("Response HTTP Response", string(response.BodyAsBytes))
}
log.Fatal(err)
}
โ€‹
log.Println("Response HTTP Code", response.StatusCode)
log.Println("HTTP Endpoint Used", response.Endpoint)
}
โ€‹

Enable a user

Enables the specified user account. The permission to make use of this resource is exposed by the lifecycle.enablement privilege. You can optionally set a message associated with the block that will be shown to the user on attempted authentication. If none is supplied, a default message will be used.
package main
โ€‹
import (
"context"
"github.com/ctreminiom/go-atlassian/admin"
"log"
"os"
)
โ€‹
func main() {
โ€‹
//ATLASSIAN_ADMIN_TOKEN
var apiKey = os.Getenv("ATLASSIAN_ADMIN_TOKEN")
โ€‹
cloudAdmin, err := admin.New(nil)
if err != nil {
log.Fatal(err)
}
โ€‹
cloudAdmin.Auth.SetBearerToken(apiKey)
cloudAdmin.Auth.SetUserAgent("curl/7.54.0")
โ€‹
/*
--------- NOTE ---------
You can only enable an account if it's not related to a SCIM integration (GSUITE)
--------- NOTE ---------
*/
โ€‹
var accountID = "5e5f6a63157ed50cd2b9eaca"
โ€‹
response, err := cloudAdmin.User.Enable(context.Background(), accountID)
if err != nil {
if response != nil {
log.Println("Response HTTP Response", string(response.BodyAsBytes))
}
log.Fatal(err)
}
โ€‹
log.Println("Response HTTP Code", response.StatusCode)
log.Println("HTTP Endpoint Used", response.Endpoint)
โ€‹
}
โ€‹
Last modified 10mo ago
Export as PDF
Copy link
On this page
Get user management permissions
Get profile
Update profile
Disable a user
Enable a user