Skip to main content

Používání Atlassian API

Atlassian má dvě různá API která je potřeba od sebe rozlišovat.

  1. Admin API token (zakládá se v adminí konzoli)

    API keys allow you to automate tasks in your organization through Atlassian Admin APIs

  2. Uživatelský API token používající REST API v3(zakládá se pod uživatelem)

    S tokeny API je třeba nakládat se stejnou ostražitostí jako s jakýmikoli jinými hesly. V jednu chvíli můžete vytvořit maximálně 25 tokenů.

Admin API

⚠️ Následující návod je určen pro Linux, v případě Windows stačí předělat definici proměnných a místo curl dát curl.exe

  1. Prvně je potřeba vytvořit si admin token na adrese: https://admin.atlassian.com/o/<ID-ORGANIZACE>/api-keys
  2. API klíč si nastavím do proměnné API_KEY:
    API_KEY="ZDE-UMISTI-API-KLIC-Z-ADMIN-NASTAVENI"
    

Reference: https://developer.atlassian.com/cloud/admin/rest-apis/

User management API

Musíme samozřejmě znát ID uživatele. To zjistíme buď z exportu directory, nebo z URL když si v admin centru zobrazíme uživatele.

💡 Například z adresy https://admin.atlassian.com/o/1c345c28-40b5-1bb4-6c71-6386kdc02390/members/712020:922cf7db-6cg4-4013-9523-189a1265b6dc vidíme jasně poslední segment URI => 712020:922cf7db-6cg4-4013-9523-189a1265b6dc.

ACCOUNT_ID="ZDE-UMISTI-ID-UZIVATELE"

Reference: https://developer.atlassian.com/cloud/admin/user-management/rest/intro/

Získání profilu dle ID uživatele

curl --request GET \
  --url "https://api.atlassian.com/users/${ACCOUNT_ID}/manage/profile" \
  --header "Authorization: Bearer ${API_KEY}" \
  --header 'Accept: application/json' \
  | jq

Reference: https://developer.atlassian.com/cloud/admin/user-management/rest/api-group-profile/#api-users-account-id-manage-profile-get

Aktualizace emailu dle ID uživatele

NEW_MAIL=djblyatman@cvut.cz

curl --request PUT \
  --url "https://api.atlassian.com/users/${ACCOUNT_ID}/manage/email" \
  --header "Authorization: Bearer ${API_KEY}" \
  --header 'Content-Type: application/json' \
  --data '{"email": "'"${NEW_MAIL}"'" }'

Reference: https://developer.atlassian.com/cloud/admin/user-management/rest/api-group-email/#api-group-email

Deaktivace účtu dle ID uživatele

curl --request POST \
  --url "https://api.atlassian.com/users/${ACCOUNT_ID}/manage/lifecycle/disable" \
  --header "Authorization: Bearer ${API_KEY}" \
  --header 'Content-Type: application/json' \
  --data '{ "message": "Protože chci" }'

Reference: https://developer.atlassian.com/cloud/admin/user-management/rest/api-group-lifecycle/#api-users-account-id-manage-lifecycle-disable-post

Odstranění účtu dle ID uživatele

curl --request POST \
  --url "https://api.atlassian.com/users/${ACCOUNT_ID}/manage/lifecycle/delete" \
  --header "Authorization: Bearer ${API_KEY}" \
  --header 'Content-Type: application/json'

Reference: https://developer.atlassian.com/cloud/admin/user-management/rest/api-group-lifecycle/#api-users-account-id-manage-lifecycle-delete-post

Odstranění všech kdož nejsou aktivní a jejich mail končí @cvut.it

  1. Je nutné si opatřit soubor se všemi uživateli pomocí xref:#bkmrk-z%C3%ADsk%C3%A1n%C3%AD-v%C5%A1ech-u%C5%BEivat REST
  2. API v3

REST API v3

⚠️ Následující návod je určen pro Linux, v případě Windows stačí předělat definici proměnných a místo curl dát curl.exe

  1. Prvně je potřeba vytvořit si admin token na adrese: https://id.atlassian.com/manage-profile/security/api-tokens
  2. API klíč si nastavím do proměnné MUJ_API_KEY:
    MUJ_API_KEY="ZDE-UMISTI-API-KLIC-Z-OSOBNIHO-NASTAVENI"
    

Reference: https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#version

Získání všech uživatelů do souboru JSON

ℹ️ Používá se stránkování, limit na stránku je 1000 https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#expansion

Nastavit si proměnné:

  • MUJ_LOGIN => přihlašovací email uživatele pod kterým je vytvořen MUJ_API_KEY
  • ORG_DOMAIN => doména Atlassian tenantu (*.atlassian.net).
# Promažu aktuální soubor a proměnnou do které se to během stahování načítá
unset ALL_USERS
rm all_users.json

# začnu od položky č.0
declare -i START_AT=0

# Stahuji stránku po stránce
for (( PAGE=1; PAGE=PAGE; PAGE++ )); do

  echo -e "\e[33mDownloading users API page: \e[m${PAGE}"
  API_RESPONSE=$(curl \
    --request GET \
    --url "https://${ORG_DOMAIN}/rest/api/3/users/search?maxResults=1000&startAt=${START_AT}" \
    -u "${MUJ_LOGIN}:${MUJ_API_KEY}" \
    --header 'Accept: application/json' | jq .[])

  if [[ ${API_RESPONSE} == "" ]]; then

    # Pokud je stránka prázdná, máme už vše co chceme
    echo -e "\e[31mEND\e[m"
    break

  else

    # Začínám od položky +1000 protože máme 1000 položek na jednu stránku
    START_AT+=1000

    # Načtu si do proměnné další položky
    ALL_USERS+=" ${API_RESPONSE}"

  fi

done

# Vymažu z výstupu věci které mě nezajímají a zapíšu do souboru
echo "${ALL_USERS}"  | jq 'del(.avatarUrls) | del(.locale) | del (.self)' \
  >> all_users.json