List sandbox test cases for a workflow
/api/v1/workflows/{id}/test_cases
cascades_list_test_cases
The synthetic subjects registered in the CRS Testcase Service for
this cascade's product nodes (credit, criminal, eviction …). Each
carries a ready-to-run payload shaped for triggerWorkflow, so a
test-mode run needs no hand-written applicant data. A test-mode
trigger for a subject registered for every product node in the
cascade replays its authored bureau responses at no charge
(input_context.sandbox_replay is true); a subject that covers
only some of the products gets schema mocks like any other applicant
(set payload.scenario to fail_path to exercise decline branches).
Live-mode sandbox runs replay registered subjects too.
A credit case's own criteria carry only name and SSN, so blank
fields (dob, the property address) are filled from the same
subject's other registry cases, such as its criminal or eviction
case, whichever products the cascade uses. Without them CRS refuses
the credit order.
Only the cases authored for Cascades (case_name starts with
Cascades_) are listed. The registry's other fixtures mostly lack the
first name and address CRS needs, so their runs would fail at the
credit step.
Best-effort: an unreachable registry yields an empty list, never a
5xx. Results are cached for a few minutes. Requires workflows:read.
Path parameters
| Name | Type | Description |
|---|---|---|
idrequired |
integer |
Workflow id. Only workflows owned by the token's account resolve; a foreign or deleted id returns |
Responses
-
200 Test-case list (not paginated)
application/json-
dataTestCaseListSchema: TestCaseList
-
objectstring One oftest_case_list -
workflow_idinteger -
test_casesarray of TestCase-
idinteger The subject id in the CRS Testcase registry. -
case_namestring -
product_codestring The billing product code this subject was registered for. -
payloadobject Drop-in body for `triggerWorkflow` (`payload.applicant` and, when the subject carries one, `payload.property`).-
applicantApplicantPayload Free-form applicant data forwarded to the workflow's first node as `context.applicant`. Field names depend on the workflow definition. -
propertyobject Property / tenancy details when the subject was registered with them.
-
-
-
-
metaMetaSchema: Meta
-
request_idstring required Correlation id for this request. Also sent as the `X-Request-Id` response header; quote it when contacting support.
-
200 example{ "data": { "object": "test_case_list", "workflow_id": 27, "test_cases": [ { "id": 73, "case_name": "Cascades_XProduct_Approve_EFX", "product_code": "EQF1003", "payload": { "applicant": { "first_name": "AVERY", "last_name": "CLARKSON", "middle_name": "", "name": "AVERY CLARKSON", "email": "avery.clarkson@example.com", "phone": "", "ssn": "666900001", "dob": "1982-01-01" }, "property": { "address": "1803 Norma", "unit": "", "city": "Cottonwood", "state": "CA", "zip": "91502", "full_address": "1803 Norma, Cottonwood, CA 91502" } } } ] }, "meta": { "request_id": "7d4c2f48-9a1b-4c3d-8e2f-1a2b3c4d5e6f" } } -
-
401 Missing, malformed, expired or revoked bearer token. The
WWW-Authenticateheader carries the RFC 6750 challenge.application/json401 example{ "error": { "code": "unauthorized", "message": "A valid bearer token is required.", "details": [], "request_id": "7d4c2f48-9a1b-4c3d-8e2f-1a2b3c4d5e6f", "doc_url": "https://cascades.crscreditapi.com/docs/api/errors/unauthorized" } } -
403 Token does not hold the required scope.
detailslists the scope(s) that were checked.application/json403 example{ "error": { "code": "insufficient_scope", "message": "This token does not have the required scope.", "details": [ { "field": "scope", "message": "executions:write" } ], "request_id": "7d4c2f48-9a1b-4c3d-8e2f-1a2b3c4d5e6f", "doc_url": "https://cascades.crscreditapi.com/docs/api/errors/insufficient_scope" } } -
404 Resource does not exist or belongs to another tenant / api_client
application/json404 example{ "error": { "code": "not_found", "message": "The requested resource was not found.", "details": [], "request_id": "7d4c2f48-9a1b-4c3d-8e2f-1a2b3c4d5e6f", "doc_url": "https://cascades.crscreditapi.com/docs/api/errors/not_found" } } -
429 Rate limit exceeded (60 req/min per IP on
/api/v1, 600 req/hour per token prefix, or 300 req/5 min per IP globally). The body is the standard error envelope andRetry-Aftergives the seconds until the window resets.application/json429 example{ "error": { "code": "rate_limited", "message": "Rate limit exceeded. Retry later.", "details": [], "request_id": "7d4c2f48-9a1b-4c3d-8e2f-1a2b3c4d5e6f", "doc_url": "https://cascades.crscreditapi.com/docs/api/errors/rate_limited" } }