{
  "components": {
    "schemas": {
      "Assertion": {
        "properties": {
          "description": {
            "type": "string"
          },
          "graphCaptured": {
            "type": "boolean"
          },
          "prdQuote": {
            "type": "string"
          },
          "type": {
            "type": "string"
          }
        },
        "required": [
          "type",
          "description",
          "prdQuote",
          "graphCaptured"
        ],
        "type": "object"
      },
      "GenerationTriggerDto": {
        "properties": {
          "workflowId": {
            "type": "string"
          }
        },
        "required": [
          "workflowId"
        ],
        "type": "object"
      },
      "PaginatedResponsePatDto": {
        "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"
      },
      "PaginatedResponseProjectDto": {
        "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"
      },
      "PaginatedResponseTestCaseResultDto": {
        "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"
      },
      "PaginatedResponseTestPersonaDto": {
        "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"
      },
      "PaginatedResponseTestRunDto": {
        "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"
      },
      "PaginatedResponseValidationCaseDto": {
        "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"
      },
      "PaginatedResponseWorkspaceDto": {
        "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"
      },
      "PatDto": {
        "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"
      },
      "ProjectDto": {
        "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"
      },
      "SectionRef": {
        "properties": {
          "prdQuote": {
            "type": [
              "string",
              "null"
            ]
          },
          "sectionHeading": {
            "type": "string"
          },
          "sectionIndex": {
            "format": "int32",
            "type": "integer"
          }
        },
        "required": [
          "sectionIndex",
          "sectionHeading"
        ],
        "type": "object"
      },
      "StepTraceDto": {
        "properties": {
          "durationMs": {
            "format": "int64",
            "type": "integer"
          },
          "error": {
            "type": "string"
          },
          "expectedStatus": {
            "format": "int32",
            "type": [
              "integer",
              "null"
            ]
          },
          "method": {
            "type": "string"
          },
          "passed": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "path": {
            "type": "string"
          },
          "requestBody": {
            "type": "string"
          },
          "requestHeaders": {
            "additionalProperties": {
              "type": "string"
            },
            "type": "object"
          },
          "responseBody": {
            "type": "string"
          },
          "responseHeaders": {
            "additionalProperties": {
              "type": "string"
            },
            "type": "object"
          },
          "statusCode": {
            "format": "int32",
            "type": "integer"
          },
          "stepDescription": {
            "type": "string"
          },
          "testCaseStepIndex": {
            "format": "int32",
            "type": "integer"
          },
          "timestamp": {
            "type": "string"
          }
        },
        "required": [
          "testCaseStepIndex",
          "method",
          "path",
          "statusCode",
          "durationMs"
        ],
        "type": "object"
      },
      "TestCaseResultDto": {
        "properties": {
          "durationMs": {
            "format": "int64",
            "type": "integer"
          },
          "endedAt": {
            "examples": [
              "2022-03-10T16:15:50Z"
            ],
            "format": "date-time",
            "type": "string"
          },
          "errorMessage": {
            "type": "string"
          },
          "journeyRef": {
            "type": [
              "string",
              "null"
            ]
          },
          "logUrl": {
            "type": "string"
          },
          "runId": {
            "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"
          },
          "startedAt": {
            "examples": [
              "2022-03-10T16:15:50Z"
            ],
            "format": "date-time",
            "type": "string"
          },
          "status": {
            "type": "string"
          },
          "stepTraces": {
            "items": {
              "$ref": "#/components/schemas/StepTraceDto"
            },
            "type": "array"
          },
          "testCaseId": {
            "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"
          },
          "testName": {
            "type": "string"
          }
        },
        "required": [
          "runId",
          "testCaseId",
          "testName",
          "status",
          "startedAt",
          "endedAt",
          "durationMs"
        ],
        "type": "object"
      },
      "TestPersonaDto": {
        "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"
      },
      "TestRunDto": {
        "properties": {
          "branch": {
            "type": [
              "string",
              "null"
            ]
          },
          "commitId": {
            "type": [
              "string",
              "null"
            ]
          },
          "completedAt": {
            "examples": [
              "2022-03-10T16:15:50Z"
            ],
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "durationMs": {
            "format": "int64",
            "type": [
              "integer",
              "null"
            ]
          },
          "failed": {
            "format": "int32",
            "type": "integer"
          },
          "imageTag": {
            "type": [
              "string",
              "null"
            ]
          },
          "passed": {
            "format": "int32",
            "type": "integer"
          },
          "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"
          },
          "runId": {
            "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"
          },
          "skipped": {
            "format": "int32",
            "type": "integer"
          },
          "startedAt": {
            "examples": [
              "2022-03-10T16:15:50Z"
            ],
            "format": "date-time",
            "type": "string"
          },
          "status": {
            "type": "string"
          },
          "tenantId": {
            "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"
          },
          "totalTests": {
            "format": "int32",
            "type": "integer"
          }
        },
        "required": [
          "runId",
          "tenantId",
          "projectId",
          "status",
          "startedAt"
        ],
        "type": "object"
      },
      "ValidationCaseDto": {
        "description": "Validation case",
        "properties": {
          "assertionsFromPrd": {
            "items": {
              "$ref": "#/components/schemas/Assertion"
            },
            "type": "array"
          },
          "coverageFlags": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "dataExpectations": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "description": {
            "type": [
              "string",
              "null"
            ]
          },
          "edgeCasesFromPrd": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "enrichmentModelVersion": {
            "type": [
              "string",
              "null"
            ]
          },
          "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",
              "null"
            ]
          },
          "generatedAt": {
            "examples": [
              "2022-03-10T16:15:50Z"
            ],
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "globalConstraints": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "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"
          },
          "name": {
            "type": "string"
          },
          "outcomeType": {
            "type": "string"
          },
          "pathClass": {
            "type": "string"
          },
          "postConditions": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "preConditions": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "priority": {
            "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"
          },
          "riskIndicator": {
            "type": [
              "string",
              "null"
            ]
          },
          "roleRequirement": {
            "type": [
              "string",
              "null"
            ]
          },
          "sectionRefs": {
            "items": {
              "$ref": "#/components/schemas/SectionRef"
            },
            "type": "array"
          },
          "sourceContentHash": {
            "type": [
              "string",
              "null"
            ]
          },
          "sourceDecisionRef": {
            "type": [
              "string",
              "null"
            ]
          },
          "sourceJourneyId": {
            "type": [
              "string",
              "null"
            ]
          },
          "sourcePrdId": {
            "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"
          },
          "status": {
            "type": "string"
          },
          "stepsFromGraph": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "type": {
            "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"
          }
        },
        "required": [
          "id",
          "workspaceId",
          "projectId",
          "name",
          "sourcePrdId",
          "outcomeType",
          "pathClass",
          "priority",
          "status",
          "type"
        ],
        "type": "object"
      },
      "ValidationCaseGenerationStatusDto": {
        "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"
      },
      "ValidationCaseGenerationTriggerDto": {
        "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"
      },
      "WorkspaceDto": {
        "description": "A workspace within a tenant — an isolated project space with its own members and resources",
        "properties": {
          "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": {
            "pattern": "\\S",
            "type": "string"
          },
          "tenantId": {
            "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"
      }
    }
  },
  "info": {
    "title": "Dezycro Public API",
    "version": "1.0.0"
  },
  "openapi": "3.1.0",
  "paths": {
    "/api/v1/pats": {
      "get": {
        "operationId": "public_listPats",
        "parameters": [
          {
            "description": "Filter by token name (partial match, supports * wildcard)",
            "in": "query",
            "name": "name",
            "required": false,
            "schema": {
              "type": [
                "string",
                "null"
              ]
            }
          },
          {
            "description": "Page number (1-indexed)",
            "in": "query",
            "name": "page",
            "required": false,
            "schema": {
              "default": 1,
              "type": "integer"
            }
          },
          {
            "description": "Number of items per page (1-100, default 10)",
            "in": "query",
            "name": "size",
            "required": false,
            "schema": {
              "default": 10,
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/PaginatedResponsePatDto"
                }
              }
            },
            "description": "OK"
          }
        },
        "summary": "List personal access tokens for the current user in the tenant",
        "tags": [
          "Public"
        ]
      },
      "post": {
        "operationId": "public_createPat",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PatDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/PatDto"
                }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Create a new tenant-scoped personal access token",
        "tags": [
          "Public"
        ]
      }
    },
    "/api/v1/pats/{id}": {
      "delete": {
        "operationId": "public_revokePat",
        "parameters": [
          {
            "description": "Token ID to revoke",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "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"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          }
        },
        "summary": "Revoke a personal access token",
        "tags": [
          "Public"
        ]
      }
    },
    "/api/v1/workspaces": {
      "get": {
        "description": "Returns all workspaces the current user has access to within the tenant.",
        "operationId": "public_listWorkspaces",
        "parameters": [
          {
            "description": "Filter workspaces by name (partial match)",
            "in": "query",
            "name": "name",
            "required": false,
            "schema": {
              "type": [
                "string",
                "null"
              ]
            }
          },
          {
            "description": "Page number (1-indexed)",
            "in": "query",
            "name": "page",
            "required": false,
            "schema": {
              "default": 1,
              "type": "integer"
            }
          },
          {
            "description": "Number of items per page (1-100, default 10)",
            "in": "query",
            "name": "size",
            "required": false,
            "schema": {
              "default": 10,
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/PaginatedResponseWorkspaceDto"
                }
              }
            },
            "description": "OK"
          }
        },
        "summary": "List workspaces",
        "tags": [
          "Public"
        ]
      }
    },
    "/api/v1/workspaces/{workspaceId}/projects": {
      "get": {
        "operationId": "public_listProjects",
        "parameters": [
          {
            "in": "path",
            "name": "workspaceId",
            "required": true,
            "schema": {
              "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"
            }
          },
          {
            "in": "query",
            "name": "includeArchived",
            "schema": {
              "default": false,
              "type": "boolean"
            }
          },
          {
            "in": "query",
            "name": "nameWildcard",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Page number (1-indexed)",
            "in": "query",
            "name": "page",
            "required": false,
            "schema": {
              "default": 1,
              "type": "integer"
            }
          },
          {
            "description": "Number of items per page (1-100, default 10)",
            "in": "query",
            "name": "size",
            "required": false,
            "schema": {
              "default": 10,
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/PaginatedResponseProjectDto"
                }
              }
            },
            "description": "OK"
          }
        },
        "tags": [
          "Public"
        ]
      },
      "post": {
        "operationId": "public_createProject",
        "parameters": [
          {
            "in": "path",
            "name": "workspaceId",
            "required": true,
            "schema": {
              "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"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ProjectDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ProjectDto"
                }
              }
            },
            "description": "OK"
          }
        },
        "tags": [
          "Public"
        ]
      }
    },
    "/api/v1/workspaces/{workspaceId}/projects/{projectId}": {
      "delete": {
        "operationId": "public_deleteProject",
        "parameters": [
          {
            "in": "path",
            "name": "projectId",
            "required": true,
            "schema": {
              "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"
            }
          },
          {
            "in": "path",
            "name": "workspaceId",
            "required": true,
            "schema": {
              "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"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          }
        },
        "tags": [
          "Public"
        ]
      },
      "get": {
        "operationId": "public_getProject",
        "parameters": [
          {
            "in": "path",
            "name": "projectId",
            "required": true,
            "schema": {
              "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"
            }
          },
          {
            "in": "path",
            "name": "workspaceId",
            "required": true,
            "schema": {
              "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"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ProjectDto"
                }
              }
            },
            "description": "OK"
          }
        },
        "tags": [
          "Public"
        ]
      },
      "put": {
        "operationId": "public_updateProject",
        "parameters": [
          {
            "in": "path",
            "name": "projectId",
            "required": true,
            "schema": {
              "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"
            }
          },
          {
            "in": "path",
            "name": "workspaceId",
            "required": true,
            "schema": {
              "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"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ProjectDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ProjectDto"
                }
              }
            },
            "description": "OK"
          }
        },
        "tags": [
          "Public"
        ]
      }
    },
    "/api/v1/workspaces/{workspaceId}/projects/{projectId}/test-personas": {
      "get": {
        "operationId": "public_listPersonas",
        "parameters": [
          {
            "description": "Project ID",
            "in": "path",
            "name": "projectId",
            "required": true,
            "schema": {
              "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"
            }
          },
          {
            "description": "Workspace ID",
            "in": "path",
            "name": "workspaceId",
            "required": true,
            "schema": {
              "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"
            }
          },
          {
            "description": "Filter by persona name (partial match)",
            "in": "query",
            "name": "name",
            "required": false,
            "schema": {
              "type": [
                "string",
                "null"
              ]
            }
          },
          {
            "description": "Persona scope filter (TENANT, WORKSPACE, or PROJECT)",
            "in": "query",
            "name": "scope",
            "required": false,
            "schema": {
              "enum": [
                "TENANT",
                "WORKSPACE",
                "PROJECT"
              ],
              "type": [
                "string",
                "null"
              ]
            }
          },
          {
            "description": "Page number (1-indexed)",
            "in": "query",
            "name": "page",
            "required": false,
            "schema": {
              "default": 1,
              "type": "integer"
            }
          },
          {
            "description": "Number of items per page (1-100, default 10)",
            "in": "query",
            "name": "size",
            "required": false,
            "schema": {
              "default": 10,
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/PaginatedResponseTestPersonaDto"
                }
              }
            },
            "description": "OK"
          }
        },
        "summary": "List test personas",
        "tags": [
          "Public"
        ]
      },
      "post": {
        "operationId": "public_createPersona",
        "parameters": [
          {
            "description": "Project ID",
            "in": "path",
            "name": "projectId",
            "required": true,
            "schema": {
              "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"
            }
          },
          {
            "description": "Workspace ID",
            "in": "path",
            "name": "workspaceId",
            "required": true,
            "schema": {
              "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"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TestPersonaDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/TestPersonaDto"
                }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Create a test persona",
        "tags": [
          "Public"
        ]
      }
    },
    "/api/v1/workspaces/{workspaceId}/projects/{projectId}/test-personas/{personaId}": {
      "delete": {
        "operationId": "public_deletePersona",
        "parameters": [
          {
            "description": "Persona ID",
            "in": "path",
            "name": "personaId",
            "required": true,
            "schema": {
              "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"
            }
          },
          {
            "description": "Project ID",
            "in": "path",
            "name": "projectId",
            "required": true,
            "schema": {
              "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"
            }
          },
          {
            "description": "Workspace ID",
            "in": "path",
            "name": "workspaceId",
            "required": true,
            "schema": {
              "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"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          }
        },
        "summary": "Delete a test persona",
        "tags": [
          "Public"
        ]
      },
      "put": {
        "operationId": "public_updatePersona",
        "parameters": [
          {
            "description": "Persona ID",
            "in": "path",
            "name": "personaId",
            "required": true,
            "schema": {
              "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"
            }
          },
          {
            "description": "Project ID",
            "in": "path",
            "name": "projectId",
            "required": true,
            "schema": {
              "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"
            }
          },
          {
            "description": "Workspace ID",
            "in": "path",
            "name": "workspaceId",
            "required": true,
            "schema": {
              "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"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TestPersonaDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/TestPersonaDto"
                }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Update a test persona",
        "tags": [
          "Public"
        ]
      }
    },
    "/api/v1/workspaces/{workspaceId}/projects/{projectId}/test-runs": {
      "get": {
        "operationId": "public_listRuns",
        "parameters": [
          {
            "in": "path",
            "name": "projectId",
            "required": true,
            "schema": {
              "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"
            }
          },
          {
            "in": "path",
            "name": "workspaceId",
            "required": true,
            "schema": {
              "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"
            }
          },
          {
            "in": "query",
            "name": "sort",
            "required": false,
            "schema": {
              "type": [
                "string",
                "null"
              ]
            }
          },
          {
            "in": "query",
            "name": "startedAfter",
            "required": false,
            "schema": {
              "examples": [
                "2022-03-10T16:15:50Z"
              ],
              "format": "date-time",
              "type": [
                "string",
                "null"
              ]
            }
          },
          {
            "in": "query",
            "name": "startedBefore",
            "required": false,
            "schema": {
              "examples": [
                "2022-03-10T16:15:50Z"
              ],
              "format": "date-time",
              "type": [
                "string",
                "null"
              ]
            }
          },
          {
            "in": "query",
            "name": "status",
            "required": false,
            "schema": {
              "type": [
                "string",
                "null"
              ]
            }
          },
          {
            "description": "Page number (1-indexed)",
            "in": "query",
            "name": "page",
            "required": false,
            "schema": {
              "default": 1,
              "type": "integer"
            }
          },
          {
            "description": "Number of items per page (1-100, default 10)",
            "in": "query",
            "name": "size",
            "required": false,
            "schema": {
              "default": 10,
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/PaginatedResponseTestRunDto"
                }
              }
            },
            "description": "OK"
          }
        },
        "tags": [
          "Public"
        ]
      }
    },
    "/api/v1/workspaces/{workspaceId}/projects/{projectId}/test-runs/{runId}/results": {
      "get": {
        "operationId": "public_getResults",
        "parameters": [
          {
            "in": "path",
            "name": "projectId",
            "required": true,
            "schema": {
              "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"
            }
          },
          {
            "in": "path",
            "name": "runId",
            "required": true,
            "schema": {
              "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"
            }
          },
          {
            "in": "path",
            "name": "workspaceId",
            "required": true,
            "schema": {
              "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"
            }
          },
          {
            "in": "query",
            "name": "status",
            "required": false,
            "schema": {
              "type": [
                "string",
                "null"
              ]
            }
          },
          {
            "in": "query",
            "name": "testCaseName",
            "required": false,
            "schema": {
              "type": [
                "string",
                "null"
              ]
            }
          },
          {
            "description": "Page number (1-indexed)",
            "in": "query",
            "name": "page",
            "required": false,
            "schema": {
              "default": 1,
              "type": "integer"
            }
          },
          {
            "description": "Number of items per page (1-100, default 10)",
            "in": "query",
            "name": "size",
            "required": false,
            "schema": {
              "default": 10,
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/PaginatedResponseTestCaseResultDto"
                }
              }
            },
            "description": "OK"
          }
        },
        "tags": [
          "Public"
        ]
      }
    },
    "/api/v1/workspaces/{workspaceId}/projects/{projectId}/test-runs/{runId}/results/{testCaseId}/log": {
      "get": {
        "operationId": "public_getLogUrl",
        "parameters": [
          {
            "in": "path",
            "name": "projectId",
            "required": true,
            "schema": {
              "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"
            }
          },
          {
            "in": "path",
            "name": "runId",
            "required": true,
            "schema": {
              "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"
            }
          },
          {
            "in": "path",
            "name": "testCaseId",
            "required": true,
            "schema": {
              "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"
            }
          },
          {
            "in": "path",
            "name": "workspaceId",
            "required": true,
            "schema": {
              "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"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "*/*": {
                "schema": {
                  "additionalProperties": {
                    "type": "string"
                  },
                  "type": "object"
                }
              }
            },
            "description": "OK"
          }
        },
        "tags": [
          "Public"
        ]
      }
    },
    "/api/v1/workspaces/{workspaceId}/projects/{projectId}/validation-cases": {
      "get": {
        "operationId": "publicListValidationCases",
        "parameters": [
          {
            "in": "path",
            "name": "projectId",
            "required": true,
            "schema": {
              "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"
            }
          },
          {
            "in": "path",
            "name": "workspaceId",
            "required": true,
            "schema": {
              "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"
            }
          },
          {
            "description": "Filter by feature ID",
            "in": "query",
            "name": "featureId",
            "required": false,
            "schema": {
              "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"
              ]
            }
          },
          {
            "description": "Filter by status",
            "in": "query",
            "name": "status",
            "required": true,
            "schema": {
              "type": [
                "string",
                "null"
              ]
            }
          },
          {
            "description": "Page number (1-indexed)",
            "in": "query",
            "name": "page",
            "required": false,
            "schema": {
              "default": 1,
              "type": "integer"
            }
          },
          {
            "description": "Number of items per page (1-100, default 10)",
            "in": "query",
            "name": "size",
            "required": false,
            "schema": {
              "default": 10,
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/PaginatedResponseValidationCaseDto"
                }
              }
            },
            "description": "OK"
          }
        },
        "summary": "List validation cases",
        "tags": [
          "Public"
        ]
      }
    },
    "/api/v1/workspaces/{workspaceId}/projects/{projectId}/validation-cases/generate": {
      "post": {
        "operationId": "publicTriggerValidationCaseGeneration",
        "parameters": [
          {
            "in": "path",
            "name": "projectId",
            "required": true,
            "schema": {
              "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"
            }
          },
          {
            "in": "path",
            "name": "workspaceId",
            "required": true,
            "schema": {
              "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"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ValidationCaseGenerationTriggerDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "202": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/GenerationTriggerDto"
                }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Trigger validation case generation",
        "tags": [
          "Public"
        ]
      }
    },
    "/api/v1/workspaces/{workspaceId}/projects/{projectId}/validation-cases/generate/status/{workflowId}": {
      "get": {
        "operationId": "publicGetValidationCaseGenerationStatus",
        "parameters": [
          {
            "in": "path",
            "name": "projectId",
            "required": true,
            "schema": {
              "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"
            }
          },
          {
            "in": "path",
            "name": "workflowId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "workspaceId",
            "required": true,
            "schema": {
              "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"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationCaseGenerationStatusDto"
                }
              }
            },
            "description": "OK"
          }
        },
        "summary": "Get validation case generation status",
        "tags": [
          "Public"
        ]
      }
    }
  }
}
