curl --request POST \
--url https://api.athenahq.ai/api/v1/invites \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"type": "organization",
"invite_method": "email",
"email": "user@example.com",
"role": "viewer",
"role_id": "789e0123-e89b-12d3-a456-426614174000",
"website_id": "123e4567-e89b-12d3-a456-426614174000",
"group_id": "456e7890-e89b-12d3-a456-426614174000",
"first_name": "John",
"last_name": "Doe"
}
'import requests
url = "https://api.athenahq.ai/api/v1/invites"
payload = {
"type": "organization",
"invite_method": "email",
"email": "user@example.com",
"role": "viewer",
"role_id": "789e0123-e89b-12d3-a456-426614174000",
"website_id": "123e4567-e89b-12d3-a456-426614174000",
"group_id": "456e7890-e89b-12d3-a456-426614174000",
"first_name": "John",
"last_name": "Doe"
}
headers = {
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
type: 'organization',
invite_method: 'email',
email: 'user@example.com',
role: 'viewer',
role_id: '789e0123-e89b-12d3-a456-426614174000',
website_id: '123e4567-e89b-12d3-a456-426614174000',
group_id: '456e7890-e89b-12d3-a456-426614174000',
first_name: 'John',
last_name: 'Doe'
})
};
fetch('https://api.athenahq.ai/api/v1/invites', 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/invites",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'type' => 'organization',
'invite_method' => 'email',
'email' => 'user@example.com',
'role' => 'viewer',
'role_id' => '789e0123-e89b-12d3-a456-426614174000',
'website_id' => '123e4567-e89b-12d3-a456-426614174000',
'group_id' => '456e7890-e89b-12d3-a456-426614174000',
'first_name' => 'John',
'last_name' => 'Doe'
]),
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/invites"
payload := strings.NewReader("{\n \"type\": \"organization\",\n \"invite_method\": \"email\",\n \"email\": \"user@example.com\",\n \"role\": \"viewer\",\n \"role_id\": \"789e0123-e89b-12d3-a456-426614174000\",\n \"website_id\": \"123e4567-e89b-12d3-a456-426614174000\",\n \"group_id\": \"456e7890-e89b-12d3-a456-426614174000\",\n \"first_name\": \"John\",\n \"last_name\": \"Doe\"\n}")
req, _ := http.NewRequest("POST", 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.post("https://api.athenahq.ai/api/v1/invites")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"type\": \"organization\",\n \"invite_method\": \"email\",\n \"email\": \"user@example.com\",\n \"role\": \"viewer\",\n \"role_id\": \"789e0123-e89b-12d3-a456-426614174000\",\n \"website_id\": \"123e4567-e89b-12d3-a456-426614174000\",\n \"group_id\": \"456e7890-e89b-12d3-a456-426614174000\",\n \"first_name\": \"John\",\n \"last_name\": \"Doe\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.athenahq.ai/api/v1/invites")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"type\": \"organization\",\n \"invite_method\": \"email\",\n \"email\": \"user@example.com\",\n \"role\": \"viewer\",\n \"role_id\": \"789e0123-e89b-12d3-a456-426614174000\",\n \"website_id\": \"123e4567-e89b-12d3-a456-426614174000\",\n \"group_id\": \"456e7890-e89b-12d3-a456-426614174000\",\n \"first_name\": \"John\",\n \"last_name\": \"Doe\"\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"message": "User added to organization",
"user_id": "abc12345-e89b-12d3-a456-426614174000"
}Créer une invitation
Invite à l’organisation, un site ou un groupe. invite_method: "direct" ajoute immédiatement sans e-mail et crée automatiquement un compte si nécessaire. invite_method: "email" crée une invitation en attente à accepter. Les groupes exigent une clé globale. Une clé limitée au site nécessite aussi que son créateur soit administrateur de ce site. L’invitation directe ne peut créer de compte avec un domaine e-mail de Cuba, Iran, Corée du Nord, Russie, Biélorussie ou régional de Crimée (Sébastopol inclus), Donetsk ou Louhansk : HTTP 400 avec error. Les domaines généraux .ua restent autorisés. Les comptes existants peuvent toujours être invités.
curl --request POST \
--url https://api.athenahq.ai/api/v1/invites \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"type": "organization",
"invite_method": "email",
"email": "user@example.com",
"role": "viewer",
"role_id": "789e0123-e89b-12d3-a456-426614174000",
"website_id": "123e4567-e89b-12d3-a456-426614174000",
"group_id": "456e7890-e89b-12d3-a456-426614174000",
"first_name": "John",
"last_name": "Doe"
}
'import requests
url = "https://api.athenahq.ai/api/v1/invites"
payload = {
"type": "organization",
"invite_method": "email",
"email": "user@example.com",
"role": "viewer",
"role_id": "789e0123-e89b-12d3-a456-426614174000",
"website_id": "123e4567-e89b-12d3-a456-426614174000",
"group_id": "456e7890-e89b-12d3-a456-426614174000",
"first_name": "John",
"last_name": "Doe"
}
headers = {
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
type: 'organization',
invite_method: 'email',
email: 'user@example.com',
role: 'viewer',
role_id: '789e0123-e89b-12d3-a456-426614174000',
website_id: '123e4567-e89b-12d3-a456-426614174000',
group_id: '456e7890-e89b-12d3-a456-426614174000',
first_name: 'John',
last_name: 'Doe'
})
};
fetch('https://api.athenahq.ai/api/v1/invites', 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/invites",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'type' => 'organization',
'invite_method' => 'email',
'email' => 'user@example.com',
'role' => 'viewer',
'role_id' => '789e0123-e89b-12d3-a456-426614174000',
'website_id' => '123e4567-e89b-12d3-a456-426614174000',
'group_id' => '456e7890-e89b-12d3-a456-426614174000',
'first_name' => 'John',
'last_name' => 'Doe'
]),
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/invites"
payload := strings.NewReader("{\n \"type\": \"organization\",\n \"invite_method\": \"email\",\n \"email\": \"user@example.com\",\n \"role\": \"viewer\",\n \"role_id\": \"789e0123-e89b-12d3-a456-426614174000\",\n \"website_id\": \"123e4567-e89b-12d3-a456-426614174000\",\n \"group_id\": \"456e7890-e89b-12d3-a456-426614174000\",\n \"first_name\": \"John\",\n \"last_name\": \"Doe\"\n}")
req, _ := http.NewRequest("POST", 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.post("https://api.athenahq.ai/api/v1/invites")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"type\": \"organization\",\n \"invite_method\": \"email\",\n \"email\": \"user@example.com\",\n \"role\": \"viewer\",\n \"role_id\": \"789e0123-e89b-12d3-a456-426614174000\",\n \"website_id\": \"123e4567-e89b-12d3-a456-426614174000\",\n \"group_id\": \"456e7890-e89b-12d3-a456-426614174000\",\n \"first_name\": \"John\",\n \"last_name\": \"Doe\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.athenahq.ai/api/v1/invites")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"type\": \"organization\",\n \"invite_method\": \"email\",\n \"email\": \"user@example.com\",\n \"role\": \"viewer\",\n \"role_id\": \"789e0123-e89b-12d3-a456-426614174000\",\n \"website_id\": \"123e4567-e89b-12d3-a456-426614174000\",\n \"group_id\": \"456e7890-e89b-12d3-a456-426614174000\",\n \"first_name\": \"John\",\n \"last_name\": \"Doe\"\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"message": "User added to organization",
"user_id": "abc12345-e89b-12d3-a456-426614174000"
}Corps
Corps de requête de création d’invitation
Type d’invitation : 'organization' donne accès global ; 'website' à un site ; 'group' à tous les sites d’un groupe. Les groupes exigent une clé globale.
organization, website, group "organization"
Méthode d’invitation : 'direct' ajoute immédiatement à la ressource sans e-mail ; sans compte existant, crée automatiquement un utilisateur avec emailVerified=false puis l’appartenance. 'email' crée une invitation en attente et l’envoie via Postmark ; l’utilisateur doit accepter pour accéder.
direct, email "email"
E-mail de l’utilisateur à inviter
"user@example.com"
Rôle à attribuer à l’invité. Mutuellement 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 absent ou hors organisation. Viewer par défaut si ni role ni role_id fournis. Les ID système sont des sentinelles de forme GUID (00000000-0000-0000-0000-000000000001, par exemple), pas des UUID RFC 4122.
^[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"
Obligatoire si type vaut 'website'. ID du site auquel donner accès
"123e4567-e89b-12d3-a456-426614174000"
Obligatoire si type vaut 'group'. ID du groupe auquel donner accès. Clé globale requise.
"456e7890-e89b-12d3-a456-426614174000"
Prénom facultatif de l’utilisateur invité. Utilisé lors de la création d’un compte pour les invitations 'direct' ou pour renseigner l’enregistrement d’invitation pour les invitations 'email'.
"John"
Nom de famille facultatif pour créer le compte d’une invitation 'direct' ou remplir l’invitation 'email'.
"Doe"
Réponse
Utilisateur ajouté ou invitation envoyée avec succès
Réponse à la création d’une invitation
Indique la réussite de l’opération
true
Message décrivant le résultat
"Invitation sent"
ID de l’invitation créée (présent uniquement pour les invitations par e-mail)
"123e4567-e89b-12d3-a456-426614174000"
ID de l’utilisateur invité. Présent uniquement pour les invitations directes, avec recherche/création immédiate du compte. Jamais pour les invitations par e-mail afin d’empêcher l’énumération inter-tenant des comptes existants.
"abc12345-e89b-12d3-a456-426614174000"
Cette page vous a-t-elle été utile ?