Esempi rapidi
Ottieni informazioni sull’utente del servizio
Ottieni informazioni sull’utente del servizio
Copia
Chiedi all'IA
import os
import requests
TOKEN = os.getenv("DEVIN_SERVICE_USER_TOKEN")
BASE_URL = "https://api.devin.ai/v3beta1"
response = requests.get(
f"{BASE_URL}/enterprise/self",
headers={"Authorization": f"Bearer {TOKEN}"}
)
self_info = response.json()
print(f"Utente del servizio: {self_info['name']}")
print(f"Ruolo: {self_info['role']}")
Elencare le organizzazioni
Elencare le organizzazioni
Copia
Chiedi all'IA
import os
import requests
TOKEN = os.getenv("DEVIN_SERVICE_USER_TOKEN")
BASE_URL = "https://api.devin.ai/v3beta1"
response = requests.get(
f"{BASE_URL}/enterprise/organizations",
headers={"Authorization": f"Bearer {TOKEN}"}
)
orgs = response.json()
for org in orgs["organizations"]:
print(f"{org['name']} ({org['id']})")
Crea un'organizzazione
Crea un'organizzazione
Copia
Chiedi all'IA
import os
import requests
TOKEN = os.getenv("DEVIN_SERVICE_USER_TOKEN")
BASE_URL = "https://api.devin.ai/v3beta1"
response = requests.post(
f"{BASE_URL}/enterprise/organizations",
headers={
"Authorization": f"Bearer {TOKEN}",
"Content-Type": "application/json"
},
json={
"name": "Team di Data Science",
"acu_limit": 500
}
)
org = response.json()
print(f"Organizzazione creata: {org['id']}")
Crea una sessione
Crea una sessione
Copia
Chiedi all'IA
import os
import requests
TOKEN = os.getenv("DEVIN_SERVICE_USER_TOKEN")
BASE_URL = "https://api.devin.ai/v3beta1"
org_id = "your_org_id"
response = requests.post(
f"{BASE_URL}/organizations/{org_id}/sessions",
headers={
"Authorization": f"Bearer {TOKEN}",
"Content-Type": "application/json"
},
json={
"prompt": "Crea uno script Python che analizzi i dati CSV"
}
)
session = response.json()
print(f"Sessione creata: {session['session_id']}")
print(f"URL: {session['url']}")
GET consumo per organizzazione
GET consumo per organizzazione
Copia
Chiedi all'IA
import os
import requests
TOKEN = os.getenv("DEVIN_SERVICE_USER_TOKEN")
BASE_URL = "https://api.devin.ai/v3beta1"
response = requests.get(
f"{BASE_URL}/enterprise/consumption/daily/organizations",
headers={"Authorization": f"Bearer {TOKEN}"},
params={"start_date": "2024-01-01", "end_date": "2024-01-31"}
)
consumption = response.json()
for entry in consumption["data"]:
print(f"{entry['organization_name']}: {entry['acus_used']} ACUs")
Crea un utente di servizio
Crea un utente di servizio
Copia
Chiedi all'IA
import os
import requests
TOKEN = os.getenv("DEVIN_SERVICE_USER_TOKEN")
BASE_URL = "https://api.devin.ai/v3beta1"
org_id = "your_org_id"
response = requests.post(
f"{BASE_URL}/organizations/{org_id}/members/service-users",
headers={
"Authorization": f"Bearer {TOKEN}",
"Content-Type": "application/json"
},
json={
"name": "CI/CD Bot",
"role": "developer"
}
)
service_user = response.json()
print(f"Created service user: {service_user['id']}")
print(f"API Key: {service_user['api_key']}") # Mostrato solo una volta!
Recuperare i log di audit
Recuperare i log di audit
Copia
Chiedi all'IA
import os
import requests
from datetime import datetime, timedelta, timezone
TOKEN = os.getenv("DEVIN_SERVICE_USER_TOKEN")
BASE_URL = "https://api.devin.ai/v3beta1"
# Ultimi 7 giorni in UTC, come timestamp Unix (in secondi)
now = datetime.now(timezone.utc)
seven_days_ago = now - timedelta(days=7)
params = {
"time_after": int(seven_days_ago.timestamp()),
"time_before": int(now.timestamp()),
"first": 100, # dimensione della pagina (max 200)
}
response = requests.get(
f"{BASE_URL}/enterprise/audit-logs",
headers={"Authorization": f"Bearer {TOKEN}"},
params=params,
)
response.raise_for_status()
data = response.json()
for log in data["items"]:
ts = datetime.fromtimestamp(log["created_at"], tz=timezone.utc).isoformat()
actor_id = log.get("service_user_id") or log.get("user_id") or "system"
print(f"{ts} - {log['action']} (org={log.get('org_id')}, actor={actor_id})")
# Per recuperare pagine aggiuntive, utilizza end_cursor quando has_next_page è True:
# if data["has_next_page"]:
# params["after"] = data["end_cursor"]
# # Effettua un'altra richiesta con i parametri aggiornati
Workflow multi-organizzazione
Workflow multi-organizzazione
Automatizza in più organizzazioni:
Copia
Chiedi all'IA
import os
import requests
TOKEN = os.getenv("DEVIN_SERVICE_USER_TOKEN")
BASE_URL = "https://api.devin.ai/v3beta1"
# Recupera tutte le organizzazioni
orgs_response = requests.get(
f"{BASE_URL}/enterprise/organizations",
headers={"Authorization": f"Bearer {TOKEN}"}
)
organizations = orgs_response.json()["organizations"]
# Crea una sessione per ogni organizzazione
for org in organizations:
session_response = requests.post(
f"{BASE_URL}/organizations/{org['id']}/sessions",
headers={
"Authorization": f"Bearer {TOKEN}",
"Content-Type": "application/json"
},
json={
"prompt": f"Esegui il controllo di stato giornaliero per {org['name']}"
}
)
if session_response.ok:
session = session_response.json()
print(f"Sessione creata per {org['name']}: {session['session_id']}")
else:
print(f"Impossibile creare la sessione per {org['name']}")
Gestione degli errori
Gestione degli errori
Copia
Chiedi all'IA
import os
import requests
TOKEN = os.getenv("DEVIN_SERVICE_USER_TOKEN")
BASE_URL = "https://api.devin.ai/v3beta1"
try:
response = requests.get(
f"{BASE_URL}/enterprise/organizations",
headers={"Authorization": f"Bearer {TOKEN}"}
)
response.raise_for_status()
data = response.json()
except requests.exceptions.HTTPError as e:
if e.response.status_code == 401:
print("Token utente di servizio non valido o scaduto")
elif e.response.status_code == 403:
print("L'utente di servizio non dispone del ruolo/permesso richiesto")
elif e.response.status_code == 429:
print("Limite di richieste superato - attendere e riprovare")
else:
print(f"Errore API: {e}")
Supporto
Hai bisogno di aiuto?
Per domande sull’API o per segnalare problemi, scrivi a [email protected]
