Access and keys
Every request goes to your tenant’s own host, https://<tenant id>.atlanticagenticlabs.com, and is scoped to that tenant by row-level security. The examples read AAL_TENANT, AAL_KEY and your Access service token from the environment: see Authentication.
Get Access
Section titled “Get Access”GET /api/v1/access
Authentication: A person’s session, or a machine key with your Access service token, as the route’s role allows. A route that approves, decides, pays or changes a limit refuses a machine key (person_required).
| Status | Meaning |
|---|---|
| 200 | OK: the JSON document this route reads. |
| 4XX | Refused: {error, message} with a fixed error code, listed under Errors. |
curl "https://$AAL_TENANT.atlanticagenticlabs.com/api/v1/access" \ -H "Authorization: Bearer $AAL_KEY" \ -H "CF-Access-Client-Id: $CF_ACCESS_CLIENT_ID" \ -H "CF-Access-Client-Secret: $CF_ACCESS_CLIENT_SECRET"import os
import httpx
headers = { "Authorization": f"Bearer {os.environ['AAL_KEY']}", "CF-Access-Client-Id": os.environ["CF_ACCESS_CLIENT_ID"], "CF-Access-Client-Secret": os.environ["CF_ACCESS_CLIENT_SECRET"],}r = httpx.get(f"https://{os.environ['AAL_TENANT']}.atlanticagenticlabs.com/api/v1/access", headers=headers)r.raise_for_status()print(r.json())const res = await fetch( `https://${process.env.AAL_TENANT}.atlanticagenticlabs.com/api/v1/access`, { headers: { Authorization: `Bearer ${process.env.AAL_KEY}`, "CF-Access-Client-Id": process.env.CF_ACCESS_CLIENT_ID!, "CF-Access-Client-Secret": process.env.CF_ACCESS_CLIENT_SECRET!, }, },);if (!res.ok) throw new Error(`${res.status}: ${(await res.json()).error}`);console.log(await res.json());Put Access
Section titled “Put Access”PUT /api/v1/access
Authentication: A person’s session, or a machine key with your Access service token, as the route’s role allows. A route that approves, decides, pays or changes a limit refuses a machine key (person_required).
| Status | Meaning |
|---|---|
| 200 | OK: the request was carried out. The answer is JSON. |
| 4XX | Refused: {error, message} with a fixed error code, listed under Errors. |
curl -X PUT "https://$AAL_TENANT.atlanticagenticlabs.com/api/v1/access" \ -H "Authorization: Bearer $AAL_KEY" \ -H "CF-Access-Client-Id: $CF_ACCESS_CLIENT_ID" \ -H "CF-Access-Client-Secret: $CF_ACCESS_CLIENT_SECRET"import os
import httpx
headers = { "Authorization": f"Bearer {os.environ['AAL_KEY']}", "CF-Access-Client-Id": os.environ["CF_ACCESS_CLIENT_ID"], "CF-Access-Client-Secret": os.environ["CF_ACCESS_CLIENT_SECRET"],}r = httpx.put(f"https://{os.environ['AAL_TENANT']}.atlanticagenticlabs.com/api/v1/access", headers=headers)r.raise_for_status()print(r.json())const res = await fetch( `https://${process.env.AAL_TENANT}.atlanticagenticlabs.com/api/v1/access`, { method: "PUT", headers: { Authorization: `Bearer ${process.env.AAL_KEY}`, "CF-Access-Client-Id": process.env.CF_ACCESS_CLIENT_ID!, "CF-Access-Client-Secret": process.env.CF_ACCESS_CLIENT_SECRET!, }, },);if (!res.ok) throw new Error(`${res.status}: ${(await res.json()).error}`);console.log(await res.json());Review
Section titled “Review”GET /api/v1/access/review
Authentication: A person’s session, or a machine key with your Access service token, as the route’s role allows. A route that approves, decides, pays or changes a limit refuses a machine key (person_required).
| Status | Meaning |
|---|---|
| 200 | OK: the JSON document this route reads. |
| 4XX | Refused: {error, message} with a fixed error code, listed under Errors. |
curl "https://$AAL_TENANT.atlanticagenticlabs.com/api/v1/access/review" \ -H "Authorization: Bearer $AAL_KEY" \ -H "CF-Access-Client-Id: $CF_ACCESS_CLIENT_ID" \ -H "CF-Access-Client-Secret: $CF_ACCESS_CLIENT_SECRET"import os
import httpx
headers = { "Authorization": f"Bearer {os.environ['AAL_KEY']}", "CF-Access-Client-Id": os.environ["CF_ACCESS_CLIENT_ID"], "CF-Access-Client-Secret": os.environ["CF_ACCESS_CLIENT_SECRET"],}r = httpx.get(f"https://{os.environ['AAL_TENANT']}.atlanticagenticlabs.com/api/v1/access/review", headers=headers)r.raise_for_status()print(r.json())const res = await fetch( `https://${process.env.AAL_TENANT}.atlanticagenticlabs.com/api/v1/access/review`, { headers: { Authorization: `Bearer ${process.env.AAL_KEY}`, "CF-Access-Client-Id": process.env.CF_ACCESS_CLIENT_ID!, "CF-Access-Client-Secret": process.env.CF_ACCESS_CLIENT_SECRET!, }, },);if (!res.ok) throw new Error(`${res.status}: ${(await res.json()).error}`);console.log(await res.json());List Keys
Section titled “List Keys”GET /api/v1/keys
Authentication: A person’s session, or a machine key with your Access service token, as the route’s role allows. A route that approves, decides, pays or changes a limit refuses a machine key (person_required).
| Status | Meaning |
|---|---|
| 200 | OK: the JSON document this route reads. |
| 4XX | Refused: {error, message} with a fixed error code, listed under Errors. |
curl "https://$AAL_TENANT.atlanticagenticlabs.com/api/v1/keys" \ -H "Authorization: Bearer $AAL_KEY" \ -H "CF-Access-Client-Id: $CF_ACCESS_CLIENT_ID" \ -H "CF-Access-Client-Secret: $CF_ACCESS_CLIENT_SECRET"import os
import httpx
headers = { "Authorization": f"Bearer {os.environ['AAL_KEY']}", "CF-Access-Client-Id": os.environ["CF_ACCESS_CLIENT_ID"], "CF-Access-Client-Secret": os.environ["CF_ACCESS_CLIENT_SECRET"],}r = httpx.get(f"https://{os.environ['AAL_TENANT']}.atlanticagenticlabs.com/api/v1/keys", headers=headers)r.raise_for_status()print(r.json())const res = await fetch( `https://${process.env.AAL_TENANT}.atlanticagenticlabs.com/api/v1/keys`, { headers: { Authorization: `Bearer ${process.env.AAL_KEY}`, "CF-Access-Client-Id": process.env.CF_ACCESS_CLIENT_ID!, "CF-Access-Client-Secret": process.env.CF_ACCESS_CLIENT_SECRET!, }, },);if (!res.ok) throw new Error(`${res.status}: ${(await res.json()).error}`);console.log(await res.json());Issue Key
Section titled “Issue Key”POST /api/v1/keys
Authentication: A person’s session, or a machine key with your Access service token, as the route’s role allows. A route that approves, decides, pays or changes a limit refuses a machine key (person_required).
| Status | Meaning |
|---|---|
| 201 | Created: the new resource, as JSON. |
| 4XX | Refused: {error, message} with a fixed error code, listed under Errors. |
curl -X POST "https://$AAL_TENANT.atlanticagenticlabs.com/api/v1/keys" \ -H "Authorization: Bearer $AAL_KEY" \ -H "CF-Access-Client-Id: $CF_ACCESS_CLIENT_ID" \ -H "CF-Access-Client-Secret: $CF_ACCESS_CLIENT_SECRET"import os
import httpx
headers = { "Authorization": f"Bearer {os.environ['AAL_KEY']}", "CF-Access-Client-Id": os.environ["CF_ACCESS_CLIENT_ID"], "CF-Access-Client-Secret": os.environ["CF_ACCESS_CLIENT_SECRET"],}r = httpx.post(f"https://{os.environ['AAL_TENANT']}.atlanticagenticlabs.com/api/v1/keys", headers=headers)r.raise_for_status()print(r.json())const res = await fetch( `https://${process.env.AAL_TENANT}.atlanticagenticlabs.com/api/v1/keys`, { method: "POST", headers: { Authorization: `Bearer ${process.env.AAL_KEY}`, "CF-Access-Client-Id": process.env.CF_ACCESS_CLIENT_ID!, "CF-Access-Client-Secret": process.env.CF_ACCESS_CLIENT_SECRET!, }, },);if (!res.ok) throw new Error(`${res.status}: ${(await res.json()).error}`);console.log(await res.json());Revoke Key
Section titled “Revoke Key”DELETE /api/v1/keys/{key_id}
Authentication: A person’s session, or a machine key with your Access service token, as the route’s role allows. A route that approves, decides, pays or changes a limit refuses a machine key (person_required).
| Parameter | In | Type | Required |
|---|---|---|---|
key_id |
path | string | yes |
| Status | Meaning |
|---|---|
| 200 | OK: the request was carried out. The answer is JSON. |
| 400 | Bad request, bad_query: a path or query parameter, or a body field, is missing or not valid. |
| 4XX | Refused: {error, message} with a fixed error code, listed under Errors. |
curl -X DELETE "https://$AAL_TENANT.atlanticagenticlabs.com/api/v1/keys/KEY_ID" \ -H "Authorization: Bearer $AAL_KEY" \ -H "CF-Access-Client-Id: $CF_ACCESS_CLIENT_ID" \ -H "CF-Access-Client-Secret: $CF_ACCESS_CLIENT_SECRET"import os
import httpx
headers = { "Authorization": f"Bearer {os.environ['AAL_KEY']}", "CF-Access-Client-Id": os.environ["CF_ACCESS_CLIENT_ID"], "CF-Access-Client-Secret": os.environ["CF_ACCESS_CLIENT_SECRET"],}r = httpx.delete(f"https://{os.environ['AAL_TENANT']}.atlanticagenticlabs.com/api/v1/keys/KEY_ID", headers=headers)r.raise_for_status()print(r.json())const res = await fetch( `https://${process.env.AAL_TENANT}.atlanticagenticlabs.com/api/v1/keys/KEY_ID`, { method: "DELETE", headers: { Authorization: `Bearer ${process.env.AAL_KEY}`, "CF-Access-Client-Id": process.env.CF_ACCESS_CLIENT_ID!, "CF-Access-Client-Secret": process.env.CF_ACCESS_CLIENT_SECRET!, }, },);if (!res.ok) throw new Error(`${res.status}: ${(await res.json()).error}`);console.log(await res.json());