Sign in to run requests with your own sandbox key. Sign in

List sandbox test cases for a workflow

GET /api/v1/workflows/{id}/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

NameTypeDescription
idrequired integer

Workflow id. Only workflows owned by the token's account resolve; a foreign or deleted id returns 404.

Responses

  • 200 Test-case list (not paginated) application/json
    • data TestCaseList

      Schema: TestCaseList

      • object string One of test_case_list
      • workflow_id integer
      • test_cases array of TestCase
        • id integer The subject id in the CRS Testcase registry.
        • case_name string
        • product_code string The billing product code this subject was registered for.
        • payload object Drop-in body for `triggerWorkflow` (`payload.applicant` and, when the subject carries one, `payload.property`).
          • applicant ApplicantPayload Free-form applicant data forwarded to the workflow's first node as `context.applicant`. Field names depend on the workflow definition.
          • property object Property / tenancy details when the subject was registered with them.
    • meta Meta

      Schema: Meta

      • request_id string 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-Authenticate header carries the RFC 6750 challenge. application/json

    Schema: ErrorEnvelope

    401 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. details lists the scope(s) that were checked. application/json

    Schema: ErrorEnvelope

    403 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/json

    Schema: ErrorEnvelope

    404 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 and Retry-After gives the seconds until the window resets. application/json

    Schema: ErrorEnvelope

    429 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"
      }
    }
Was this page helpful?