Resolve
Resolve endpoints answer who should handle a workflow question and expose auditable resolve request history.
Endpoints
Section titled “Endpoints”| Method | Path | Required scope |
|---|---|---|
POST | /api/v1/resolve | api:resolve |
GET | /api/v1/resolve-requests | api:resolve-requests:read |
GET | /api/v1/resolve-requests/:id | api:resolve-requests:read |
Create Resolve Request
Section titled “Create Resolve Request”curl -X POST "https://roster.example.com/api/v1/resolve" \ -H "Authorization: Bearer ${ROSTER_API_KEY}" \ -H "Content-Type: application/json" \ -d '{ "query": "Who should handle vendor security review for Atlas onboarding?", "project_id": "proj_123", "scope": "all", "mode": "live" }'const response = await fetch("https://roster.example.com/api/v1/resolve", { method: "POST", headers: { Authorization: `Bearer ${process.env.ROSTER_API_KEY}`, "Content-Type": "application/json", }, body: JSON.stringify({ query: "Who should handle vendor security review for Atlas onboarding?", project_id: "proj_123", scope: "all", mode: "live", }),});
if (!response.ok) { throw new Error(`Resolve failed: ${response.status}`);}
const data = await response.json();import osimport requests
response = requests.post( "https://roster.example.com/api/v1/resolve", headers={"Authorization": f"Bearer {os.environ['ROSTER_API_KEY']}"}, json={ "query": "Who should handle vendor security review for Atlas onboarding?", "project_id": "proj_123", "scope": "all", "mode": "live", }, timeout=30,)response.raise_for_status()data = response.json()scope accepts participants, records, sources, members, metadata,
projects, or all. mode accepts test or live.
Resolve uses project status and project read access:
- Without
project_id, Resolve receives only readableliveprojects, even inmode: "test". - A
liveproject can be resolved explicitly inmode: "test"ormode: "live"when the caller has read access. - A
testproject can be resolved only with explicitproject_id,mode: "test", and admin or project-owner access. draftandarchivedprojects are excluded from Resolve.
List Resolve Requests
Section titled “List Resolve Requests”curl "https://roster.example.com/api/v1/resolve-requests?project_id=proj_123&resolution_status=success&limit=25" \ -H "Authorization: Bearer ${ROSTER_API_KEY}"const url = new URL("https://roster.example.com/api/v1/resolve-requests");url.searchParams.set("project_id", "proj_123");url.searchParams.set("resolution_status", "success");url.searchParams.set("limit", "25");
const response = await fetch(url, { headers: { Authorization: `Bearer ${process.env.ROSTER_API_KEY}`, },});
if (!response.ok) { throw new Error(`Resolve history failed: ${response.status}`);}
const data = await response.json();import osimport requests
response = requests.get( "https://roster.example.com/api/v1/resolve-requests", params={"project_id": "proj_123", "resolution_status": "success", "limit": 25}, headers={"Authorization": f"Bearer {os.environ['ROSTER_API_KEY']}"}, timeout=10,)response.raise_for_status()data = response.json()Supported filters include project_id, actor_id, resolution_status,
created_after, created_before, query, and limit. resolution_status
accepts success, not_found, out_of_scope, or error. Date filters accept
ISO date-time strings. query searches the original Resolve request text.
limit accepts values from 1 to 100 and defaults to 25.