List the provider's per-client (and per-client-per-state) reviewer/approver role defaults for one client.
GET
/api/v1/provider/clients/{client_id}/workflow/assignmentsList the provider's per-client (and per-client-per-state) reviewer/approver role defaults for one client.
- Persistence
- Read-only.
- Auth
- Provider API key · scope provider:workflow:read
- Request
- Path param client id; optional module query (default sales)
- Response
- Role assignment rows with user, optional state scope, and whether each is a provider or taxpayer default
Request template for this operation
Set ITMS_API_KEY to a key with the scope shown above. Use a sandbox key while developing. For cURL, set CLIENT_ID_URLENCODED; JavaScript and Python URL-encode the corresponding raw environment values. Do not copy production customer data into a sandbox request.
cURL
: "${CLIENT_ID_URLENCODED:?Set CLIENT_ID_URLENCODED to the URL-encoded client_id}"
curl --request GET \
--url "${ITMS_BASE_URL:-https://prophit.ai}/api/v1/provider/clients/${CLIENT_ID_URLENCODED}/workflow/assignments" \
--header "Authorization: Bearer ${ITMS_API_KEY}"JavaScript (Node 18+)
const requiredEnv = (name) => {
const value = process.env[name];
if (!value) throw new Error(`Set ${name} before running this request.`);
return value;
};
const path = `/api/v1/provider/clients/${encodeURIComponent(requiredEnv("CLIENT_ID"))}/workflow/assignments`;
const response = await fetch(`${process.env.ITMS_BASE_URL ?? 'https://prophit.ai'}${path}`, {
method: "GET",
headers: {
Authorization: `Bearer ${requiredEnv('ITMS_API_KEY')}`,
},
});
const requestId = response.headers.get('x-request-id');
const payload = response.status === 204 ? null : await response.json();
if (!response.ok) throw Object.assign(new Error(payload?.error?.message), { code: payload?.error?.code, requestId });
console.log({ requestId, payload });Python
import os
from urllib.parse import quote
import requests
def required_env(name):
value = os.getenv(name)
if not value:
raise RuntimeError(f"Set {name} before running this request.")
return value
path = f"/api/v1/provider/clients/{quote(required_env('CLIENT_ID'), safe='')}/workflow/assignments"
response = requests.request(
"GET",
f"{os.getenv('ITMS_BASE_URL', 'https://prophit.ai')}{path}",
headers={
"Authorization": f"Bearer {required_env('ITMS_API_KEY')}",
},
timeout=30,
)
request_id = response.headers.get("x-request-id")
if not response.ok:
error = response.json().get("error", {})
raise RuntimeError(f"{error.get('code')}: {error.get('message')} (request_id={request_id})")
print(None if response.status_code == 204 else response.json())Request and response shape
- Request
- Path param client id; optional module query (default sales)
- Response
- Role assignment rows with user, optional state scope, and whether each is a provider or taxpayer default
The versioned OpenAPI document is the machine-readable authority for required fields, types, enums, response schemas, and status codes. This page supplies the product and workflow context around that contract.
Integration contract
- Use a key whose environment, organization, location, and scopes match the operation.
- Validate the request against the customer OpenAPI document; never infer omitted required facts.
- For create, apply, commit, refund, adjustment, or replay operations, follow the documented idempotency and duplicate semantics.
- Persist the response request ID, result authority, warnings, and evidence references needed to reproduce the decision.
- Handle the machine-readable error envelope and honor rate-limit retry headers.
