curl --request PATCH \
--url https://api.athenahq.ai/api/v1/groups/{group_id}/members/{user_id} \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"role": "viewer",
"role_id": "789e0123-e89b-12d3-a456-426614174000"
}
'import requests
url = "https://api.athenahq.ai/api/v1/groups/{group_id}/members/{user_id}"
payload = {
"role": "viewer",
"role_id": "789e0123-e89b-12d3-a456-426614174000"
}
headers = {
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({role: 'viewer', role_id: '789e0123-e89b-12d3-a456-426614174000'})
};
fetch('https://api.athenahq.ai/api/v1/groups/{group_id}/members/{user_id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.athenahq.ai/api/v1/groups/{group_id}/members/{user_id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'role' => 'viewer',
'role_id' => '789e0123-e89b-12d3-a456-426614174000'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-api-key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.athenahq.ai/api/v1/groups/{group_id}/members/{user_id}"
payload := strings.NewReader("{\n \"role\": \"viewer\",\n \"role_id\": \"789e0123-e89b-12d3-a456-426614174000\"\n}")
req, _ := http.NewRequest("PATCH", url, payload)
req.Header.Add("x-api-key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.patch("https://api.athenahq.ai/api/v1/groups/{group_id}/members/{user_id}")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"role\": \"viewer\",\n \"role_id\": \"789e0123-e89b-12d3-a456-426614174000\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.athenahq.ai/api/v1/groups/{group_id}/members/{user_id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["x-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"role\": \"viewer\",\n \"role_id\": \"789e0123-e89b-12d3-a456-426614174000\"\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"member": {
"user_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"group_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"role": "viewer",
"role_id": "<string>"
}
}Modifier le rôle d’un membre de groupe
Met à jour le rôle d’un utilisateur explicitement ajouté à un groupe (une ligne group_members, affichée comme access_type: "group" par GET /api/v1/groups/{group_id}/members). Accepte soit le role général (admin/viewer), soit un role_id : un rôle système ou un rôle personnalisé de votre organisation (voir GET /api/v1/roles). Fournissez exactement l’un des deux. Nécessite une clé API globale.
Les membres de l’organisation sont hors périmètre : leur accès à chaque groupe provient de leur rôle dans l’organisation ; une modification au niveau du groupe ne changerait donc pas leurs droits. Les cibler renvoie 409 ; utilisez plutôt PATCH /api/v1/organizations/members/{user_id}. L’utilisateur propriétaire de la clé API ne peut pas être modifié. Il n’y a aucune restriction de dernier administrateur au niveau du groupe : son unique administrateur peut être rétrogradé, car les administrateurs de l’organisation conservent l’accès administrateur à tous ses groupes.
Les rôles autres que admin et viewer sont appliqués aux accès mais ne sont pas encore affichés dans le tableau de bord. Un role_id comme Editor ou Billing Manager accorde les autorisations réelles de ce rôle sur tous les sites du groupe, mais la liste des membres du groupe affiche actuellement tout rôle non administrateur comme « Viewer ». Privilégiez admin / viewer au niveau du groupe si un administrateur client doit aussi voir le rôle attribué.
curl --request PATCH \
--url https://api.athenahq.ai/api/v1/groups/{group_id}/members/{user_id} \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"role": "viewer",
"role_id": "789e0123-e89b-12d3-a456-426614174000"
}
'import requests
url = "https://api.athenahq.ai/api/v1/groups/{group_id}/members/{user_id}"
payload = {
"role": "viewer",
"role_id": "789e0123-e89b-12d3-a456-426614174000"
}
headers = {
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({role: 'viewer', role_id: '789e0123-e89b-12d3-a456-426614174000'})
};
fetch('https://api.athenahq.ai/api/v1/groups/{group_id}/members/{user_id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.athenahq.ai/api/v1/groups/{group_id}/members/{user_id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'role' => 'viewer',
'role_id' => '789e0123-e89b-12d3-a456-426614174000'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-api-key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.athenahq.ai/api/v1/groups/{group_id}/members/{user_id}"
payload := strings.NewReader("{\n \"role\": \"viewer\",\n \"role_id\": \"789e0123-e89b-12d3-a456-426614174000\"\n}")
req, _ := http.NewRequest("PATCH", url, payload)
req.Header.Add("x-api-key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.patch("https://api.athenahq.ai/api/v1/groups/{group_id}/members/{user_id}")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"role\": \"viewer\",\n \"role_id\": \"789e0123-e89b-12d3-a456-426614174000\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.athenahq.ai/api/v1/groups/{group_id}/members/{user_id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["x-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"role\": \"viewer\",\n \"role_id\": \"789e0123-e89b-12d3-a456-426614174000\"\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"member": {
"user_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"group_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"role": "viewer",
"role_id": "<string>"
}
}Paramètres de chemin
Identifiant unique du groupe
Identifiant unique de l’utilisateur cible
Corps
Corps de requête de modification du rôle d’un membre de groupe. Fournissez exactement un champ parmi role et role_id.
Rôle général à attribuer. Exclusif avec role_id.
admin, viewer "viewer"
Attribuez un rôle par ID, système ou personnalisé (voir GET /api/v1/roles). Exclusif avec role. 404 si inexistant ou hors organisation. Les ID système sont des sentinelles de forme GUID (00000000-0000-0000-0000-000000000001, par exemple), pas des UUID RFC 4122. Au niveau groupe, les rôles autres qu’Admin et Viewer sont respectés pour l’accès mais affichés comme "Viewer" dans la liste du tableau de bord.
^[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}$"789e0123-e89b-12d3-a456-426614174000"
Cette page vous a-t-elle été utile ?