diff --git a/.gitignore b/.gitignore index e0d6d38..d2c6591 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,7 @@ notes.txt dist/ src/version.ts +src/api.ts node_modules/ .idea octomind.config.json diff --git a/package.json b/package.json index 84ef90c..f094c1b 100644 --- a/package.json +++ b/package.json @@ -11,12 +11,12 @@ "octomind": "./dist/index.js" }, "scripts": { - "lint": "npx genversion -des src/version.ts && eslint src/**/*.ts tests/**/*.ts --max-warnings=0", + "lint": "pnpm apigen &&npx genversion -des src/version.ts && eslint src/**/*.ts tests/**/*.ts --max-warnings=0", "apigen": "openapi-typescript ./openapi.yaml --output src/api.ts", - "build": "npx genversion -des src/version.ts && pnpm apigen && tsc --project tsconfig.build.json", - "octomind": "tsx src/index.ts", + "build": "pnpm apigen && npx genversion -des src/version.ts && tsc --project tsconfig.build.json", + "octomind": "pnpm apigen && tsx src/index.ts", "test": "pnpm apigen && npx genversion -des src/version.ts && jest", - "test:watch": "npx genversion -e src/version.ts && jest --watch" + "test:watch": "pnpm apigen && npx genversion -e src/version.ts && jest --watch" }, "keywords": [], "author": "", @@ -46,4 +46,4 @@ "tsx": "^4.19.3", "typescript": "^5.0.4" } -} \ No newline at end of file +} diff --git a/src/api.ts b/src/api.ts deleted file mode 100644 index e3b59fa..0000000 --- a/src/api.ts +++ /dev/null @@ -1,2320 +0,0 @@ -/** - * This file was auto-generated by openapi-typescript. - * Do not make direct changes to the file. - */ - -export interface paths { - "/apiKey/v2/test-targets": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - /** - * Retrieve all test targets - * @description Gets a list of test targets. - */ - get: operations["getTestTargets"]; - put?: never; - /** - * Create a new test target - * @description Creates a new test target. - */ - post: operations["createTestTarget"]; - delete?: never; - options?: never; - head?: never; - patch?: never; - trace?: never; - }; - "/apiKey/v2/test-targets/{testTargetId}": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - /** - * Retrieve a test target - * @description Gets a test target by ID. - */ - get: operations["getTestTarget"]; - put?: never; - post?: never; - /** - * Delete a test target - * @description Deletes a test target by ID. - */ - delete: operations["deleteTestTarget"]; - options?: never; - head?: never; - /** - * Update a test target - * @description Updates a test target by ID. - */ - patch: operations["updateTestTarget"]; - trace?: never; - }; - "/apiKey/v2/execute": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - get?: never; - put?: never; - /** - * Execute tests of the given test target - * @description This endpoint triggers a test execution by sending an test target id, an URL and optionally tags, an environment and variables. - * - */ - post: operations["executeTests"]; - delete?: never; - options?: never; - head?: never; - patch?: never; - trace?: never; - }; - "/apiKey/v2/test-targets/{testTargetId}/config": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - /** - * Retrieve test target configuration - * @description Get the test target configuration for a specific environment - */ - get: operations["getTestTargetConfig"]; - put?: never; - post?: never; - delete?: never; - options?: never; - head?: never; - patch?: never; - trace?: never; - }; - "/apiKey/v2/test-targets/{testTargetId}/environments": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - /** - * Retrieve environments - * @description get a list of all defined environments. - */ - get: operations["getEnvironments"]; - put?: never; - /** - * Create an environment - * @description Create a custom environment. - */ - post: operations["createEnvironment"]; - delete?: never; - options?: never; - head?: never; - patch?: never; - trace?: never; - }; - "/apiKey/v2/test-targets/{testTargetId}/environments/{environmentId}": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - get?: never; - put?: never; - post?: never; - /** - * Delete an environment - * @description deletes an enviroment. this operation is not reversable. - */ - delete: operations["deleteEnvironment"]; - options?: never; - head?: never; - /** - * Update an environment - * @description Updates an enviroment, all properties can be set separately - */ - patch: operations["updateEnvironment"]; - trace?: never; - }; - "/apiKey/v2/test-targets/{testTargetId}/test-reports/{testReportId}": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - /** - * Retrieve information about a test report - * @description Poll from within a CI-pipeline to wait for the completion of a report. - */ - get: operations["getTestReport"]; - put?: never; - post?: never; - delete?: never; - options?: never; - head?: never; - patch?: never; - trace?: never; - }; - "/apiKey/v2/test-targets/{testTargetId}/test-reports": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - /** - * Retrieve paginated information about test reports - * @description Allow fetching the history of test reports for your test target. - */ - get: operations["getTestReports"]; - put?: never; - post?: never; - delete?: never; - options?: never; - head?: never; - patch?: never; - trace?: never; - }; - "/apiKey/v2/test-targets/{testTargetId}/notifications": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - /** - * Retrieve notifications - * @description Get a list of notifications for a specific test target. - */ - get: operations["getNotifications"]; - put?: never; - post?: never; - delete?: never; - options?: never; - head?: never; - patch?: never; - trace?: never; - }; - "/apiKey/v1/private-location": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - /** - * Retrieve all private locations - * @description gets a list of private location workers - */ - get: operations["getPrivateLocations"]; - put?: never; - post?: never; - delete?: never; - options?: never; - head?: never; - patch?: never; - trace?: never; - }; - "/apiKey/v1/private-location/register": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - get?: never; - /** - * Register a private location - * @description registers a private location worker - */ - put: operations["registerPrivateLocation"]; - post?: never; - delete?: never; - options?: never; - head?: never; - patch?: never; - trace?: never; - }; - "/apiKey/v1/private-location/unregister": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - get?: never; - /** - * Unregister a private location - * @description Unregisters a private location worker. - */ - put: operations["unregisterPrivateLocation"]; - post?: never; - delete?: never; - options?: never; - head?: never; - patch?: never; - trace?: never; - }; - "/apiKey/v2/test-targets/{testTargetId}/test-cases": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - /** - * List test cases - * @description Get a list of test cases for a specific test target with optional filtering - */ - get: operations["getTestCases"]; - put?: never; - post?: never; - delete?: never; - options?: never; - head?: never; - patch?: never; - trace?: never; - }; - "/apiKey/v2/test-targets/{testTargetId}/test-cases/{testCaseId}": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - /** - * Retrieve a test case - * @description Get detailed information about a specific test case - */ - get: operations["getTestCase"]; - put?: never; - post?: never; - delete?: never; - options?: never; - head?: never; - patch?: never; - trace?: never; - }; - "/apiKey/v2/test-targets/{testTargetId}/test-cases/{testCaseId}/code": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - /** - * Retrieve code for a test case - * @description Get the code representation of a specific test case - */ - get: operations["getTestCaseCode"]; - put?: never; - post?: never; - delete?: never; - options?: never; - head?: never; - /** - * Update a test case - * @description Update specific properties of a test case - */ - patch: operations["patchTestCase"]; - trace?: never; - }; - "/apiKey/v2/test-targets/{testTargetId}/discoveries": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - get?: never; - put?: never; - /** - * Create a discovery - * @description Create a new test case discovery with a given name and prompt - */ - post: operations["createDiscovery"]; - delete?: never; - options?: never; - head?: never; - patch?: never; - trace?: never; - }; -} -export type webhooks = Record; -export interface components { - schemas: { - TestCaseElement: { - /** Format: uuid */ - id?: string; - index?: number; - interaction?: { - /** Format: uuid */ - id?: string; - /** @enum {string} */ - action?: "EXTRACT" | "ENTER_TEXT" | "CLICK" | "SELECT_OPTION" | "TYPE_TEXT" | "KEY_PRESS" | "HOVER" | "UPLOAD" | "GO_TO" | "DRAG_AND_DROP" | "CLOSE_PAGE" | "OPEN_EMAIL"; - calledWith?: string | null; - /** Format: uuid */ - testCaseElementId?: string; - } | null; - assertion?: { - /** Format: uuid */ - id?: string; - /** @enum {string} */ - expectation?: "VISIBLE" | "NOT_VISIBLE" | "TO_BE_CHECKED" | "NOT_TO_BE_CHECKED" | "TO_HAVE_VALUE" | "TO_CONTAIN_TEXT" | "TO_HAVE_STYLE"; - calledWith?: string | null; - /** Format: uuid */ - testCaseElementId?: string; - } | null; - selectors?: { - /** Format: uuid */ - id?: string; - index?: number; - selector?: string; - /** @enum {string} */ - selectorType?: "TEXT" | "LABEL" | "PLACEHOLDER" | "ROLE"; - options?: Record | null; - /** Format: uuid */ - testCaseElementId?: string; - }[]; - /** Format: uuid */ - testCaseId?: string; - ignoreFailure?: boolean; - }; - ExecutionContext: { - /** - * @example github - * @enum {string} - */ - source?: "github"; - /** @example 123 */ - issueNumber?: number | null; - /** @example refs/heads/main */ - ref?: string | null; - /** @example abc123def456 */ - sha?: string | null; - /** @example my-repo */ - repo?: string; - /** @example repo-owner */ - owner?: string; - triggeredBy?: { - /** - * @example USER - * @enum {string} - */ - type?: "USER"; - /** @example user123 */ - userId?: string; - } | null; - /** @example node-123 */ - nodeId?: string | null; - } | { - /** - * @example azureDevOps - * @enum {string} - */ - source?: "azureDevOps"; - /** @example token123 */ - accessToken?: string; - /** @example my-org */ - organization?: string; - /** @example my-project */ - project?: string; - /** @example repo-123 */ - repositoryId?: string; - /** @example abc123def456 */ - sha?: string | null; - /** @example refs/heads/main */ - ref?: string | null; - /** @example 101 */ - pullRequestId?: number | null; - triggeredBy?: { - /** - * @example USER - * @enum {string} - */ - type?: "USER"; - /** @example user123 */ - userId?: string; - } | null; - /** @example thread-123 */ - threadId?: string | null; - } | { - /** - * @example discovery - * @enum {string} - */ - source?: "discovery"; - /** @example A discovery test */ - description?: string; - triggeredBy?: { - /** - * @example INITIAL - * @enum {string} - */ - type?: "INITIAL"; - } | { - /** - * @example USER - * @enum {string} - */ - type?: "USER"; - /** @example user123 */ - userId?: string; - }; - } | { - /** - * @example manual - * @enum {string} - */ - source?: "manual"; - /** @example A manual trigger */ - description?: string; - triggeredBy?: { - /** - * @example USER - * @enum {string} - */ - type?: "USER"; - /** @example user123 */ - userId?: string; - }; - } | { - /** - * @example scheduled - * @enum {string} - */ - source?: "scheduled"; - triggeredBy?: { - /** - * @example USER - * @enum {string} - */ - type?: "USER"; - /** @example user123 */ - userId?: string; - } | null; - } | { - /** - * @example proposal - * @enum {string} - */ - source?: "proposal"; - /** @example A proposal trigger */ - description?: string; - triggeredBy?: { - /** - * @example INITIAL - * @enum {string} - */ - type?: "INITIAL"; - } | { - /** - * @example USER - * @enum {string} - */ - type?: "USER"; - /** @example user123 */ - userId?: string; - }; - }; - /** - * @description The variables to overwrite exclusively for this test run. - * @example { - * "SPACE_ID": [ - * "64ee32b4-7365-47a6-b5b0-2903b6ad849d" - * ] - * } - */ - Variables: { - [key: string]: string[]; - }; - TestTargetExecutionRequest: { - /** - * Format: uuid - * @description Unique identifier for the testTarget. - * @example 2e2bb27b-a19c-47ce-a9b6-cd1bd31622dc - */ - testTargetId: string; - /** - * Format: uri - * @description The URL of the test target for this run. - * @example https://example.com - */ - url: string; - context: components["schemas"]["ExecutionContext"]; - /** - * Format: environment name - * @description the environment name you want to run your test against - * @default default - */ - environmentName: string; - variablesToOverwrite?: components["schemas"]["Variables"]; - /** - * @default [] - * @example [ - * "tag1", - * "tag2" - * ] - */ - tags: string[]; - }; - TestReportContext: { - /** - * @description The source of the test trigger. - * @example manual - * @enum {string} - */ - source?: "github" | "azureDevOps" | "discovery" | "manual" | "scheduled" | "proposal"; - /** - * @description The description of the test context. - * @example manual trigger - */ - description?: string; - triggeredBy?: { - /** - * @description The type of entity triggering the test. - * @example USER - * @enum {string} - */ - type?: "USER"; - /** - * Format: uuid - * @description The unique identifier of the user who triggered the test. - * @example 2e2bb27b-a19c-47ce-a9b6-cd1bd31622dc - */ - userId?: string; - }; - }; - TestResult: { - /** - * Format: uuid - * @description Unique identifier for the test result. - * @example 826c15af-644b-4b28-89b4-f50ff34e46b7 - */ - id?: string; - /** - * Format: uuid - * @description Unique identifier of the test report this result belongs to. - * @example 3435918b-3d29-4ebd-8c68-9a540532f45a - */ - testTargetId?: string; - /** - * Format: uuid - * @description Unique identifier of the test case this result belongs to. - * @example 5b844cf1-d597-4048-9e74-7c0f9ce3e2ee - */ - testCaseId?: string; - /** - * Format: date-time - * @description The timestamp when the test result was created. - * @example 2024-09-06T13:01:51.686Z - */ - createdAt?: string; - /** - * Format: date-time - * @description The timestamp when the test result was last updated. - * @example 2024-09-06T13:01:51.686Z - */ - updatedAt?: string; - /** - * @description The status of the specific test result, will be WAITING as long as the result is running, FAILED if the execution failed, PASSED if it succeeded, and ERROR if an internal error occurred. - * @enum {string} - */ - status?: "WAITING" | "PASSED" | "FAILED" | "ERROR"; - /** - * @description The error that has occurred during execution - only set if the status is FAILED or ERROR. - * @example TimeoutError: locator.click: Timeout 30000ms exceeded. - */ - errorMessage?: string | null; - /** - * @description Link to the playwright trace of the test execution - only set once the test result is finished (PASSED or FAILED). - * @example https://storage.googleapis.com/automagically-traces/826c15af-644b-4b28-89b4-f50ff34e46b7-trace.zip - */ - traceUrl?: string | null; - }; - TestReport: { - /** - * Format: uuid - * @description Unique identifier for the test report. - * @example 826c15af-644b-4b28-89b4-f50ff34e46b7 - */ - id?: string; - /** - * Format: uuid - * @description The unique identifier of the test target. - * @example 3435918b-3d29-4ebd-8c68-9a540532f45a - */ - testTargetId?: string; - /** - * Format: date-time - * @description The timestamp when the test report was created. - * @example 2024-09-06T13:01:51.686Z - */ - createdAt?: string; - /** - * Format: date-time - * @description The timestamp when the test report was last updated. - * @example 2024-09-06T13:01:51.686Z - */ - updatedAt?: string; - /** - * Format: uri - * @description The URL where the test execution was performed. - * @example https://en.wikipedia.org/ - */ - executionUrl?: string; - /** - * @description The status of the test report, will be WAITING as long as any result is running, FAILED if the report is done but has any failed result and PASSED if all test results are done and successful - * @enum {string} - */ - status?: "WAITING" | "PASSED" | "FAILED"; - context?: components["schemas"]["TestReportContext"]; - testResults?: components["schemas"]["TestResult"][]; - }; - PrivateLocationInfo: { - /** @enum {string} */ - status: "OFFLINE" | "ONLINE"; - /** - * Format: uri - * @example https://example.com:3128 - */ - address: string; - /** @example my-private-location */ - name: string; - }[]; - TestExecutionResponse: { - /** - * Format: uri - * @description The URL where the test report can be accessed. - * @example https://app.octomind.dev/testreports/826c15af-644b-4b28-89b4-f50ff34e46b7 - */ - testReportUrl?: string; - testReport?: components["schemas"]["TestReport"]; - }; - TestCasesResponse: components["schemas"]["TestCaseResponse"][]; - TestCaseResponse: { - /** Format: uuid */ - id: string; - /** Format: uuid */ - testTargetId: string; - type?: string | null; - elements?: { - /** Format: uuid */ - id?: string; - index?: number; - interaction?: { - /** Format: uuid */ - id?: string; - /** @enum {string} */ - action?: "EXTRACT" | "ENTER_TEXT" | "CLICK" | "SELECT_OPTION" | "TYPE_TEXT" | "KEY_PRESS" | "HOVER" | "UPLOAD" | "GO_TO" | "DRAG_AND_DROP" | "CLOSE_PAGE" | "OPEN_EMAIL"; - calledWith?: string | null; - /** Format: uuid */ - testCaseElementId?: string; - } | null; - assertion?: { - /** Format: uuid */ - id?: string; - /** @enum {string} */ - expectation?: "VISIBLE" | "NOT_VISIBLE" | "TO_BE_CHECKED" | "NOT_TO_BE_CHECKED" | "TO_HAVE_VALUE" | "TO_CONTAIN_TEXT" | "TO_HAVE_STYLE"; - calledWith?: string | null; - /** Format: uuid */ - testCaseElementId?: string; - } | null; - scrollState?: Record | null; - selectors?: { - /** Format: uuid */ - id?: string; - index?: number; - selector?: string; - /** @enum {string} */ - selectorType?: "TEXT" | "LABEL" | "PLACEHOLDER" | "ROLE"; - options?: { - name?: string; - } | null; - /** Format: uuid */ - testCaseElementId?: string; - scrollStateId?: string | null; - }[]; - /** Format: uuid */ - testCaseId?: string; - ignoreFailure?: boolean; - }[]; - /** Format: date-time */ - createdAt?: string; - /** Format: date-time */ - updatedAt?: string; - description?: string; - /** @enum {string} */ - status?: "ENABLED" | "DRAFT"; - externalId?: string | null; - entryPointUrlPath?: string | null; - tags?: string[]; - /** @enum {string} */ - createdBy?: "EDIT"; - /** @enum {string} */ - runStatus?: "ON" | "OFF"; - prerequisiteId?: string | null; - proposalRunId?: string | null; - folderId?: string | null; - discovery?: { - /** Format: date-time */ - updatedAt?: string; - freePrompt?: string; - traceUrl?: string | null; - /** @enum {string} */ - status?: "CREATED" | "IN_PROGRESS" | "ERROR" | "SUCCESS" | "FAILED" | "INCOMPLETE" | "QUEUED" | "STOPPED" | "OUTDATED" | "PAUSED"; - abortCause?: string | null; - message?: string | null; - } | null; - }; - SuccessResponse: { - /** - * @description Indicates whether the operation was successful. - * @example true - */ - success?: boolean; - }; - UnregisterRequest: { - name?: string; - }; - RegisterRequest: { - name?: string; - registrationData?: { - /** @example secret22 */ - proxypass?: string; - /** @example user */ - proxyuser?: string; - /** - * @description the address of the remote endpoint. IP and port - * @example 34.45.23.22:23455 - */ - address?: string; - }; - }; - EnvironmentsResponse: components["schemas"]["EnvironmentResponse"][]; - EnvironmentSimpleResponse: { - /** Format: uuid */ - id?: string; - /** - * @example DEFAULT - * @enum {string} - */ - type?: "DEFAULT" | "ADDITIONAL"; - /** - * Format: url - * @example https://example.com - */ - discoveryUrl?: string; - /** - * @description The 2FA email of the environment to test email flows. - * @example user@example.com - */ - email?: string; - }; - EnvironmentResponse: { - /** Format: uuid */ - id: string; - /** - * @example DEFAULT - * @enum {string} - */ - name: "DEFAULT" | "ADDITIONAL"; - /** Format: uuid */ - testTargetId: string; - /** Format: date-time */ - updatedAt?: string; - /** - * @example DEFAULT - * @enum {string} - */ - type: "DEFAULT" | "ADDITIONAL"; - /** Format: url */ - discoveryUrl?: string; - additionalHeaderFields?: { - [key: string]: string; - } | null; - testAccount?: { - username?: string; - password?: string; - otpInitializerKey?: string | null; - /** Format: date-time */ - updatedAt?: string; - } | null; - basicAuth?: { - username?: string; - password?: string; - /** Format: date-time */ - updatedAt?: string; - } | null; - privateLocation?: { - /** Format: uuid */ - id?: string; - name?: string; - status?: string; - type?: string; - }; - }; - TestSuiteRequestCommons: { - /** - * Format: uuid - * @description The test case to run before all test cases - */ - beforeAll?: string | null; - /** - * Format: uuid - * @description The test case to run after all test cases - */ - afterAll?: string | null; - /** - * Format: uuid - * @description The test case to run before each test case in the suite - */ - beforeEach?: string | null; - /** - * Format: uuid - * @description The test case to run after each test case in the suite - */ - afterEach?: string | null; - }; - TestSuitePatchRequest: { - /** - * @description The name of the test suite - * @example regression for chat - */ - name?: string | null; - /** - * @description The test cases to include in the suite - * @example [ - * "5b844cf1-d597-4048-9e74-7c0f9ce3e2ee" - * ] - */ - testCases?: string[] | null; - /** - * @description the environment name you want to run your test suite against - * @example default - */ - environmentName?: string | null; - } & components["schemas"]["TestSuiteRequestCommons"]; - TestSuiteCreateRequest: { - /** - * @description The name of the test suite - * @example regression for chat - */ - name?: string; - /** - * @description The test cases to include in the suite - * @example [ - * "5b844cf1-d597-4048-9e74-7c0f9ce3e2ee" - * ] - */ - testCases?: string[]; - /** - * @description the environment name you want to run your test suite against - * @example default - */ - environmentName?: string; - } & components["schemas"]["TestSuiteRequestCommons"]; - TestSuiteResponse: { - /** Format: uuid */ - id?: string; - } & components["schemas"]["TestSuiteCreateRequest"]; - TestSuitesResponse: components["schemas"]["TestSuiteResponse"][]; - CreateTestTargetBody: { - testTarget?: { - /** @description The app name or project name of the test target */ - app: string; - /** - * Format: uri - * @description The discovery URL of the test target. This is the URL that a discovery tool can use to discover the test target. - */ - discoveryUrl: string; - }; - }; - TestTargetsResponse: components["schemas"]["TestTargetResponse"][]; - TestTargetResponse: { - /** Format: uuid */ - id?: string; - /** @description The app name or project name of the test target */ - app?: string; - tags?: (string | null)[]; - /** @description The environments of the test target */ - environments?: components["schemas"]["EnvironmentSimpleResponse"][]; - }; - TestTargetUpdateRequest: { - /** @description The app name or project name of the test target */ - app?: string | null; - /** - * Format: uri - * @description The discovery URL of the test target - */ - discoveryUrl?: string | null; - /** - * @description The attribute name of the test ID - * @example test-automation-id - */ - testIdAttribute?: string | null; - testRailIntegration?: { - /** - * @description The domain of the TestRail instance - * @example https://mycompany.testrail.io - */ - domain?: string; - /** - * @description The username for the TestRail instance - * @example user - */ - username?: string; - /** - * @description The project ID for the TestRail instance - * @example 123 - */ - projectId?: string; - /** - * @description The TestRail API key for the TestRail instance - * @example 123123123 - */ - apiKey?: string; - } | null; - /** - * Format: int32 - * @description The timeout per step in milliseconds - */ - timeoutPerStep?: number; - }; - ZodResponse: { - /** - * @description What error code happened while parsing the request - * @example invalid_type - */ - code?: string; - /** - * @description What the expected type was - * @example object - */ - expected?: string; - /** - * @description What the actual passed type was - * @example string - */ - received?: string; - path?: string[]; - /** - * @description Human-readable message of the error that occurred while parsing. - * @example Expected object, received string - */ - message?: string; - }[]; - Notification: { - /** - * Format: uuid - * @description Unique identifier for the event. - * @example 826c15af-644b-4b28-89b4-f50ff34e46b7 - */ - id: string; - /** - * Format: uuid - * @description The unique identifier of the test target this event belongs to. - * @example 3435918b-3d29-4ebd-8c68-9a540532f45a - */ - testTargetId: string; - /** - * Format: date-time - * @description The timestamp when the event was created. - * @example 2024-09-06T13:01:51.686Z - */ - createdAt: string; - /** - * Format: date-time - * @description The timestamp when the event was last updated. - * @example 2024-09-06T13:01:51.686Z - */ - updatedAt: string; - /** - * @description JSON payload containing event-specific data. - * @example { - * "testCaseId": "5deeef76-f37a-418b-8101-7d69529fa561" - * } - */ - payload: Record; - /** - * @description The type of event that occurred. - * @example VALIDATION_PASSED - * @enum {string} - */ - type: "VALIDATION_PASSED" | "VALIDATION_FAILED" | "DISCOVERY_FINISHED" | "PROPOSAL_SUCCESS" | "PROPOSAL_FAILED" | "REPORT_EXECUTION_FINISHED"; - /** - * @description Optional acknowledgment status of the event. - * @example IN_WEB_APP - * @enum {string|null} - */ - ack?: "IN_WEB_APP" | null; - }; - ExternalDiscoveryBody: { - /** - * @description Name of the discovered test case - * @example Login Form Validation Test - */ - name: string; - /** - * @description Entry point URL path of the discovered test case - * @example /login - */ - entryPointUrlPath?: string; - /** - * @description Prerequisite test case name - * @example Cookie Banner Acceptance - */ - prerequisiteName?: string; - /** - * @description External ID of the discovered test case - * @example ext-test-001 - */ - externalId?: string; - /** - * @description Tags to assign to the discovered test case - * @example [ - * "authentication", - * "forms", - * "validation" - * ] - */ - tagNames?: string[]; - /** - * @description Prompt to generate the discovered test case - * @example Test the login form with valid and invalid credentials - */ - prompt: string; - /** - * @description Folder name of the discovered test case - * @example Authentication Tests - */ - folderName?: string; - /** - * @description Type of the discovered test case - * @example LOGIN - * @enum {string} - */ - type?: "LOGIN" | "COOKIE_BANNER"; - }; - DiscoveryResponse: { - /** Format: uuid */ - discoveryId?: string; - /** Format: uuid */ - testCaseId?: string; - }; - }; - responses: never; - parameters: never; - requestBodies: never; - headers: never; - pathItems: never; -} -export type $defs = Record; -export interface operations { - getTestTargets: { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - requestBody?: never; - responses: { - /** @description OK */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["TestTargetsResponse"]; - }; - }; - /** @description Invalid or missing API key */ - 401: { - headers: { - [name: string]: unknown; - }; - content?: never; - }; - /** @description Internal server error */ - 500: { - headers: { - [name: string]: unknown; - }; - content?: never; - }; - }; - }; - createTestTarget: { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - requestBody: { - content: { - "application/json": components["schemas"]["CreateTestTargetBody"]; - }; - }; - responses: { - /** @description OK */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["TestTargetResponse"][]; - }; - }; - /** @description Invalid request parameters */ - 400: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["ZodResponse"]; - }; - }; - /** @description Invalid or missing API key */ - 401: { - headers: { - [name: string]: unknown; - }; - content?: never; - }; - /** @description Internal server error */ - 500: { - headers: { - [name: string]: unknown; - }; - content?: never; - }; - }; - }; - getTestTarget: { - parameters: { - query?: never; - header?: never; - path: { - /** @description ID of the test target to fetch */ - testTargetId: string; - }; - cookie?: never; - }; - requestBody?: never; - responses: { - /** @description OK */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["TestTargetResponse"]; - }; - }; - /** @description Invalid request parameters */ - 400: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["ZodResponse"]; - }; - }; - /** @description Invalid or missing API key */ - 401: { - headers: { - [name: string]: unknown; - }; - content?: never; - }; - }; - }; - deleteTestTarget: { - parameters: { - query?: never; - header?: never; - path: { - /** @description ID of the test target to delete */ - testTargetId: string; - }; - cookie?: never; - }; - requestBody?: never; - responses: { - /** @description OK */ - 204: { - headers: { - [name: string]: unknown; - }; - content?: never; - }; - /** @description Invalid or missing API key */ - 401: { - headers: { - [name: string]: unknown; - }; - content?: never; - }; - /** @description Test target not found */ - 404: { - headers: { - [name: string]: unknown; - }; - content?: never; - }; - /** @description Internal server error */ - 500: { - headers: { - [name: string]: unknown; - }; - content?: never; - }; - }; - }; - updateTestTarget: { - parameters: { - query?: never; - header?: never; - path: { - /** @description ID of the test target to update */ - testTargetId: string; - }; - cookie?: never; - }; - requestBody: { - content: { - "application/json": components["schemas"]["TestTargetUpdateRequest"]; - }; - }; - responses: { - /** @description OK */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["TestTargetResponse"]; - }; - }; - /** @description Invalid request parameters */ - 400: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["ZodResponse"]; - }; - }; - /** @description Invalid or missing API key */ - 401: { - headers: { - [name: string]: unknown; - }; - content?: never; - }; - /** @description Internal server error */ - 500: { - headers: { - [name: string]: unknown; - }; - content?: never; - }; - }; - }; - executeTests: { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - requestBody: { - content: { - "application/json": components["schemas"]["TestTargetExecutionRequest"]; - }; - }; - responses: { - /** @description Test executed successfully */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["TestExecutionResponse"]; - }; - }; - /** @description Invalid request parameters */ - 400: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["ZodResponse"]; - }; - }; - /** @description Invalid or missing API key */ - 401: { - headers: { - [name: string]: unknown; - }; - content?: never; - }; - /** @description Internal server error */ - 500: { - headers: { - [name: string]: unknown; - }; - content?: never; - }; - }; - }; - getTestTargetConfig: { - parameters: { - query: { - /** @description The execution URL for the test target */ - url: string; - /** @description The directory where test output will be stored */ - outputDir: string; - /** @description Whether to run tests in headless mode (true/false) */ - headless?: string; - /** @description Optional ID of the environment to use (defaults to the test target's default environment if not provided) */ - environmentId?: string; - }; - header?: never; - path: { - /** @description The ID of the test target */ - testTargetId: string; - }; - cookie?: never; - }; - requestBody?: never; - responses: { - /** @description Test target configuration retrieved successfully */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "text/plain": string; - }; - }; - /** @description Invalid request parameters */ - 400: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["ZodResponse"]; - }; - }; - /** @description Unauthorized - Invalid or missing API key */ - 401: { - headers: { - [name: string]: unknown; - }; - content?: never; - }; - /** @description Environment not found */ - 404: { - headers: { - [name: string]: unknown; - }; - content?: never; - }; - /** @description Method not allowed */ - 405: { - headers: { - [name: string]: unknown; - }; - content?: never; - }; - }; - }; - getEnvironments: { - parameters: { - query?: never; - header?: never; - path: { - /** @description ID of the test target to which the test report belongs to */ - testTargetId: string; - }; - cookie?: never; - }; - requestBody?: never; - responses: { - /** @description environments */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["EnvironmentsResponse"]; - }; - }; - }; - }; - createEnvironment: { - parameters: { - query?: never; - header?: never; - path: { - /** @description ID of the test target to which the environment belongs to */ - testTargetId: string; - }; - cookie?: never; - }; - requestBody: { - content: { - "application/json": { - name?: string; - /** Format: url */ - discoveryUrl?: string; - testAccount?: { - username?: string; - password?: string; - otpInitializerKey?: string | null; - } | null; - basicAuth?: { - username?: string; - password?: string; - } | null; - /** @description name of the private location */ - privateLocationName?: string; - additionalHeaderFields?: { - [key: string]: string; - } | null; - }; - }; - }; - responses: { - /** @description environment created */ - 201: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["EnvironmentResponse"]; - }; - }; - /** @description Invalid request parameters */ - 400: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["ZodResponse"]; - }; - }; - /** @description Invalid or missing API key */ - 401: { - headers: { - [name: string]: unknown; - }; - content?: never; - }; - }; - }; - deleteEnvironment: { - parameters: { - query?: never; - header?: never; - path: { - /** @description ID of the test target to which the test report belongs to */ - testTargetId: string; - /** @description ID of the environment to update */ - environmentId: string; - }; - cookie?: never; - }; - requestBody?: never; - responses: { - /** @description Environment deleted successfully */ - 200: { - headers: { - [name: string]: unknown; - }; - content?: never; - }; - }; - }; - updateEnvironment: { - parameters: { - query?: never; - header?: never; - path: { - /** @description ID of the test target to which the environment belongs to */ - testTargetId: string; - /** @description ID of the environment to update */ - environmentId: string; - }; - cookie?: never; - }; - requestBody: { - content: { - "application/json": { - name?: string | null; - /** Format: url */ - discoveryUrl?: string | null; - testAccount?: { - username?: string; - password?: string; - otpInitializerKey?: string | null; - } | null; - basicAuth?: { - username?: string; - password?: string; - } | null; - /** @description name of the private location */ - privateLocationName?: string | null; - additionalHeaderFields?: { - [key: string]: string; - } | null; - }; - }; - }; - responses: { - /** @description Environment updated successfully */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["EnvironmentResponse"]; - }; - }; - }; - }; - getTestReport: { - parameters: { - query?: never; - header?: never; - path: { - /** @description ID of the test target to which the test report belongs to */ - testTargetId: string; - /** @description ID of the test report to fetch */ - testReportId: string; - }; - cookie?: never; - }; - requestBody?: never; - responses: { - /** @description Test Report information */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - /** @example { - * "id": "826c15af-644b-4b28-89b4-f50ff34e46b7", - * "testTargetId": "3435918b-3d29-4ebd-8c68-9a540532f45a", - * "createdAt": "2024-09-06T13:01:51.686Z", - * "updatedAt": "2024-09-06T13:05:23.412Z", - * "executionUrl": "https://en.wikipedia.org/", - * "status": "FAILED", - * "context": { - * "source": "github", - * "issueNumber": 123, - * "ref": "refs/heads/main", - * "sha": "abc123def456", - * "repo": "my-repo", - * "owner": "repo-owner", - * "triggeredBy": { - * "type": "USER", - * "userId": "3435918b-3d29-4ebd-8c68-9a540532f45a" - * }, - * "nodeId": "node-123" - * }, - * "testResults": [ - * { - * "id": "9876fedc-ba98-7654-3210-fedcba987654", - * "testCaseId": "9876fedc-ba98-7654-3210-fedcba987654", - * "testTargetId": "3435918b-3d29-4ebd-8c68-9a540532f45a", - * "testReportId": "826c15af-644b-4b28-89b4-f50ff34e46b7", - * "name": "User can search for information", - * "createdAt": "2024-09-06T13:01:51.686Z", - * "updatedAt": "2024-09-06T13:03:12.345Z", - * "status": "PASSED", - * "errorMessage": null, - * "traceUrl": "https://storage.googleapis.com/automagically-traces/7a1b2c3d-4e5f-6g7h-8i9j-0k1l2m3n4o5p-trace.zip" - * }, - * { - * "id": "3435918b-3d29-4ebd-8c68-9a540532f45a", - * "testCaseId": "5432fedc-ba98-7654-3210-fedcba543210", - * "testTargetId": "3435918b-3d29-4ebd-8c68-9a540532f45a", - * "testReportId": "826c15af-644b-4b28-89b4-f50ff34e46b7", - * "name": "User can navigate to article", - * "createdAt": "2024-09-06T13:01:51.686Z", - * "updatedAt": "2024-09-06T13:04:45.678Z", - * "status": "FAILED", - * "errorMessage": "TimeoutError: locator.click: Timeout 30000ms exceeded.", - * "traceUrl": "https://storage.googleapis.com/automagically-traces/2a3b4c5d-6e7f-8g9h-0i1j-2k3l4m5n6o7p-trace.zip" - * }, - * { - * "id": "3435918b-3d29-4ebd-8c68-9a540532f45a", - * "testCaseId": "1234abcd-ef56-7890-abcd-ef1234567890", - * "testTargetId": "3435918b-3d29-4ebd-8c68-9a540532f45a", - * "testReportId": "826c15af-644b-4b28-89b4-f50ff34e46b7", - * "name": "User can create an account", - * "createdAt": "2024-09-06T13:01:51.686Z", - * "updatedAt": "2024-09-06T13:05:23.412Z", - * "status": "WAITING", - * "errorMessage": null, - * "traceUrl": null - * } - * ] - * } */ - "application/json": components["schemas"]["TestReport"]; - }; - }; - /** @description Invalid request parameters */ - 400: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["ZodResponse"]; - }; - }; - /** @description Invalid or missing API key */ - 401: { - headers: { - [name: string]: unknown; - }; - content?: never; - }; - /** @description Internal server error */ - 500: { - headers: { - [name: string]: unknown; - }; - content?: never; - }; - }; - }; - getTestReports: { - parameters: { - query?: { - key?: { - /** - * Format: date-time - * @description The timestamp of the key of the next page to fetch - See [Keyset Pagination](https://use-the-index-luke.com/no-offset) - * @example 2024-09-06T13:01:51.686Z - */ - createdAt?: string; - }; - filter?: { - /** - * @description The name of the property to filter for, e.g. an environmentId - * @example environmentId - */ - key?: string; - /** - * @description How to compare the property in question, only EQUALS is supported so far. - * @enum {string} - */ - operator?: "EQUALS"; - /** - * Format: uuid - * @description The value to compare with to find matches. - * @example 3435918b-3d29-4ebd-8c68-9a540532f45a - */ - value?: string; - }[]; - }; - header?: never; - path: { - /** @description ID of the test target for which to fetch the history for */ - testTargetId: string; - }; - cookie?: never; - }; - requestBody?: never; - responses: { - /** @description Test Reports information */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": { - data?: components["schemas"]["TestReport"][]; - key?: { - /** - * Format: date-time - * @description The timestamp of the key of the next page to fetch - use this in the query when fetching the next page of reports - See [Keyset Pagination](https://use-the-index-luke.com/no-offset) - * @example 2024-09-06T13:01:51.686Z - */ - createdAt?: string; - }; - /** @description If the query in question has another page to retrieve */ - hasNextPage?: boolean; - }; - }; - }; - /** @description Invalid request parameters */ - 400: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["ZodResponse"]; - }; - }; - /** @description Invalid or missing API key */ - 401: { - headers: { - [name: string]: unknown; - }; - content?: never; - }; - /** @description Internal server error */ - 500: { - headers: { - [name: string]: unknown; - }; - content?: never; - }; - }; - }; - getNotifications: { - parameters: { - query?: never; - header?: never; - path: { - /** @description The ID of the test target */ - testTargetId: string; - }; - cookie?: never; - }; - requestBody?: never; - responses: { - /** @description List of notifications */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": { - /** Format: uuid */ - id?: string; - /** Format: uuid */ - testTargetId?: string; - /** Format: date-time */ - createdAt?: string; - /** Format: date-time */ - updatedAt?: string; - payload?: { - failed?: boolean; - context?: components["schemas"]["ExecutionContext"]; - /** Format: uuid */ - testReportId?: string; - /** Format: uuid */ - testCaseId?: string; - }; - /** @enum {string} */ - type?: "REPORT_EXECUTION_FINISHED" | "VALIDATION_PASSED"; - /** @enum {string|null} */ - ack?: "IN_WEB_APP" | null; - }[]; - }; - }; - /** @description Unauthorized - Invalid or missing API key */ - 401: { - headers: { - [name: string]: unknown; - }; - content?: never; - }; - /** @description Test target not found */ - 404: { - headers: { - [name: string]: unknown; - }; - content?: never; - }; - }; - }; - getPrivateLocations: { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - requestBody?: never; - responses: { - /** @description OK */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["PrivateLocationInfo"]; - }; - }; - }; - }; - registerPrivateLocation: { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - requestBody: { - content: { - "application/json": components["schemas"]["RegisterRequest"]; - }; - }; - responses: { - /** @description OK */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["SuccessResponse"]; - }; - }; - /** @description Invalid request parameters */ - 400: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["ZodResponse"]; - }; - }; - /** @description private location of that name not found */ - 404: { - headers: { - [name: string]: unknown; - }; - content?: never; - }; - /** @description Internal server error */ - 500: { - headers: { - [name: string]: unknown; - }; - content?: never; - }; - }; - }; - unregisterPrivateLocation: { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - requestBody: { - content: { - "application/json": components["schemas"]["UnregisterRequest"]; - }; - }; - responses: { - /** @description OK */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["SuccessResponse"]; - }; - }; - /** @description Invalid request parameters */ - 400: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["ZodResponse"]; - }; - }; - /** @description private location of that name not found */ - 404: { - headers: { - [name: string]: unknown; - }; - content?: never; - }; - /** @description Internal server error */ - 500: { - headers: { - [name: string]: unknown; - }; - content?: never; - }; - }; - }; - getTestCases: { - parameters: { - query?: { - /** - * @description JSON string containing filter criteria for test cases. The filter supports the following fields: - * - id: Filter by test case ID - * - testTargetId: Filter by test target ID - * - description: Filter by test case description - * - status: Filter by test case status (ENABLED, DISABLED, DRAFT, OUTDATED, PROVISIONAL) - * - runStatus: Filter by run status (ON, OFF) - * - folderId: Filter by folder ID - * - externalId: Filter by external ID - * - AND: Logical AND operator for combining multiple conditions - * - OR: Logical OR operator for combining multiple conditions - * - NOT: Logical NOT operator for negating conditions - * - * @example {"status":"ENABLED","folderId":"some-folder-id","OR":[{"description":"Login Test"},{"externalId":"TEST-123"}]} - */ - filter?: string; - }; - header?: never; - path: { - /** @description The ID of the test target */ - testTargetId: string; - }; - cookie?: never; - }; - requestBody?: never; - responses: { - /** @description List of test cases */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["TestCasesResponse"]; - }; - }; - /** @description Invalid request parameters */ - 400: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["ZodResponse"]; - }; - }; - /** @description Unauthorized - Invalid or missing API key */ - 401: { - headers: { - [name: string]: unknown; - }; - content?: never; - }; - /** @description Test target not found */ - 404: { - headers: { - [name: string]: unknown; - }; - content?: never; - }; - }; - }; - getTestCase: { - parameters: { - query?: never; - header?: never; - path: { - /** @description The ID of the test target */ - testTargetId: string; - /** @description The ID of the test case */ - testCaseId: string; - }; - cookie?: never; - }; - requestBody?: never; - responses: { - /** @description Test case details */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["TestCaseResponse"]; - }; - }; - /** @description Unauthorized - Invalid or missing API key */ - 401: { - headers: { - [name: string]: unknown; - }; - content?: never; - }; - /** @description Test target or test case not found */ - 404: { - headers: { - [name: string]: unknown; - }; - content?: never; - }; - }; - }; - getTestCaseCode: { - parameters: { - query: { - /** @description URL of the app to test */ - executionUrl: string; - /** @description Optional ID of the environment to use */ - environmentId?: string; - }; - header?: never; - path: { - /** @description The ID of the test target */ - testTargetId: string; - /** @description The ID of the test case */ - testCaseId: string; - }; - cookie?: never; - }; - requestBody?: never; - responses: { - /** @description Test case code retrieved successfully */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": { - /** @description The code representation of the test case */ - testCode: string; - }; - }; - }; - /** @description Invalid request parameters */ - 400: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["ZodResponse"]; - }; - }; - /** @description Unauthorized - Invalid or missing API key */ - 401: { - headers: { - [name: string]: unknown; - }; - content?: never; - }; - /** @description Test target, test case, or test code not found */ - 404: { - headers: { - [name: string]: unknown; - }; - content?: never; - }; - }; - }; - patchTestCase: { - parameters: { - query?: never; - header?: never; - path: { - /** @description The ID of the test target */ - testTargetId: string; - /** @description The ID of the test case to update */ - testCaseId: string; - }; - cookie?: never; - }; - requestBody: { - content: { - "application/json": { - elements?: components["schemas"]["TestCaseElement"][]; - description?: string; - entryPointUrlPath?: string | null; - /** @enum {string} */ - status?: "ENABLED" | "DISABLED" | "DRAFT" | "OUTDATED" | "PROVISIONAL"; - /** @enum {string} */ - runStatus?: "ON" | "OFF"; - folderName?: string | null; - /** @enum {string} */ - interactionStatus?: "NEW" | "EDITED" | "APPROVED" | "REJECTED"; - createBackendDiscoveryPrompt?: string; - assignedTagNames?: string[]; - externalId?: string | null; - }; - }; - }; - responses: { - /** @description Updated test case */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": { - /** Format: uuid */ - id?: string; - /** Format: uuid */ - testTargetId?: string; - description?: string; - /** @enum {string} */ - status?: "ENABLED" | "DISABLED" | "DRAFT" | "OUTDATED" | "PROVISIONAL"; - /** @enum {string} */ - runStatus?: "ON" | "OFF"; - /** Format: date-time */ - createdAt?: string; - /** Format: date-time */ - updatedAt?: string; - entryPointUrlPath?: string | null; - elements?: Record[]; - folderId?: string | null; - externalId?: string | null; - tags?: string[]; - }; - }; - }; - /** @description Invalid request parameters */ - 400: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["ZodResponse"]; - }; - }; - /** @description Unauthorized - Invalid or missing API key */ - 401: { - headers: { - [name: string]: unknown; - }; - content?: never; - }; - /** @description Test case, folder or tag not found */ - 404: { - headers: { - [name: string]: unknown; - }; - content?: never; - }; - }; - }; - createDiscovery: { - parameters: { - query?: never; - header?: never; - path: { - /** @description The ID of the test target */ - testTargetId: string; - }; - cookie?: never; - }; - requestBody: { - content: { - "application/json": { - /** - * @description A descriptive name for the discovery that clearly identifies its purpose. This will be displayed in the UI and used for reference. - * @example Login Flow Validation - */ - name: string; - /** - * @description Detailed instructions for what should be discovered and validated. Be specific about the functionality, conditions, or behaviors to test. - * @example Verify that users can successfully log in with valid credentials and see their dashboard. - */ - prompt: string; - /** - * @description The specific URL path where the test should begin execution. For example, '/login' for authentication tests or '/dashboard' for dashboard features. - * @example /login - */ - entryPointUrlPath?: string | null; - /** - * @description Name of another test case that must be executed before this discovery. The system will resolve this to the appropriate test case within the same test target. - * @example Login Test - */ - prerequisiteName?: string | null; - /** - * @description Custom identifier to link this discovery with external systems or tracking tools. Can be used for integration with issue trackers or test management systems. - * @example JIRA-1234 - */ - externalId?: string | null; - /** - * @description List of tags to categorize and organize the discovery. Tags help in filtering and grouping related test cases (e.g., 'authentication', 'critical-path', 'regression'). - * @example [ - * "authentication", - * "critical-path", - * "smoke-test" - * ] - */ - tagNames?: string[] | null; - /** - * @description Name of the organizational folder where this discovery should be stored. Helps in maintaining a structured test hierarchy (e.g., 'Authentication Tests', 'User Management'). - * @example Authentication Tests - */ - folderName?: string | null; - /** - * @description Type of the test case to discover (e.g., 'LOGIN', 'COOKIE_BANNER'). - * @example LOGIN - * @enum {string|null} - */ - type?: "LOGIN" | "COOKIE_BANNER" | null; - }; - }; - }; - responses: { - /** @description Discovery created successfully */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": { - /** - * Format: uuid - * @description The ID of the created discovery - */ - discoveryId: string; - /** - * Format: uuid - * @description The ID of the associated test case - */ - testCaseId: string; - }; - }; - }; - /** @description Invalid request parameters */ - 400: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["ZodResponse"]; - }; - }; - /** @description Unauthorized - Invalid or missing API key */ - 401: { - headers: { - [name: string]: unknown; - }; - content?: never; - }; - /** @description Test target not found */ - 404: { - headers: { - [name: string]: unknown; - }; - content?: never; - }; - /** @description Internal server error */ - 500: { - headers: { - [name: string]: unknown; - }; - content?: never; - }; - }; - }; -}