Skip to content

Public API Reference

Readable reference for the Dezycro public REST API, generated at build time from the OpenAPI spec. Prefer firing test requests? Use the interactive explorer.

Dezycro Public API 1.0.0

Endpoint index

Method Endpoint
GET /api/v1/pats
POST /api/v1/pats
DELETE /api/v1/pats/{id}
GET /api/v1/workspaces
GET /api/v1/workspaces/{workspaceId}/projects
POST /api/v1/workspaces/{workspaceId}/projects
DELETE /api/v1/workspaces/{workspaceId}/projects/{projectId}
GET /api/v1/workspaces/{workspaceId}/projects/{projectId}
PUT /api/v1/workspaces/{workspaceId}/projects/{projectId}
GET /api/v1/workspaces/{workspaceId}/projects/{projectId}/test-personas
POST /api/v1/workspaces/{workspaceId}/projects/{projectId}/test-personas
DELETE /api/v1/workspaces/{workspaceId}/projects/{projectId}/test-personas/{personaId}
PUT /api/v1/workspaces/{workspaceId}/projects/{projectId}/test-personas/{personaId}
GET /api/v1/workspaces/{workspaceId}/projects/{projectId}/test-runs
GET /api/v1/workspaces/{workspaceId}/projects/{projectId}/test-runs/{runId}/results
GET /api/v1/workspaces/{workspaceId}/projects/{projectId}/test-runs/{runId}/results/{testCaseId}/log
GET /api/v1/workspaces/{workspaceId}/projects/{projectId}/validation-cases
POST /api/v1/workspaces/{workspaceId}/projects/{projectId}/validation-cases/generate
GET /api/v1/workspaces/{workspaceId}/projects/{projectId}/validation-cases/generate/status/{workflowId}

Public


GET /api/v1/pats

List personal access tokens

Description

Returns your personal access tokens, paginated. Only the token prefix is included — the full secret is shown once, at creation.

Input parameters

Parameter In Type Default Nullable Description
name query string | null Yes Filter by token name (partial match, supports * wildcard)
page query integer 1 No Page number (1-indexed)
size query integer 10 No Number of items per page (1-100, default 10)

Responses

{
    "data": [
        {
            "createdAt": "2022-03-10T12:15:50",
            "id": "d6f92d45-99cb-4f3c-8bc6-25bc063ae6a2",
            "lastUsedAt": "2022-03-10T12:15:50",
            "name": "string",
            "scope": "TENANT",
            "token": "string",
            "tokenPrefix": "string",
            "workspaceId": "6fd77716-7603-4698-8e7e-6dc5a39d6621"
        }
    ],
    "page": 119,
    "size": 64,
    "totalElements": 108
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the response body
{
    "description": "Paginated list response wrapper",
    "properties": {
        "data": {
            "items": {
                "$ref": "#/components/schemas/PatDto"
            },
            "type": "array"
        },
        "page": {
            "format": "int32",
            "type": "integer"
        },
        "size": {
            "format": "int32",
            "type": "integer"
        },
        "totalElements": {
            "format": "int64",
            "type": "integer"
        }
    },
    "required": [
        "data",
        "page",
        "size",
        "totalElements"
    ],
    "type": "object"
}

POST /api/v1/pats

Create personal access token

Description

Creates a tenant-scoped PAT for API and MCP access. The response includes the full dzy_... secret exactly once — store it now, it cannot be retrieved again. The token inherits your workspace roles on every call.

Request body

{
    "createdAt": "2022-03-10T12:15:50",
    "id": "d41f1d94-b8aa-4e3e-abeb-617eb8903154",
    "lastUsedAt": "2022-03-10T12:15:50",
    "name": "string",
    "scope": "TENANT",
    "token": "string",
    "tokenPrefix": "string",
    "workspaceId": "c091af84-0c3d-472d-875c-9d5097cfe793"
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the request body
{
    "description": "Personal Access Token",
    "properties": {
        "createdAt": {
            "examples": [
                "2022-03-10T12:15:50"
            ],
            "format": "date-time",
            "type": [
                "string",
                "null"
            ]
        },
        "id": {
            "format": "uuid",
            "pattern": "[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}",
            "type": [
                "string",
                "null"
            ]
        },
        "lastUsedAt": {
            "examples": [
                "2022-03-10T12:15:50"
            ],
            "format": "date-time",
            "type": [
                "string",
                "null"
            ]
        },
        "name": {
            "type": "string"
        },
        "scope": {
            "enum": [
                "TENANT",
                "WORKSPACE"
            ],
            "type": [
                "string",
                "null"
            ]
        },
        "token": {
            "type": [
                "string",
                "null"
            ]
        },
        "tokenPrefix": {
            "type": [
                "string",
                "null"
            ]
        },
        "workspaceId": {
            "format": "uuid",
            "pattern": "[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}",
            "type": [
                "string",
                "null"
            ]
        }
    },
    "required": [
        "name"
    ],
    "type": "object"
}

Responses

{
    "createdAt": "2022-03-10T12:15:50",
    "id": "6a2ead1e-116d-4b9d-a5e3-f62a0e664afa",
    "lastUsedAt": "2022-03-10T12:15:50",
    "name": "string",
    "scope": "TENANT",
    "token": "string",
    "tokenPrefix": "string",
    "workspaceId": "bf2d8f60-40ee-4ed1-a226-7a664caf3b8f"
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the response body
{
    "description": "Personal Access Token",
    "properties": {
        "createdAt": {
            "examples": [
                "2022-03-10T12:15:50"
            ],
            "format": "date-time",
            "type": [
                "string",
                "null"
            ]
        },
        "id": {
            "format": "uuid",
            "pattern": "[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}",
            "type": [
                "string",
                "null"
            ]
        },
        "lastUsedAt": {
            "examples": [
                "2022-03-10T12:15:50"
            ],
            "format": "date-time",
            "type": [
                "string",
                "null"
            ]
        },
        "name": {
            "type": "string"
        },
        "scope": {
            "enum": [
                "TENANT",
                "WORKSPACE"
            ],
            "type": [
                "string",
                "null"
            ]
        },
        "token": {
            "type": [
                "string",
                "null"
            ]
        },
        "tokenPrefix": {
            "type": [
                "string",
                "null"
            ]
        },
        "workspaceId": {
            "format": "uuid",
            "pattern": "[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}",
            "type": [
                "string",
                "null"
            ]
        }
    },
    "required": [
        "name"
    ],
    "type": "object"
}

DELETE /api/v1/pats/{id}

Revoke personal access token

Description

Permanently revokes a token. Requests using it fail immediately; this cannot be undone.

Input parameters

Parameter In Type Default Nullable Description
id path string No Token ID to revoke

Responses


GET /api/v1/workspaces

List workspaces

Description

Returns all workspaces the current user has access to within the tenant.

Input parameters

Parameter In Type Default Nullable Description
name query string | null Yes Filter workspaces by name (partial match)
page query integer 1 No Page number (1-indexed)
size query integer 10 No Number of items per page (1-100, default 10)

Responses

{
    "data": [
        {
            "id": "30c38622-4da9-442e-924e-5daa9e6ef3e2",
            "name": "string",
            "tenantId": "954e6408-81cd-49cc-a297-37ffc6af3a2f"
        }
    ],
    "page": 70,
    "size": 252,
    "totalElements": 205
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the response body
{
    "description": "Paginated list response wrapper",
    "properties": {
        "data": {
            "items": {
                "$ref": "#/components/schemas/WorkspaceDto"
            },
            "type": "array"
        },
        "page": {
            "format": "int32",
            "type": "integer"
        },
        "size": {
            "format": "int32",
            "type": "integer"
        },
        "totalElements": {
            "format": "int64",
            "type": "integer"
        }
    },
    "required": [
        "data",
        "page",
        "size",
        "totalElements"
    ],
    "type": "object"
}

GET /api/v1/workspaces/{workspaceId}/projects

List projects

Description

Returns the projects in a workspace, paginated. Use nameWildcard to filter by name (* matches any characters). Archived projects are excluded unless includeArchived is set.

Input parameters

Parameter In Type Default Nullable Description
includeArchived query boolean False No Include archived projects in the results
nameWildcard query string No Filter projects by name; `*` matches any characters (e.g. `pay*`)
page query integer 1 No Page number (1-indexed)
size query integer 10 No Number of items per page (1-100, default 10)
workspaceId path string No Workspace ID

Responses

{
    "data": [
        {
            "description": "string",
            "id": "e3e1b55d-cce0-49fc-8eb1-d2d8334cda56",
            "name": "string",
            "status": "ACTIVE",
            "workspaceId": "764cca8d-2fb5-4eec-8b70-ec4a62020fc2"
        }
    ],
    "page": 114,
    "size": 19,
    "totalElements": 106
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the response body
{
    "description": "Paginated list response wrapper",
    "properties": {
        "data": {
            "items": {
                "$ref": "#/components/schemas/ProjectDto"
            },
            "type": "array"
        },
        "page": {
            "format": "int32",
            "type": "integer"
        },
        "size": {
            "format": "int32",
            "type": "integer"
        },
        "totalElements": {
            "format": "int64",
            "type": "integer"
        }
    },
    "required": [
        "data",
        "page",
        "size",
        "totalElements"
    ],
    "type": "object"
}

POST /api/v1/workspaces/{workspaceId}/projects

Create project

Description

Creates a new project in the workspace. A project groups features, documents, test personas, and test runs; only name is required.

Input parameters

Parameter In Type Default Nullable Description
workspaceId path string No Workspace ID

Request body

{
    "description": "string",
    "id": "e06d77bd-9e79-459a-a97e-68d3ee31e2b6",
    "name": "string",
    "status": "ACTIVE",
    "workspaceId": "5daae13a-acd3-4e08-8a92-1b4627c38084"
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the request body
{
    "description": "A software project within a workspace — the main organizational unit for test cases and documentation",
    "properties": {
        "description": {
            "type": [
                "string",
                "null"
            ]
        },
        "id": {
            "format": "uuid",
            "pattern": "[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}",
            "type": [
                "string",
                "null"
            ]
        },
        "name": {
            "type": "string"
        },
        "status": {
            "description": "Project lifecycle status",
            "enum": [
                "ACTIVE",
                "ARCHIVED"
            ],
            "type": "string"
        },
        "workspaceId": {
            "format": "uuid",
            "pattern": "[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}",
            "type": [
                "string",
                "null"
            ]
        }
    },
    "required": [
        "name"
    ],
    "type": "object"
}

Responses

{
    "description": "string",
    "id": "8437c4c8-2975-410d-abc7-ed030eed7540",
    "name": "string",
    "status": "ACTIVE",
    "workspaceId": "7d0408ef-a37a-4c8c-af5f-f5c26fdb1d29"
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the response body
{
    "description": "A software project within a workspace — the main organizational unit for test cases and documentation",
    "properties": {
        "description": {
            "type": [
                "string",
                "null"
            ]
        },
        "id": {
            "format": "uuid",
            "pattern": "[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}",
            "type": [
                "string",
                "null"
            ]
        },
        "name": {
            "type": "string"
        },
        "status": {
            "description": "Project lifecycle status",
            "enum": [
                "ACTIVE",
                "ARCHIVED"
            ],
            "type": "string"
        },
        "workspaceId": {
            "format": "uuid",
            "pattern": "[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}",
            "type": [
                "string",
                "null"
            ]
        }
    },
    "required": [
        "name"
    ],
    "type": "object"
}

DELETE /api/v1/workspaces/{workspaceId}/projects/{projectId}

Delete project

Description

Deletes a project and everything in it — features, documents, and generated test cases. This cannot be undone.

Input parameters

Parameter In Type Default Nullable Description
projectId path string No Project ID
workspaceId path string No Workspace ID

Responses


GET /api/v1/workspaces/{workspaceId}/projects/{projectId}

Get project

Description

Returns a single project by ID.

Input parameters

Parameter In Type Default Nullable Description
projectId path string No Project ID
workspaceId path string No Workspace ID

Responses

{
    "description": "string",
    "id": "f6adefc3-7b93-495e-b810-8283d9116bba",
    "name": "string",
    "status": "ACTIVE",
    "workspaceId": "b9409b83-c2bd-4353-b067-c04292a7f831"
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the response body
{
    "description": "A software project within a workspace — the main organizational unit for test cases and documentation",
    "properties": {
        "description": {
            "type": [
                "string",
                "null"
            ]
        },
        "id": {
            "format": "uuid",
            "pattern": "[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}",
            "type": [
                "string",
                "null"
            ]
        },
        "name": {
            "type": "string"
        },
        "status": {
            "description": "Project lifecycle status",
            "enum": [
                "ACTIVE",
                "ARCHIVED"
            ],
            "type": "string"
        },
        "workspaceId": {
            "format": "uuid",
            "pattern": "[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}",
            "type": [
                "string",
                "null"
            ]
        }
    },
    "required": [
        "name"
    ],
    "type": "object"
}

PUT /api/v1/workspaces/{workspaceId}/projects/{projectId}

Update project

Description

Updates a project's name, description, or archived state. Fields omitted from the body are left unchanged.

Input parameters

Parameter In Type Default Nullable Description
projectId path string No Project ID
workspaceId path string No Workspace ID

Request body

{
    "description": "string",
    "id": "94c2d860-7a40-40d5-b917-0bd94b407c26",
    "name": "string",
    "status": "ACTIVE",
    "workspaceId": "19cbfae4-b7be-46dc-94e4-f769fe116802"
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the request body
{
    "description": "A software project within a workspace — the main organizational unit for test cases and documentation",
    "properties": {
        "description": {
            "type": [
                "string",
                "null"
            ]
        },
        "id": {
            "format": "uuid",
            "pattern": "[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}",
            "type": [
                "string",
                "null"
            ]
        },
        "name": {
            "type": "string"
        },
        "status": {
            "description": "Project lifecycle status",
            "enum": [
                "ACTIVE",
                "ARCHIVED"
            ],
            "type": "string"
        },
        "workspaceId": {
            "format": "uuid",
            "pattern": "[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}",
            "type": [
                "string",
                "null"
            ]
        }
    },
    "required": [
        "name"
    ],
    "type": "object"
}

Responses

{
    "description": "string",
    "id": "22f6d6e9-674d-4fdc-8c9b-163d6e8c1b97",
    "name": "string",
    "status": "ACTIVE",
    "workspaceId": "647df63f-e54c-4ced-a312-31b193b928a6"
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the response body
{
    "description": "A software project within a workspace — the main organizational unit for test cases and documentation",
    "properties": {
        "description": {
            "type": [
                "string",
                "null"
            ]
        },
        "id": {
            "format": "uuid",
            "pattern": "[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}",
            "type": [
                "string",
                "null"
            ]
        },
        "name": {
            "type": "string"
        },
        "status": {
            "description": "Project lifecycle status",
            "enum": [
                "ACTIVE",
                "ARCHIVED"
            ],
            "type": "string"
        },
        "workspaceId": {
            "format": "uuid",
            "pattern": "[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}",
            "type": [
                "string",
                "null"
            ]
        }
    },
    "required": [
        "name"
    ],
    "type": "object"
}

GET /api/v1/workspaces/{workspaceId}/projects/{projectId}/test-personas

List test personas

Description

Returns the test personas visible to a project, paginated — including personas inherited from the workspace and tenant scopes.

Input parameters

Parameter In Type Default Nullable Description
name query string | null Yes Filter by persona name (partial match)
page query integer 1 No Page number (1-indexed)
projectId path string No Project ID
scope query string | null Yes Persona scope filter (TENANT, WORKSPACE, or PROJECT)
size query integer 10 No Number of items per page (1-100, default 10)
workspaceId path string No Workspace ID

Responses

{
    "data": [
        {
            "authType": "BEARER",
            "description": "string",
            "envVar": "string",
            "id": "0a1433f9-8d76-4c54-b3b7-572d0340591e",
            "name": "string",
            "projectId": "38f4b940-6ed0-4346-8c31-c369ff8b6ee3",
            "scope": "TENANT",
            "script": "string"
        }
    ],
    "page": 152,
    "size": 227,
    "totalElements": 35
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the response body
{
    "description": "Paginated list response wrapper",
    "properties": {
        "data": {
            "items": {
                "$ref": "#/components/schemas/TestPersonaDto"
            },
            "type": "array"
        },
        "page": {
            "format": "int32",
            "type": "integer"
        },
        "size": {
            "format": "int32",
            "type": "integer"
        },
        "totalElements": {
            "format": "int64",
            "type": "integer"
        }
    },
    "required": [
        "data",
        "page",
        "size",
        "totalElements"
    ],
    "type": "object"
}

POST /api/v1/workspaces/{workspaceId}/projects/{projectId}/test-personas

Create test persona

Description

Creates a test persona: a named identity (credentials or token) that generated tests and the verifier authenticate as when exercising your API. Credentials are stored encrypted and never returned in responses.

Input parameters

Parameter In Type Default Nullable Description
projectId path string No Project ID
workspaceId path string No Workspace ID

Request body

{
    "authType": "BEARER",
    "description": "string",
    "envVar": "string",
    "id": "ddb70811-ad29-48bf-a0c5-1a600beb6f31",
    "name": "string",
    "projectId": "9d7666eb-68a9-47a6-9870-b9a8288e0329",
    "scope": "TENANT",
    "script": "string"
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the request body
{
    "description": "Test persona for authentication in generated tests",
    "properties": {
        "authType": {
            "enum": [
                "BEARER",
                "BASIC",
                "HEADER",
                "HTTP_ENDPOINT",
                "JS",
                "NONE"
            ],
            "type": "string"
        },
        "description": {
            "type": "string"
        },
        "envVar": {
            "type": [
                "string",
                "null"
            ]
        },
        "id": {
            "format": "uuid",
            "pattern": "[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}",
            "type": [
                "string",
                "null"
            ]
        },
        "name": {
            "type": "string"
        },
        "projectId": {
            "format": "uuid",
            "pattern": "[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}",
            "type": [
                "string",
                "null"
            ]
        },
        "scope": {
            "enum": [
                "TENANT",
                "WORKSPACE",
                "PROJECT"
            ],
            "type": "string"
        },
        "script": {
            "type": [
                "string",
                "null"
            ]
        }
    },
    "required": [
        "name",
        "description",
        "authType",
        "scope"
    ],
    "type": "object"
}

Responses

{
    "authType": "BEARER",
    "description": "string",
    "envVar": "string",
    "id": "0181b227-4e8b-4cf7-9d6f-305745178312",
    "name": "string",
    "projectId": "1e0589fe-92ae-44dc-9d48-03af03f2fb28",
    "scope": "TENANT",
    "script": "string"
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the response body
{
    "description": "Test persona for authentication in generated tests",
    "properties": {
        "authType": {
            "enum": [
                "BEARER",
                "BASIC",
                "HEADER",
                "HTTP_ENDPOINT",
                "JS",
                "NONE"
            ],
            "type": "string"
        },
        "description": {
            "type": "string"
        },
        "envVar": {
            "type": [
                "string",
                "null"
            ]
        },
        "id": {
            "format": "uuid",
            "pattern": "[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}",
            "type": [
                "string",
                "null"
            ]
        },
        "name": {
            "type": "string"
        },
        "projectId": {
            "format": "uuid",
            "pattern": "[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}",
            "type": [
                "string",
                "null"
            ]
        },
        "scope": {
            "enum": [
                "TENANT",
                "WORKSPACE",
                "PROJECT"
            ],
            "type": "string"
        },
        "script": {
            "type": [
                "string",
                "null"
            ]
        }
    },
    "required": [
        "name",
        "description",
        "authType",
        "scope"
    ],
    "type": "object"
}

DELETE /api/v1/workspaces/{workspaceId}/projects/{projectId}/test-personas/{personaId}

Delete test persona

Description

Deletes a persona. Test plans that referenced it fall back to the project's remaining personas on the next generation or run.

Input parameters

Parameter In Type Default Nullable Description
personaId path string No Persona ID
projectId path string No Project ID
workspaceId path string No Workspace ID

Responses


PUT /api/v1/workspaces/{workspaceId}/projects/{projectId}/test-personas/{personaId}

Update test persona

Description

Updates a persona's name, role, or credentials. Fields omitted from the body are left unchanged; existing secrets are kept unless replaced.

Input parameters

Parameter In Type Default Nullable Description
personaId path string No Persona ID
projectId path string No Project ID
workspaceId path string No Workspace ID

Request body

{
    "authType": "BEARER",
    "description": "string",
    "envVar": "string",
    "id": "b99c9391-49a9-4d08-bce5-b5bfffa9ed85",
    "name": "string",
    "projectId": "c3a17cc0-6f4c-4754-aca5-b6489d356e43",
    "scope": "TENANT",
    "script": "string"
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the request body
{
    "description": "Test persona for authentication in generated tests",
    "properties": {
        "authType": {
            "enum": [
                "BEARER",
                "BASIC",
                "HEADER",
                "HTTP_ENDPOINT",
                "JS",
                "NONE"
            ],
            "type": "string"
        },
        "description": {
            "type": "string"
        },
        "envVar": {
            "type": [
                "string",
                "null"
            ]
        },
        "id": {
            "format": "uuid",
            "pattern": "[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}",
            "type": [
                "string",
                "null"
            ]
        },
        "name": {
            "type": "string"
        },
        "projectId": {
            "format": "uuid",
            "pattern": "[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}",
            "type": [
                "string",
                "null"
            ]
        },
        "scope": {
            "enum": [
                "TENANT",
                "WORKSPACE",
                "PROJECT"
            ],
            "type": "string"
        },
        "script": {
            "type": [
                "string",
                "null"
            ]
        }
    },
    "required": [
        "name",
        "description",
        "authType",
        "scope"
    ],
    "type": "object"
}

Responses

{
    "authType": "BEARER",
    "description": "string",
    "envVar": "string",
    "id": "042a5ee3-8a14-45e8-9ca1-7e6d4b0fb091",
    "name": "string",
    "projectId": "92876dcf-b6c5-48b1-a3c2-43d7880799b0",
    "scope": "TENANT",
    "script": "string"
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the response body
{
    "description": "Test persona for authentication in generated tests",
    "properties": {
        "authType": {
            "enum": [
                "BEARER",
                "BASIC",
                "HEADER",
                "HTTP_ENDPOINT",
                "JS",
                "NONE"
            ],
            "type": "string"
        },
        "description": {
            "type": "string"
        },
        "envVar": {
            "type": [
                "string",
                "null"
            ]
        },
        "id": {
            "format": "uuid",
            "pattern": "[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}",
            "type": [
                "string",
                "null"
            ]
        },
        "name": {
            "type": "string"
        },
        "projectId": {
            "format": "uuid",
            "pattern": "[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}",
            "type": [
                "string",
                "null"
            ]
        },
        "scope": {
            "enum": [
                "TENANT",
                "WORKSPACE",
                "PROJECT"
            ],
            "type": "string"
        },
        "script": {
            "type": [
                "string",
                "null"
            ]
        }
    },
    "required": [
        "name",
        "description",
        "authType",
        "scope"
    ],
    "type": "object"
}

GET /api/v1/workspaces/{workspaceId}/projects/{projectId}/test-runs

List test runs

Description

Returns the project's verifier and regression test runs, newest first, paginated. Each run includes its status and pass/fail counts; fetch per-test detail with the run's results endpoint.

Input parameters

Parameter In Type Default Nullable Description
page query integer 1 No Page number (1-indexed)
projectId path string No Project ID
size query integer 10 No Number of items per page (1-100, default 10)
sort query string | null Yes Sort order, `:` (default: start time, newest first)
startedAfter query string | null Yes Only runs started after this ISO-8601 instant
startedBefore query string | null Yes Only runs started before this ISO-8601 instant
status query string | null Yes Filter by run status (e.g. RUNNING, COMPLETED, FAILED)
workspaceId path string No Workspace ID

Responses

{
    "data": [
        {
            "branch": "string",
            "commitId": "string",
            "completedAt": "2022-03-10T16:15:50Z",
            "durationMs": 128,
            "failed": 297,
            "imageTag": "string",
            "passed": 250,
            "projectId": "a83549c2-91e2-465a-bc91-f41ff4d4f227",
            "runId": "a3b17299-8a6a-4e80-be51-5e458b79181f",
            "skipped": 6,
            "startedAt": "2022-03-10T16:15:50Z",
            "status": "string",
            "tenantId": "f2a3f09b-8a3e-4012-8b09-8186f7f647c2",
            "totalTests": 260
        }
    ],
    "page": 92,
    "size": 116,
    "totalElements": 81
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the response body
{
    "description": "Paginated list response wrapper",
    "properties": {
        "data": {
            "items": {
                "$ref": "#/components/schemas/TestRunDto"
            },
            "type": "array"
        },
        "page": {
            "format": "int32",
            "type": "integer"
        },
        "size": {
            "format": "int32",
            "type": "integer"
        },
        "totalElements": {
            "format": "int64",
            "type": "integer"
        }
    },
    "required": [
        "data",
        "page",
        "size",
        "totalElements"
    ],
    "type": "object"
}

GET /api/v1/workspaces/{workspaceId}/projects/{projectId}/test-runs/{runId}/results

List test results for a run

Description

Returns the per-test-case results of one run, paginated: verdict, duration, and failure details for each executed test case.

Input parameters

Parameter In Type Default Nullable Description
page query integer 1 No Page number (1-indexed)
projectId path string No Project ID
runId path string No Test run ID
size query integer 10 No Number of items per page (1-100, default 10)
status query string | null Yes Filter by result status (e.g. PASSED, FAILED, SKIPPED)
testCaseName query string | null Yes Filter by test case name (partial match)
workspaceId path string No Workspace ID

Responses

{
    "data": [
        {
            "durationMs": 282,
            "endedAt": "2022-03-10T16:15:50Z",
            "errorMessage": "string",
            "journeyRef": "string",
            "logUrl": "string",
            "runId": "81eaf82e-0591-4cf2-94cf-806b2e39522c",
            "startedAt": "2022-03-10T16:15:50Z",
            "status": "string",
            "stepTraces": [
                {
                    "durationMs": 142,
                    "error": "string",
                    "expectedStatus": 258,
                    "method": "string",
                    "passed": true,
                    "path": "string",
                    "requestBody": "string",
                    "requestHeaders": {},
                    "responseBody": "string",
                    "responseHeaders": {},
                    "statusCode": 83,
                    "stepDescription": "string",
                    "testCaseStepIndex": 75,
                    "timestamp": "string"
                }
            ],
            "testCaseId": "da6ff744-01fa-449a-af25-34120c486114",
            "testName": "string"
        }
    ],
    "page": 296,
    "size": 281,
    "totalElements": 54
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the response body
{
    "description": "Paginated list response wrapper",
    "properties": {
        "data": {
            "items": {
                "$ref": "#/components/schemas/TestCaseResultDto"
            },
            "type": "array"
        },
        "page": {
            "format": "int32",
            "type": "integer"
        },
        "size": {
            "format": "int32",
            "type": "integer"
        },
        "totalElements": {
            "format": "int64",
            "type": "integer"
        }
    },
    "required": [
        "data",
        "page",
        "size",
        "totalElements"
    ],
    "type": "object"
}

GET /api/v1/workspaces/{workspaceId}/projects/{projectId}/test-runs/{runId}/results/{testCaseId}/log

Get test case log download URL

Description

Returns a short-lived signed URL for downloading the full execution log of one test case in a run. Fetch the URL promptly — it expires.

Input parameters

Parameter In Type Default Nullable Description
projectId path string No Project ID
runId path string No Test run ID
testCaseId path string No Test case ID
workspaceId path string No Workspace ID

Responses

Schema of the response body
{
    "additionalProperties": {
        "type": "string"
    },
    "type": "object"
}

GET /api/v1/workspaces/{workspaceId}/projects/{projectId}/validation-cases

List validation cases

Description

Returns the AI-generated validation (test) cases for a project, paginated. Filter by feature to see the cases derived from one feature's requirements.

Input parameters

Parameter In Type Default Nullable Description
featureId query string | null Yes Filter by feature ID
page query integer 1 No Page number (1-indexed)
projectId path string No Project ID
size query integer 10 No Number of items per page (1-100, default 10)
status query string | null Yes Filter by status
workspaceId path string No Workspace ID

Responses

{
    "data": [
        {
            "assertionsFromPrd": [
                {
                    "description": "string",
                    "graphCaptured": true,
                    "prdQuote": "string",
                    "type": "string"
                }
            ],
            "coverageFlags": [
                "string"
            ],
            "dataExpectations": [
                "string"
            ],
            "description": "string",
            "edgeCasesFromPrd": [
                "string"
            ],
            "enrichmentModelVersion": "string",
            "featureId": "26534457-e8fd-4774-af38-0ccae2dd3f67",
            "generatedAt": "2022-03-10T16:15:50Z",
            "globalConstraints": [
                "string"
            ],
            "id": "24299882-7dc4-401f-860b-aadaf2df11a2",
            "name": "string",
            "outcomeType": "string",
            "pathClass": "string",
            "postConditions": [
                "string"
            ],
            "preConditions": [
                "string"
            ],
            "priority": "string",
            "projectId": "bb649d0b-6d53-487d-a922-db748ac376bd",
            "riskIndicator": "string",
            "roleRequirement": "string",
            "sectionRefs": [
                {
                    "prdQuote": "string",
                    "sectionHeading": "string",
                    "sectionIndex": 64
                }
            ],
            "sourceContentHash": "string",
            "sourceDecisionRef": "string",
            "sourceJourneyId": "string",
            "sourcePrdId": "68050e36-603e-4eba-ac12-fd1434066ecb",
            "status": "string",
            "stepsFromGraph": [
                "string"
            ],
            "type": "string",
            "workspaceId": "c608bc78-144b-44c5-a47b-9945045d2b1b"
        }
    ],
    "page": 240,
    "size": 155,
    "totalElements": 286
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the response body
{
    "description": "Paginated list response wrapper",
    "properties": {
        "data": {
            "items": {
                "$ref": "#/components/schemas/ValidationCaseDto"
            },
            "type": "array"
        },
        "page": {
            "format": "int32",
            "type": "integer"
        },
        "size": {
            "format": "int32",
            "type": "integer"
        },
        "totalElements": {
            "format": "int64",
            "type": "integer"
        }
    },
    "required": [
        "data",
        "page",
        "size",
        "totalElements"
    ],
    "type": "object"
}

POST /api/v1/workspaces/{workspaceId}/projects/{projectId}/validation-cases/generate

Trigger validation case generation

Description

Starts asynchronous generation of validation cases from a feature's requirements. Returns a workflowId immediately — poll the status endpoint to track progress, then list validation cases to see the results. The feature should have completed PRD/TRD documents first.

Input parameters

Parameter In Type Default Nullable Description
projectId path string No Project ID
workspaceId path string No Workspace ID

Request body

{
    "featureId": "a60422a7-9c51-41ec-8dd8-b285458b7c99"
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the request body
{
    "description": "Request body for triggering validation case generation",
    "properties": {
        "featureId": {
            "format": "uuid",
            "pattern": "[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}",
            "type": "string"
        }
    },
    "required": [
        "featureId"
    ],
    "type": "object"
}

Responses

{
    "workflowId": "string"
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the response body
{
    "properties": {
        "workflowId": {
            "type": "string"
        }
    },
    "required": [
        "workflowId"
    ],
    "type": "object"
}

GET /api/v1/workspaces/{workspaceId}/projects/{projectId}/validation-cases/generate/status/{workflowId}

Get validation case generation status

Description

Returns the progress of a generation started via the generate endpoint: current phase and whether it is still running, completed, or failed.

Input parameters

Parameter In Type Default Nullable Description
projectId path string No Project ID
workflowId path string No Workflow ID returned by the generate endpoint
workspaceId path string No Workspace ID

Responses

{
    "enrichedCases": 219,
    "message": "string",
    "persistedCases": 59,
    "phase": "string",
    "status": "string",
    "totalSkeletons": 158
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the response body
{
    "description": "Status of a validation case generation workflow",
    "properties": {
        "enrichedCases": {
            "format": "int32",
            "type": "integer"
        },
        "message": {
            "type": "string"
        },
        "persistedCases": {
            "format": "int32",
            "type": "integer"
        },
        "phase": {
            "type": [
                "string",
                "null"
            ]
        },
        "status": {
            "type": "string"
        },
        "totalSkeletons": {
            "format": "int32",
            "type": "integer"
        }
    },
    "required": [
        "status",
        "message"
    ],
    "type": "object"
}

Schemas

Assertion

Name Type Description
description string
graphCaptured boolean
prdQuote string
type string

GenerationTriggerDto

Name Type Description
workflowId string

PaginatedResponsePatDto

Name Type Description
data Array<PatDto>
page integer(int32)
size integer(int32)
totalElements integer(int64)

PaginatedResponseProjectDto

Name Type Description
data Array<ProjectDto>
page integer(int32)
size integer(int32)
totalElements integer(int64)

PaginatedResponseTestCaseResultDto

Name Type Description
data Array<TestCaseResultDto>
page integer(int32)
size integer(int32)
totalElements integer(int64)

PaginatedResponseTestPersonaDto

Name Type Description
data Array<TestPersonaDto>
page integer(int32)
size integer(int32)
totalElements integer(int64)

PaginatedResponseTestRunDto

Name Type Description
data Array<TestRunDto>
page integer(int32)
size integer(int32)
totalElements integer(int64)

PaginatedResponseValidationCaseDto

Name Type Description
data Array<ValidationCaseDto>
page integer(int32)
size integer(int32)
totalElements integer(int64)

PaginatedResponseWorkspaceDto

Name Type Description
data Array<WorkspaceDto>
page integer(int32)
size integer(int32)
totalElements integer(int64)

PatDto

Name Type Description
createdAt string(date-time) | null
id string(uuid) | null
lastUsedAt string(date-time) | null
name string
scope string | null
token string | null
tokenPrefix string | null
workspaceId string(uuid) | null

ProjectDto

Name Type Description
description string | null
id string(uuid) | null
name string
status string Project lifecycle status
workspaceId string(uuid) | null

SectionRef

Name Type Description
prdQuote string | null
sectionHeading string
sectionIndex integer(int32)

StepTraceDto

Name Type Description
durationMs integer(int64)
error string
expectedStatus integer(int32) | null
method string
passed boolean | null
path string
requestBody string
requestHeaders
responseBody string
responseHeaders
statusCode integer(int32)
stepDescription string
testCaseStepIndex integer(int32)
timestamp string

TestCaseResultDto

Name Type Description
durationMs integer(int64)
endedAt string(date-time)
errorMessage string
journeyRef string | null
logUrl string
runId string(uuid)
startedAt string(date-time)
status string
stepTraces Array<StepTraceDto>
testCaseId string(uuid)
testName string

TestPersonaDto

Name Type Description
authType string
description string
envVar string | null
id string(uuid) | null
name string
projectId string(uuid) | null
scope string
script string | null

TestRunDto

Name Type Description
branch string | null
commitId string | null
completedAt string(date-time) | null
durationMs integer(int64) | null
failed integer(int32)
imageTag string | null
passed integer(int32)
projectId string(uuid)
runId string(uuid)
skipped integer(int32)
startedAt string(date-time)
status string
tenantId string(uuid)
totalTests integer(int32)

ValidationCaseDto

Name Type Description
assertionsFromPrd Array<Assertion>
coverageFlags Array<string>
dataExpectations Array<string>
description string | null
edgeCasesFromPrd Array<string>
enrichmentModelVersion string | null
featureId string(uuid) | null
generatedAt string(date-time) | null
globalConstraints Array<string>
id string(uuid)
name string
outcomeType string
pathClass string
postConditions Array<string>
preConditions Array<string>
priority string
projectId string(uuid)
riskIndicator string | null
roleRequirement string | null
sectionRefs Array<SectionRef>
sourceContentHash string | null
sourceDecisionRef string | null
sourceJourneyId string | null
sourcePrdId string(uuid)
status string
stepsFromGraph Array<string>
type string
workspaceId string(uuid)

ValidationCaseGenerationStatusDto

Name Type Description
enrichedCases integer(int32)
message string
persistedCases integer(int32)
phase string | null
status string
totalSkeletons integer(int32)

ValidationCaseGenerationTriggerDto

Name Type Description
featureId string(uuid)

WorkspaceDto

Name Type Description
id string(uuid) | null
name string
tenantId string(uuid) | null