GET /api/v1/provider/clients/{client_id}/workflow/assignments

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/assignments

List 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

  1. Use a key whose environment, organization, location, and scopes match the operation.
  2. Validate the request against the customer OpenAPI document; never infer omitted required facts.
  3. For create, apply, commit, refund, adjustment, or replay operations, follow the documented idempotency and duplicate semantics.
  4. Persist the response request ID, result authority, warnings, and evidence references needed to reproduce the decision.
  5. Handle the machine-readable error envelope and honor rate-limit retry headers.

Related documentation