Documentation Index
Fetch the complete documentation index at: https://docs.devinenterprise.com/llms.txt
Use this file to discover all available pages before exploring further.
Tutti gli endpoint di elenco nelle API Organization ed Enterprise usano la paginazione basata su cursore. Questo garantisce una paginazione coerente ed efficiente indipendentemente dalla dimensione del set di risultati.
Ogni endpoint di tipo lista accetta due parametri di query:
| Parametro | Tipo | Descrizione |
|---|
first | integer | Numero massimo di elementi da restituire per pagina (il valore predefinito varia a seconda dell’endpoint) |
after | string | Cursore opaco restituito da una risposta precedente. Omettilo per la prima pagina |
Le risposte che restituiscono elenchi includono metadati sulla paginazione:
{
"items": [...],
"has_next_page": true,
"end_cursor": "eyJsYXN0X2lkIjoiYWJjMTIzIn0=",
"total": 142
}
| Field | Description |
|---|
items | Array di risultati della pagina corrente |
has_next_page | true se ci sono altri risultati |
end_cursor | Passa questo valore come parametro after per ottenere la pagina successiva. null quando has_next_page è false |
total | Numero totale di elementi corrispondenti (può essere omesso da alcuni endpoint per motivi di performance) |
Esempio: paginare le sessioni
curl "https://api.devin.ai/v3/organizations/$DEVIN_ORG_ID/sessions?first=10" \
-H "Authorization: Bearer $DEVIN_API_KEY"
Utilizza il valore end_cursor dalla risposta precedente:
curl "https://api.devin.ai/v3/organizations/$DEVIN_ORG_ID/sessions?first=10&after=eyJsYXN0X2lkIjoiYWJjMTIzIn0=" \
-H "Authorization: Bearer $DEVIN_API_KEY"
Raccogliere tutti i risultati
import os
import requests
org_id = os.environ["DEVIN_ORG_ID"]
url = f"https://api.devin.ai/v3/organizations/{org_id}/sessions"
headers = {"Authorization": f"Bearer {os.environ['DEVIN_API_KEY']}"}
all_sessions = []
cursor = None
while True:
params = {"first": 50}
if cursor:
params["after"] = cursor
response = requests.get(url, headers=headers, params=params).json()
all_sessions.extend(response["items"])
if not response.get("has_next_page"):
break
cursor = response["end_cursor"]
print(f"Fetched {len(all_sessions)} sessions")
Se stai effettuando la migrazione dalle API v1 o v2, sostituisci offset/limit con after/first:
# Prima (v1/v2)
curl ".../v1/sessions?offset=50&limit=25"
# Dopo
curl ".../v3/organizations/{org_id}/sessions?first=25&after=CURSOR_FROM_PREVIOUS_PAGE"
La paginazione basata su cursore è più affidabile della paginazione basata su offset perché non viene influenzata dall’aggiunta o dalla rimozione di elementi tra una pagina e l’altra.