{
  "openapi": "3.1.0",
  "info": {
    "title": "Webapp API",
    "version": "1.0.0",
    "description": "Customer-facing JSON API for CI, automation, and external integration"
  },
  "paths": {
    "/api/v1/health": {
      "get": {
        "operationId": "apps_api_views_health_check",
        "summary": "Health Check",
        "parameters": [],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HealthResponse"
                }
              }
            }
          }
        },
        "description": "Health check endpoint.",
        "tags": [
          "System"
        ]
      }
    },
    "/api/v1/echo": {
      "post": {
        "operationId": "apps_api_views_echo_message",
        "summary": "Echo Message",
        "parameters": [],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EchoResponse"
                }
              }
            }
          }
        },
        "description": "Example endpoint demonstrating request/response schemas.",
        "tags": [
          "Examples"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EchoRequest"
              }
            }
          },
          "required": true
        }
      }
    },
    "/api/v1/api-keys/": {
      "post": {
        "operationId": "apps_api_views_create_api_key",
        "summary": "Create Api Key",
        "parameters": [],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreateAPIKeyResponse"
                }
              }
            }
          }
        },
        "description": "Create an API key for the authenticated user's organization.\n\nRequires Django session authentication (cookie-based login).\nReturns the plaintext key \u2014 it cannot be retrieved again.",
        "tags": [
          "Auth"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateAPIKeyRequest"
              }
            }
          },
          "required": true
        }
      }
    },
    "/api/v1/orgs/{org_slug}/repos/{repo_id}/jobs/upload": {
      "post": {
        "operationId": "apps_api_views_upload_job_run",
        "summary": "Upload Job Run",
        "parameters": [
          {
            "in": "path",
            "name": "org_slug",
            "schema": {
              "title": "Org Slug",
              "type": "string"
            },
            "required": true
          },
          {
            "in": "path",
            "name": "repo_id",
            "schema": {
              "title": "Repo Id",
              "type": "integer"
            },
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobUploadResponse"
                }
              }
            }
          }
        },
        "description": "Upload job run data.\n\nThis endpoint accepts structured job run data (not a file upload).\nTypically called from CI/CD pipelines or webhooks.",
        "tags": [
          "Jobs"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/JobUploadRequest"
              }
            }
          },
          "required": true
        },
        "security": [
          {
            "APIKeyAuth": []
          }
        ]
      }
    },
    "/api/v1/orgs/{org_slug}/repos/{repo_id}/jobs/": {
      "post": {
        "operationId": "apps_api_views_create_job_run",
        "summary": "Create Job Run",
        "parameters": [
          {
            "in": "path",
            "name": "org_slug",
            "schema": {
              "title": "Org Slug",
              "type": "string"
            },
            "required": true
          },
          {
            "in": "path",
            "name": "repo_id",
            "schema": {
              "title": "Repo Id",
              "type": "integer"
            },
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobUploadResponse"
                }
              }
            }
          }
        },
        "description": "Create a job run.\n\nCanonical endpoint for creating job runs. Accepts structured JSON data.",
        "tags": [
          "Jobs"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/JobUploadRequest"
              }
            }
          },
          "required": true
        },
        "security": [
          {
            "APIKeyAuth": []
          }
        ]
      }
    },
    "/api/v1/orgs/{org_slug}/repos/": {
      "get": {
        "operationId": "apps_api_views_list_repos",
        "summary": "List Repos",
        "parameters": [
          {
            "in": "path",
            "name": "org_slug",
            "schema": {
              "title": "Org Slug",
              "type": "string"
            },
            "required": true
          },
          {
            "in": "query",
            "name": "name",
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Name"
            },
            "required": false
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "$ref": "#/components/schemas/RepoLookupSchema"
                  },
                  "title": "Response",
                  "type": "array"
                }
              }
            }
          }
        },
        "description": "List repositories for an organization, with optional name filter.\n\nUsed by the CLI to resolve repository name to ID.\nMatches against the display name or provider_org/repo_name.",
        "tags": [
          "Repositories"
        ],
        "security": [
          {
            "APIKeyAuth": []
          }
        ]
      },
      "post": {
        "operationId": "apps_api_views_create_manual_repo",
        "summary": "Create Manual Repo",
        "parameters": [
          {
            "in": "path",
            "name": "org_slug",
            "schema": {
              "title": "Org Slug",
              "type": "string"
            },
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ManualRepoResponse"
                }
              }
            }
          }
        },
        "description": "Create a repository under the organization's manual provider.",
        "tags": [
          "Manual Provider"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ManualRepoCreateRequest"
              }
            }
          },
          "required": true
        },
        "security": [
          {
            "APIKeyAuth": []
          }
        ]
      }
    },
    "/api/v1/orgs/{org_slug}/repos/{repo_id}/branches/": {
      "get": {
        "operationId": "apps_api_views_list_branches",
        "summary": "List Branches",
        "parameters": [
          {
            "in": "path",
            "name": "org_slug",
            "schema": {
              "title": "Org Slug",
              "type": "string"
            },
            "required": true
          },
          {
            "in": "path",
            "name": "repo_id",
            "schema": {
              "title": "Repo Id",
              "type": "integer"
            },
            "required": true
          },
          {
            "in": "query",
            "name": "status",
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Status"
            },
            "required": false
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BranchListResponse"
                }
              }
            }
          }
        },
        "description": "List branches for a repository.\n\nOptionally filter by status (active, merged, deleted).",
        "tags": [
          "Branches"
        ],
        "security": [
          {
            "APIKeyAuth": []
          }
        ]
      }
    },
    "/api/v1/orgs/{org_slug}/repos/{repo_id}/branches/{branch_name}/": {
      "get": {
        "operationId": "apps_api_views_get_branch",
        "summary": "Get Branch",
        "parameters": [
          {
            "in": "path",
            "name": "org_slug",
            "schema": {
              "title": "Org Slug",
              "type": "string"
            },
            "required": true
          },
          {
            "in": "path",
            "name": "repo_id",
            "schema": {
              "title": "Repo Id",
              "type": "integer"
            },
            "required": true
          },
          {
            "in": "path",
            "name": "branch_name",
            "schema": {
              "title": "Branch Name",
              "type": "string"
            },
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BranchSchema"
                }
              }
            }
          }
        },
        "description": "Get details for a specific branch.",
        "tags": [
          "Branches"
        ],
        "security": [
          {
            "APIKeyAuth": []
          }
        ]
      },
      "put": {
        "operationId": "apps_api_views_upsert_manual_branch",
        "summary": "Upsert Manual Branch",
        "parameters": [
          {
            "in": "path",
            "name": "org_slug",
            "schema": {
              "title": "Org Slug",
              "type": "string"
            },
            "required": true
          },
          {
            "in": "path",
            "name": "repo_id",
            "schema": {
              "title": "Repo Id",
              "type": "integer"
            },
            "required": true
          },
          {
            "in": "path",
            "name": "branch_name",
            "schema": {
              "title": "Branch Name",
              "type": "string"
            },
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BranchSchema"
                }
              }
            }
          }
        },
        "description": "Create or update a branch for a manual provider repository.",
        "tags": [
          "Manual Provider"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BranchUpsertRequest"
              }
            }
          },
          "required": true
        },
        "security": [
          {
            "APIKeyAuth": []
          }
        ]
      },
      "delete": {
        "operationId": "apps_api_views_delete_manual_branch",
        "summary": "Delete Manual Branch",
        "parameters": [
          {
            "in": "path",
            "name": "org_slug",
            "schema": {
              "title": "Org Slug",
              "type": "string"
            },
            "required": true
          },
          {
            "in": "path",
            "name": "repo_id",
            "schema": {
              "title": "Repo Id",
              "type": "integer"
            },
            "required": true
          },
          {
            "in": "path",
            "name": "branch_name",
            "schema": {
              "title": "Branch Name",
              "type": "string"
            },
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeleteResponse"
                }
              }
            }
          }
        },
        "description": "Mark a branch as deleted for a manual provider repository.",
        "tags": [
          "Manual Provider"
        ],
        "security": [
          {
            "APIKeyAuth": []
          }
        ]
      }
    },
    "/api/v1/orgs/{org_slug}/repos/{repo_id}/sync-branches/": {
      "post": {
        "operationId": "apps_api_views_sync_branches",
        "summary": "Sync Branches",
        "parameters": [
          {
            "in": "path",
            "name": "org_slug",
            "schema": {
              "title": "Org Slug",
              "type": "string"
            },
            "required": true
          },
          {
            "in": "path",
            "name": "repo_id",
            "schema": {
              "title": "Repo Id",
              "type": "integer"
            },
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SyncBranchesResponse"
                }
              }
            }
          }
        },
        "description": "Trigger a manual branch sync for a repository.",
        "tags": [
          "Branches"
        ],
        "security": [
          {
            "APIKeyAuth": []
          }
        ]
      }
    },
    "/api/v1/orgs/{org_slug}/providers/manual/": {
      "post": {
        "operationId": "apps_api_views_create_manual_provider",
        "summary": "Create Manual Provider",
        "parameters": [
          {
            "in": "path",
            "name": "org_slug",
            "schema": {
              "title": "Org Slug",
              "type": "string"
            },
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ManualProviderResponse"
                }
              }
            }
          }
        },
        "description": "Create a manual source provider for an organization.",
        "tags": [
          "Manual Provider"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ManualProviderCreateRequest"
              }
            }
          },
          "required": true
        },
        "security": [
          {
            "APIKeyAuth": []
          }
        ]
      }
    },
    "/api/v1/orgs/{org_slug}/repos/{repo_id}/pull-requests/{pr_number}/": {
      "put": {
        "operationId": "apps_api_views_upsert_manual_pull_request",
        "summary": "Upsert Manual Pull Request",
        "parameters": [
          {
            "in": "path",
            "name": "org_slug",
            "schema": {
              "title": "Org Slug",
              "type": "string"
            },
            "required": true
          },
          {
            "in": "path",
            "name": "repo_id",
            "schema": {
              "title": "Repo Id",
              "type": "integer"
            },
            "required": true
          },
          {
            "in": "path",
            "name": "pr_number",
            "schema": {
              "title": "Pr Number",
              "type": "integer"
            },
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PullRequestSchema"
                }
              }
            }
          }
        },
        "description": "Create or update a pull request for a manual provider repository.",
        "tags": [
          "Manual Provider"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PullRequestUpsertRequest"
              }
            }
          },
          "required": true
        },
        "security": [
          {
            "APIKeyAuth": []
          }
        ]
      }
    },
    "/api/v1/orgs/{org_slug}/repos/{repo_id}/commits/{sha}/": {
      "put": {
        "operationId": "apps_api_views_upsert_manual_commit",
        "summary": "Upsert Manual Commit",
        "parameters": [
          {
            "in": "path",
            "name": "org_slug",
            "schema": {
              "title": "Org Slug",
              "type": "string"
            },
            "required": true
          },
          {
            "in": "path",
            "name": "repo_id",
            "schema": {
              "title": "Repo Id",
              "type": "integer"
            },
            "required": true
          },
          {
            "in": "path",
            "name": "sha",
            "schema": {
              "title": "Sha",
              "type": "string"
            },
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommitSchema"
                }
              }
            }
          }
        },
        "description": "Create or update a commit for a manual provider repository.",
        "tags": [
          "Manual Provider"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CommitUpsertRequest"
              }
            }
          },
          "required": true
        },
        "security": [
          {
            "APIKeyAuth": []
          }
        ]
      }
    },
    "/api/v1/orgs/{org_slug}/repos/{repo_id}/pipeline-runs/{provider_run_id}/": {
      "put": {
        "operationId": "apps_api_views_upsert_manual_pipeline_run",
        "summary": "Upsert Manual Pipeline Run",
        "parameters": [
          {
            "in": "path",
            "name": "org_slug",
            "schema": {
              "title": "Org Slug",
              "type": "string"
            },
            "required": true
          },
          {
            "in": "path",
            "name": "repo_id",
            "schema": {
              "title": "Repo Id",
              "type": "integer"
            },
            "required": true
          },
          {
            "in": "path",
            "name": "provider_run_id",
            "schema": {
              "title": "Provider Run Id",
              "type": "string"
            },
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PipelineRunSchema"
                }
              }
            }
          }
        },
        "description": "Create or update a pipeline run for a manual provider repository.",
        "tags": [
          "Manual Provider"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PipelineRunUpsertRequest"
              }
            }
          },
          "required": true
        },
        "security": [
          {
            "APIKeyAuth": []
          }
        ]
      }
    },
    "/api/v1/orgs/{org_slug}/providers/{provider_id}/webhooks/": {
      "get": {
        "operationId": "apps_api_views_list_webhook_deliveries",
        "summary": "List Webhook Deliveries",
        "parameters": [
          {
            "in": "path",
            "name": "org_slug",
            "schema": {
              "title": "Org Slug",
              "type": "string"
            },
            "required": true
          },
          {
            "in": "path",
            "name": "provider_id",
            "schema": {
              "title": "Provider Id",
              "type": "integer"
            },
            "required": true
          },
          {
            "in": "query",
            "name": "status",
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Status"
            },
            "required": false
          },
          {
            "in": "query",
            "name": "limit",
            "schema": {
              "default": 50,
              "title": "Limit",
              "type": "integer"
            },
            "required": false
          },
          {
            "in": "query",
            "name": "offset",
            "schema": {
              "default": 0,
              "title": "Offset",
              "type": "integer"
            },
            "required": false
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WebhookDeliveryListResponse"
                }
              }
            }
          }
        },
        "description": "List webhook deliveries for a provider (paginated).",
        "tags": [
          "Webhooks"
        ],
        "security": [
          {
            "APIKeyAuth": []
          }
        ]
      }
    },
    "/api/v1/orgs/{org_slug}/providers/{provider_id}/webhooks/{delivery_id}/": {
      "get": {
        "operationId": "apps_api_views_get_webhook_delivery",
        "summary": "Get Webhook Delivery",
        "parameters": [
          {
            "in": "path",
            "name": "org_slug",
            "schema": {
              "title": "Org Slug",
              "type": "string"
            },
            "required": true
          },
          {
            "in": "path",
            "name": "provider_id",
            "schema": {
              "title": "Provider Id",
              "type": "integer"
            },
            "required": true
          },
          {
            "in": "path",
            "name": "delivery_id",
            "schema": {
              "title": "Delivery Id",
              "type": "integer"
            },
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WebhookDeliveryDetailSchema"
                }
              }
            }
          }
        },
        "description": "Get a specific webhook delivery with full payload.",
        "tags": [
          "Webhooks"
        ],
        "security": [
          {
            "APIKeyAuth": []
          }
        ]
      }
    },
    "/api/v1/orgs/{org_slug}/providers/{provider_id}/webhooks/{delivery_id}/replay/": {
      "post": {
        "operationId": "apps_api_views_replay_webhook",
        "summary": "Replay Webhook",
        "parameters": [
          {
            "in": "path",
            "name": "org_slug",
            "schema": {
              "title": "Org Slug",
              "type": "string"
            },
            "required": true
          },
          {
            "in": "path",
            "name": "provider_id",
            "schema": {
              "title": "Provider Id",
              "type": "integer"
            },
            "required": true
          },
          {
            "in": "path",
            "name": "delivery_id",
            "schema": {
              "title": "Delivery Id",
              "type": "integer"
            },
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReplayResponse"
                }
              }
            }
          }
        },
        "description": "Replay a webhook delivery.",
        "tags": [
          "Webhooks"
        ],
        "security": [
          {
            "APIKeyAuth": []
          }
        ]
      }
    },
    "/api/v1/orgs/{org_slug}/repos/{repo_id}/uploads": {
      "post": {
        "operationId": "apps_api_views_initiate_upload",
        "summary": "Initiate Upload",
        "parameters": [
          {
            "in": "path",
            "name": "org_slug",
            "schema": {
              "title": "Org Slug",
              "type": "string"
            },
            "required": true
          },
          {
            "in": "path",
            "name": "repo_id",
            "schema": {
              "title": "Repo Id",
              "type": "integer"
            },
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UploadInitiateResponse"
                }
              }
            }
          }
        },
        "description": "Initiate a file upload.\n\nReturns a presigned URL for uploading the file directly to object storage.\nAfter uploading, call the /complete endpoint to trigger processing.",
        "tags": [
          "Uploads"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UploadInitiateRequest"
              }
            }
          },
          "required": true
        },
        "security": [
          {
            "APIKeyAuth": []
          }
        ]
      }
    },
    "/api/v1/orgs/{org_slug}/repos/{repo_id}/uploads/{upload_id}/complete": {
      "post": {
        "operationId": "apps_api_views_complete_upload",
        "summary": "Complete Upload",
        "parameters": [
          {
            "in": "path",
            "name": "org_slug",
            "schema": {
              "title": "Org Slug",
              "type": "string"
            },
            "required": true
          },
          {
            "in": "path",
            "name": "repo_id",
            "schema": {
              "title": "Repo Id",
              "type": "integer"
            },
            "required": true
          },
          {
            "in": "path",
            "name": "upload_id",
            "schema": {
              "title": "Upload Id",
              "type": "integer"
            },
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UploadCompleteResponse"
                }
              }
            }
          }
        },
        "description": "Mark an upload as complete and trigger async processing.\n\nCall this after the file has been uploaded to the presigned URL.",
        "tags": [
          "Uploads"
        ],
        "security": [
          {
            "APIKeyAuth": []
          }
        ]
      }
    },
    "/api/v1/orgs/{org_slug}/repos/{repo_id}/uploads/{upload_id}/status": {
      "get": {
        "operationId": "apps_api_views_upload_status",
        "summary": "Upload Status",
        "parameters": [
          {
            "in": "path",
            "name": "org_slug",
            "schema": {
              "title": "Org Slug",
              "type": "string"
            },
            "required": true
          },
          {
            "in": "path",
            "name": "repo_id",
            "schema": {
              "title": "Repo Id",
              "type": "integer"
            },
            "required": true
          },
          {
            "in": "path",
            "name": "upload_id",
            "schema": {
              "title": "Upload Id",
              "type": "integer"
            },
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UploadStatusResponse"
                }
              }
            }
          }
        },
        "description": "Check the processing status of an upload.",
        "tags": [
          "Uploads"
        ],
        "security": [
          {
            "APIKeyAuth": []
          }
        ]
      }
    },
    "/api/v1/orgs/{org_slug}/repos/{repo_id}/upload-batches": {
      "post": {
        "operationId": "apps_api_views_create_upload_batch",
        "summary": "Create Upload Batch",
        "parameters": [
          {
            "in": "path",
            "name": "org_slug",
            "schema": {
              "title": "Org Slug",
              "type": "string"
            },
            "required": true
          },
          {
            "in": "path",
            "name": "repo_id",
            "schema": {
              "title": "Repo Id",
              "type": "integer"
            },
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BatchCreateResponse"
                }
              }
            }
          }
        },
        "description": "Create an upload batch for multi-file uploads.\n\nAfter creating the batch, initiate individual uploads with the batch_id\nto link them. Once all uploads complete processing, the server\nautomatically merges them into a single result.",
        "tags": [
          "Uploads"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BatchCreateRequest"
              }
            }
          },
          "required": true
        },
        "security": [
          {
            "APIKeyAuth": []
          }
        ]
      }
    },
    "/api/v1/orgs/{org_slug}/repos/{repo_id}/upload-batches/{batch_id}/status": {
      "get": {
        "operationId": "apps_api_views_upload_batch_status",
        "summary": "Upload Batch Status",
        "parameters": [
          {
            "in": "path",
            "name": "org_slug",
            "schema": {
              "title": "Org Slug",
              "type": "string"
            },
            "required": true
          },
          {
            "in": "path",
            "name": "repo_id",
            "schema": {
              "title": "Repo Id",
              "type": "integer"
            },
            "required": true
          },
          {
            "in": "path",
            "name": "batch_id",
            "schema": {
              "title": "Batch Id",
              "type": "integer"
            },
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BatchStatusResponse"
                }
              }
            }
          }
        },
        "description": "Check the processing status of an upload batch.",
        "tags": [
          "Uploads"
        ],
        "security": [
          {
            "APIKeyAuth": []
          }
        ]
      }
    },
    "/api/v1/orgs/{org_slug}/repos/{repo_id}/suppressions/check": {
      "get": {
        "operationId": "apps_api_views_check_suppressed_tests",
        "summary": "Check Suppressed Tests",
        "parameters": [
          {
            "in": "path",
            "name": "org_slug",
            "schema": {
              "title": "Org Slug",
              "type": "string"
            },
            "required": true
          },
          {
            "in": "path",
            "name": "repo_id",
            "schema": {
              "title": "Repo Id",
              "type": "integer"
            },
            "required": true
          },
          {
            "in": "query",
            "name": "branch",
            "schema": {
              "title": "Branch",
              "type": "string"
            },
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuppressedTestsResponse"
                }
              }
            }
          }
        },
        "description": "Get suppressed test names for a specific branch. Used by CLI.",
        "tags": [
          "Suppressions"
        ],
        "security": [
          {
            "APIKeyAuth": []
          }
        ]
      }
    },
    "/api/v1/orgs/{org_slug}/repos/{repo_id}/suppressions/": {
      "get": {
        "operationId": "apps_api_views_list_suppressions",
        "summary": "List Suppressions",
        "parameters": [
          {
            "in": "path",
            "name": "org_slug",
            "schema": {
              "title": "Org Slug",
              "type": "string"
            },
            "required": true
          },
          {
            "in": "path",
            "name": "repo_id",
            "schema": {
              "title": "Repo Id",
              "type": "integer"
            },
            "required": true
          },
          {
            "in": "query",
            "name": "active_only",
            "schema": {
              "default": true,
              "title": "Active Only",
              "type": "boolean"
            },
            "required": false
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "$ref": "#/components/schemas/TestSuppressionResponse"
                  },
                  "title": "Response",
                  "type": "array"
                }
              }
            }
          }
        },
        "description": "List test suppressions for a repository.",
        "tags": [
          "Suppressions"
        ],
        "security": [
          {
            "APIKeyAuth": []
          }
        ]
      },
      "post": {
        "operationId": "apps_api_views_create_suppression",
        "summary": "Create Suppression",
        "parameters": [
          {
            "in": "path",
            "name": "org_slug",
            "schema": {
              "title": "Org Slug",
              "type": "string"
            },
            "required": true
          },
          {
            "in": "path",
            "name": "repo_id",
            "schema": {
              "title": "Repo Id",
              "type": "integer"
            },
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TestSuppressionResponse"
                }
              }
            }
          }
        },
        "description": "Create a test suppression.",
        "tags": [
          "Suppressions"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TestSuppressionCreateRequest"
              }
            }
          },
          "required": true
        },
        "security": [
          {
            "APIKeyAuth": []
          }
        ]
      }
    },
    "/api/v1/orgs/{org_slug}/repos/{repo_id}/suppressions/bulk": {
      "post": {
        "operationId": "apps_api_views_bulk_create_suppressions",
        "summary": "Bulk Create Suppressions",
        "parameters": [
          {
            "in": "path",
            "name": "org_slug",
            "schema": {
              "title": "Org Slug",
              "type": "string"
            },
            "required": true
          },
          {
            "in": "path",
            "name": "repo_id",
            "schema": {
              "title": "Repo Id",
              "type": "integer"
            },
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "$ref": "#/components/schemas/TestSuppressionResponse"
                  },
                  "title": "Response",
                  "type": "array"
                }
              }
            }
          }
        },
        "description": "Bulk create test suppressions.",
        "tags": [
          "Suppressions"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TestSuppressionBulkCreateRequest"
              }
            }
          },
          "required": true
        },
        "security": [
          {
            "APIKeyAuth": []
          }
        ]
      }
    },
    "/api/v1/orgs/{org_slug}/repos/{repo_id}/suppressions/{suppression_id}": {
      "patch": {
        "operationId": "apps_api_views_update_suppression",
        "summary": "Update Suppression",
        "parameters": [
          {
            "in": "path",
            "name": "org_slug",
            "schema": {
              "title": "Org Slug",
              "type": "string"
            },
            "required": true
          },
          {
            "in": "path",
            "name": "repo_id",
            "schema": {
              "title": "Repo Id",
              "type": "integer"
            },
            "required": true
          },
          {
            "in": "path",
            "name": "suppression_id",
            "schema": {
              "title": "Suppression Id",
              "type": "integer"
            },
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TestSuppressionResponse"
                }
              }
            }
          }
        },
        "description": "Update a test suppression (extend expiry, change justification, etc).",
        "tags": [
          "Suppressions"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TestSuppressionUpdateRequest"
              }
            }
          },
          "required": true
        },
        "security": [
          {
            "APIKeyAuth": []
          }
        ]
      },
      "delete": {
        "operationId": "apps_api_views_deactivate_suppression",
        "summary": "Deactivate Suppression",
        "parameters": [
          {
            "in": "path",
            "name": "org_slug",
            "schema": {
              "title": "Org Slug",
              "type": "string"
            },
            "required": true
          },
          {
            "in": "path",
            "name": "repo_id",
            "schema": {
              "title": "Repo Id",
              "type": "integer"
            },
            "required": true
          },
          {
            "in": "path",
            "name": "suppression_id",
            "schema": {
              "title": "Suppression Id",
              "type": "integer"
            },
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeleteResponse"
                }
              }
            }
          }
        },
        "description": "Deactivate a test suppression.",
        "tags": [
          "Suppressions"
        ],
        "security": [
          {
            "APIKeyAuth": []
          }
        ]
      }
    }
  },
  "components": {
    "schemas": {
      "HealthResponse": {
        "description": "Health check response schema.",
        "properties": {
          "status": {
            "title": "Status",
            "type": "string"
          },
          "version": {
            "title": "Version",
            "type": "string"
          }
        },
        "required": [
          "status",
          "version"
        ],
        "title": "HealthResponse",
        "type": "object"
      },
      "EchoResponse": {
        "description": "Echo response schema.",
        "properties": {
          "message": {
            "title": "Message",
            "type": "string"
          },
          "echo_count": {
            "title": "Echo Count",
            "type": "integer"
          }
        },
        "required": [
          "message",
          "echo_count"
        ],
        "title": "EchoResponse",
        "type": "object"
      },
      "EchoRequest": {
        "description": "Echo request schema.",
        "properties": {
          "message": {
            "title": "Message",
            "type": "string"
          }
        },
        "required": [
          "message"
        ],
        "title": "EchoRequest",
        "type": "object"
      },
      "CreateAPIKeyResponse": {
        "description": "Response with the plaintext API key (shown once).",
        "properties": {
          "key": {
            "title": "Key",
            "type": "string"
          }
        },
        "required": [
          "key"
        ],
        "title": "CreateAPIKeyResponse",
        "type": "object"
      },
      "CreateAPIKeyRequest": {
        "description": "Request to create an API key.",
        "properties": {
          "name": {
            "title": "Name",
            "type": "string"
          },
          "org_slug": {
            "title": "Org Slug",
            "type": "string"
          }
        },
        "required": [
          "name",
          "org_slug"
        ],
        "title": "CreateAPIKeyRequest",
        "type": "object"
      },
      "JobUploadResponse": {
        "description": "Job upload response schema.",
        "properties": {
          "job_run_id": {
            "title": "Job Run Id",
            "type": "integer"
          },
          "status": {
            "title": "Status",
            "type": "string"
          },
          "message": {
            "title": "Message",
            "type": "string"
          }
        },
        "required": [
          "job_run_id",
          "status",
          "message"
        ],
        "title": "JobUploadResponse",
        "type": "object"
      },
      "JobUploadRequest": {
        "description": "Job upload request schema.",
        "properties": {
          "branch": {
            "title": "Branch",
            "type": "string"
          },
          "sha": {
            "title": "Sha",
            "type": "string"
          },
          "status": {
            "title": "Status",
            "type": "string"
          },
          "started_at": {
            "title": "Started At",
            "type": "string"
          },
          "finished_at": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Finished At"
          },
          "duration_ms": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Duration Ms"
          },
          "job_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Job Name"
          },
          "job_type": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": "other",
            "title": "Job Type"
          },
          "job_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Job Url"
          },
          "provider_type": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Provider Type"
          },
          "provider_run_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Provider Run Id"
          }
        },
        "required": [
          "branch",
          "sha",
          "status",
          "started_at"
        ],
        "title": "JobUploadRequest",
        "type": "object"
      },
      "RepoLookupSchema": {
        "description": "Repository lookup response schema.",
        "properties": {
          "id": {
            "title": "Id",
            "type": "integer"
          },
          "name": {
            "title": "Name",
            "type": "string"
          },
          "source_type": {
            "title": "Source Type",
            "type": "string"
          },
          "provider_org": {
            "title": "Provider Org",
            "type": "string"
          },
          "repo_name": {
            "title": "Repo Name",
            "type": "string"
          },
          "url": {
            "title": "Url",
            "type": "string"
          }
        },
        "required": [
          "id",
          "name",
          "source_type",
          "provider_org",
          "repo_name",
          "url"
        ],
        "title": "RepoLookupSchema",
        "type": "object"
      },
      "ManualRepoResponse": {
        "description": "Manual repository response schema.",
        "properties": {
          "id": {
            "title": "Id",
            "type": "integer"
          },
          "name": {
            "title": "Name",
            "type": "string"
          },
          "source_type": {
            "title": "Source Type",
            "type": "string"
          },
          "provider_org": {
            "title": "Provider Org",
            "type": "string"
          },
          "repo_name": {
            "title": "Repo Name",
            "type": "string"
          },
          "url": {
            "title": "Url",
            "type": "string"
          },
          "default_branch": {
            "title": "Default Branch",
            "type": "string"
          }
        },
        "required": [
          "id",
          "name",
          "source_type",
          "provider_org",
          "repo_name",
          "url",
          "default_branch"
        ],
        "title": "ManualRepoResponse",
        "type": "object"
      },
      "ManualRepoCreateRequest": {
        "description": "Request to create a repository under a manual provider.",
        "properties": {
          "name": {
            "title": "Name",
            "type": "string"
          },
          "provider_org": {
            "title": "Provider Org",
            "type": "string"
          },
          "repo_name": {
            "title": "Repo Name",
            "type": "string"
          },
          "url": {
            "default": "",
            "title": "Url",
            "type": "string"
          },
          "default_branch": {
            "default": "main",
            "title": "Default Branch",
            "type": "string"
          }
        },
        "required": [
          "name",
          "provider_org",
          "repo_name"
        ],
        "title": "ManualRepoCreateRequest",
        "type": "object"
      },
      "BranchListResponse": {
        "description": "Branch list response schema.",
        "properties": {
          "branches": {
            "items": {
              "$ref": "#/components/schemas/BranchSchema"
            },
            "title": "Branches",
            "type": "array"
          },
          "count": {
            "title": "Count",
            "type": "integer"
          }
        },
        "required": [
          "branches",
          "count"
        ],
        "title": "BranchListResponse",
        "type": "object"
      },
      "BranchSchema": {
        "description": "Branch response schema.",
        "properties": {
          "id": {
            "title": "Id",
            "type": "integer"
          },
          "name": {
            "title": "Name",
            "type": "string"
          },
          "status": {
            "title": "Status",
            "type": "string"
          },
          "head_sha": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Head Sha"
          },
          "last_commit_timestamp": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Last Commit Timestamp"
          },
          "merged_into": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Merged Into"
          },
          "merged_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Merged At"
          },
          "deleted_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Deleted At"
          },
          "last_synced_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Last Synced At"
          },
          "created_at": {
            "format": "date-time",
            "title": "Created At",
            "type": "string"
          },
          "updated_at": {
            "format": "date-time",
            "title": "Updated At",
            "type": "string"
          }
        },
        "required": [
          "id",
          "name",
          "status",
          "created_at",
          "updated_at"
        ],
        "title": "BranchSchema",
        "type": "object"
      },
      "BranchUpsertRequest": {
        "description": "Request to create or update a branch.",
        "properties": {
          "head_sha": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Head Sha"
          },
          "status": {
            "default": "active",
            "title": "Status",
            "type": "string"
          }
        },
        "title": "BranchUpsertRequest",
        "type": "object"
      },
      "DeleteResponse": {
        "description": "Generic delete/deactivate response schema.",
        "properties": {
          "status": {
            "title": "Status",
            "type": "string"
          },
          "message": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Message"
          }
        },
        "required": [
          "status"
        ],
        "title": "DeleteResponse",
        "type": "object"
      },
      "SyncBranchesResponse": {
        "description": "Sync branches response schema.",
        "properties": {
          "created": {
            "title": "Created",
            "type": "integer"
          },
          "updated": {
            "title": "Updated",
            "type": "integer"
          },
          "deleted": {
            "title": "Deleted",
            "type": "integer"
          },
          "status": {
            "title": "Status",
            "type": "string"
          },
          "message": {
            "title": "Message",
            "type": "string"
          }
        },
        "required": [
          "created",
          "updated",
          "deleted",
          "status",
          "message"
        ],
        "title": "SyncBranchesResponse",
        "type": "object"
      },
      "ManualProviderResponse": {
        "description": "Manual provider response schema.",
        "properties": {
          "id": {
            "title": "Id",
            "type": "integer"
          },
          "provider_type": {
            "title": "Provider Type",
            "type": "string"
          },
          "account_name": {
            "title": "Account Name",
            "type": "string"
          },
          "status": {
            "title": "Status",
            "type": "string"
          }
        },
        "required": [
          "id",
          "provider_type",
          "account_name",
          "status"
        ],
        "title": "ManualProviderResponse",
        "type": "object"
      },
      "ManualProviderCreateRequest": {
        "description": "Request to create a manual source provider.",
        "properties": {
          "account_name": {
            "title": "Account Name",
            "type": "string"
          }
        },
        "required": [
          "account_name"
        ],
        "title": "ManualProviderCreateRequest",
        "type": "object"
      },
      "PullRequestSchema": {
        "description": "Pull request response schema.",
        "properties": {
          "id": {
            "title": "Id",
            "type": "integer"
          },
          "pr_number": {
            "title": "Pr Number",
            "type": "integer"
          },
          "title": {
            "title": "Title",
            "type": "string"
          },
          "url": {
            "title": "Url",
            "type": "string"
          },
          "author_username": {
            "title": "Author Username",
            "type": "string"
          },
          "source_branch": {
            "title": "Source Branch",
            "type": "string"
          },
          "target_branch": {
            "title": "Target Branch",
            "type": "string"
          },
          "status": {
            "title": "Status",
            "type": "string"
          },
          "created_at_provider": {
            "format": "date-time",
            "title": "Created At Provider",
            "type": "string"
          },
          "updated_at_provider": {
            "format": "date-time",
            "title": "Updated At Provider",
            "type": "string"
          },
          "author_avatar_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Author Avatar Url"
          },
          "merged_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Merged At"
          },
          "closed_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Closed At"
          },
          "merge_commit_sha": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Merge Commit Sha"
          },
          "merged_by_username": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Merged By Username"
          },
          "commits_count": {
            "default": 0,
            "title": "Commits Count",
            "type": "integer"
          },
          "additions": {
            "default": 0,
            "title": "Additions",
            "type": "integer"
          },
          "deletions": {
            "default": 0,
            "title": "Deletions",
            "type": "integer"
          },
          "changed_files": {
            "default": 0,
            "title": "Changed Files",
            "type": "integer"
          },
          "created_at": {
            "format": "date-time",
            "title": "Created At",
            "type": "string"
          },
          "updated_at": {
            "format": "date-time",
            "title": "Updated At",
            "type": "string"
          }
        },
        "required": [
          "id",
          "pr_number",
          "title",
          "url",
          "author_username",
          "source_branch",
          "target_branch",
          "status",
          "created_at_provider",
          "updated_at_provider",
          "created_at",
          "updated_at"
        ],
        "title": "PullRequestSchema",
        "type": "object"
      },
      "PullRequestUpsertRequest": {
        "description": "Request to create or update a pull request.",
        "properties": {
          "title": {
            "title": "Title",
            "type": "string"
          },
          "url": {
            "default": "",
            "title": "Url",
            "type": "string"
          },
          "author_username": {
            "title": "Author Username",
            "type": "string"
          },
          "source_branch": {
            "title": "Source Branch",
            "type": "string"
          },
          "target_branch": {
            "title": "Target Branch",
            "type": "string"
          },
          "status": {
            "default": "open",
            "title": "Status",
            "type": "string"
          },
          "created_at_provider": {
            "title": "Created At Provider",
            "type": "string"
          },
          "updated_at_provider": {
            "title": "Updated At Provider",
            "type": "string"
          },
          "author_avatar_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Author Avatar Url"
          },
          "merged_at": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Merged At"
          },
          "closed_at": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Closed At"
          },
          "merge_commit_sha": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Merge Commit Sha"
          },
          "merged_by_username": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Merged By Username"
          },
          "commits_count": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Commits Count"
          },
          "additions": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Additions"
          },
          "deletions": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Deletions"
          },
          "changed_files": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Changed Files"
          }
        },
        "required": [
          "title",
          "author_username",
          "source_branch",
          "target_branch",
          "created_at_provider",
          "updated_at_provider"
        ],
        "title": "PullRequestUpsertRequest",
        "type": "object"
      },
      "CommitSchema": {
        "description": "Commit response schema.",
        "properties": {
          "id": {
            "title": "Id",
            "type": "integer"
          },
          "sha": {
            "title": "Sha",
            "type": "string"
          },
          "commit_timestamp": {
            "format": "date-time",
            "title": "Commit Timestamp",
            "type": "string"
          },
          "author_email": {
            "title": "Author Email",
            "type": "string"
          },
          "author_name": {
            "title": "Author Name",
            "type": "string"
          },
          "message": {
            "title": "Message",
            "type": "string"
          },
          "parent_sha": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Parent Sha"
          },
          "branches": {
            "items": {},
            "title": "Branches",
            "type": "array"
          },
          "created_at": {
            "format": "date-time",
            "title": "Created At",
            "type": "string"
          },
          "updated_at": {
            "format": "date-time",
            "title": "Updated At",
            "type": "string"
          }
        },
        "required": [
          "id",
          "sha",
          "commit_timestamp",
          "author_email",
          "author_name",
          "message",
          "branches",
          "created_at",
          "updated_at"
        ],
        "title": "CommitSchema",
        "type": "object"
      },
      "CommitUpsertRequest": {
        "description": "Request to create or update a commit.",
        "properties": {
          "commit_timestamp": {
            "title": "Commit Timestamp",
            "type": "string"
          },
          "author_email": {
            "title": "Author Email",
            "type": "string"
          },
          "author_name": {
            "title": "Author Name",
            "type": "string"
          },
          "message": {
            "title": "Message",
            "type": "string"
          },
          "parent_sha": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Parent Sha"
          },
          "branches": {
            "default": [],
            "items": {
              "type": "string"
            },
            "title": "Branches",
            "type": "array"
          }
        },
        "required": [
          "commit_timestamp",
          "author_email",
          "author_name",
          "message"
        ],
        "title": "CommitUpsertRequest",
        "type": "object"
      },
      "PipelineRunSchema": {
        "description": "Pipeline run response schema.",
        "properties": {
          "id": {
            "title": "Id",
            "type": "integer"
          },
          "provider_type": {
            "title": "Provider Type",
            "type": "string"
          },
          "provider_run_id": {
            "title": "Provider Run Id",
            "type": "string"
          },
          "workflow_id": {
            "title": "Workflow Id",
            "type": "string"
          },
          "workflow_name": {
            "title": "Workflow Name",
            "type": "string"
          },
          "run_number": {
            "title": "Run Number",
            "type": "integer"
          },
          "run_attempt": {
            "title": "Run Attempt",
            "type": "integer"
          },
          "status": {
            "title": "Status",
            "type": "string"
          },
          "conclusion": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Conclusion"
          },
          "event": {
            "title": "Event",
            "type": "string"
          },
          "head_sha": {
            "title": "Head Sha",
            "type": "string"
          },
          "branch": {
            "title": "Branch",
            "type": "string"
          },
          "actor_username": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Actor Username"
          },
          "run_started_at": {
            "format": "date-time",
            "title": "Run Started At",
            "type": "string"
          },
          "completed_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Completed At"
          },
          "duration_ms": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Duration Ms"
          },
          "html_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Html Url"
          },
          "created_at": {
            "format": "date-time",
            "title": "Created At",
            "type": "string"
          },
          "updated_at": {
            "format": "date-time",
            "title": "Updated At",
            "type": "string"
          }
        },
        "required": [
          "id",
          "provider_type",
          "provider_run_id",
          "workflow_id",
          "workflow_name",
          "run_number",
          "run_attempt",
          "status",
          "event",
          "head_sha",
          "branch",
          "run_started_at",
          "created_at",
          "updated_at"
        ],
        "title": "PipelineRunSchema",
        "type": "object"
      },
      "PipelineRunUpsertRequest": {
        "description": "Request to create or update a pipeline run.",
        "properties": {
          "provider_type": {
            "title": "Provider Type",
            "type": "string"
          },
          "run_number": {
            "default": 1,
            "title": "Run Number",
            "type": "integer"
          },
          "status": {
            "title": "Status",
            "type": "string"
          },
          "head_sha": {
            "title": "Head Sha",
            "type": "string"
          },
          "branch": {
            "title": "Branch",
            "type": "string"
          },
          "run_started_at": {
            "format": "date-time",
            "title": "Run Started At",
            "type": "string"
          },
          "workflow_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Workflow Id"
          },
          "workflow_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Workflow Name"
          },
          "run_attempt": {
            "default": 1,
            "title": "Run Attempt",
            "type": "integer"
          },
          "conclusion": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Conclusion"
          },
          "event": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Event"
          },
          "actor_username": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Actor Username"
          },
          "completed_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Completed At"
          },
          "html_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Html Url"
          }
        },
        "required": [
          "provider_type",
          "status",
          "head_sha",
          "branch",
          "run_started_at"
        ],
        "title": "PipelineRunUpsertRequest",
        "type": "object"
      },
      "WebhookDeliveryListResponse": {
        "description": "Webhook delivery list response.",
        "properties": {
          "deliveries": {
            "items": {
              "$ref": "#/components/schemas/WebhookDeliverySchema"
            },
            "title": "Deliveries",
            "type": "array"
          },
          "count": {
            "title": "Count",
            "type": "integer"
          }
        },
        "required": [
          "deliveries",
          "count"
        ],
        "title": "WebhookDeliveryListResponse",
        "type": "object"
      },
      "WebhookDeliverySchema": {
        "description": "Webhook delivery response schema.",
        "properties": {
          "id": {
            "title": "Id",
            "type": "integer"
          },
          "provider_delivery_id": {
            "title": "Provider Delivery Id",
            "type": "string"
          },
          "event_type": {
            "title": "Event Type",
            "type": "string"
          },
          "processing_status": {
            "title": "Processing Status",
            "type": "string"
          },
          "processing_error": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Processing Error"
          },
          "processing_duration_ms": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Processing Duration Ms"
          },
          "received_at": {
            "format": "date-time",
            "title": "Received At",
            "type": "string"
          },
          "processed_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Processed At"
          },
          "created_at": {
            "format": "date-time",
            "title": "Created At",
            "type": "string"
          }
        },
        "required": [
          "id",
          "provider_delivery_id",
          "event_type",
          "processing_status",
          "received_at",
          "created_at"
        ],
        "title": "WebhookDeliverySchema",
        "type": "object"
      },
      "WebhookDeliveryDetailSchema": {
        "description": "Webhook delivery detail with full payload.",
        "properties": {
          "id": {
            "title": "Id",
            "type": "integer"
          },
          "provider_delivery_id": {
            "title": "Provider Delivery Id",
            "type": "string"
          },
          "event_type": {
            "title": "Event Type",
            "type": "string"
          },
          "processing_status": {
            "title": "Processing Status",
            "type": "string"
          },
          "processing_error": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Processing Error"
          },
          "processing_duration_ms": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Processing Duration Ms"
          },
          "received_at": {
            "format": "date-time",
            "title": "Received At",
            "type": "string"
          },
          "processed_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Processed At"
          },
          "created_at": {
            "format": "date-time",
            "title": "Created At",
            "type": "string"
          },
          "headers": {
            "additionalProperties": true,
            "title": "Headers",
            "type": "object"
          },
          "payload": {
            "additionalProperties": true,
            "title": "Payload",
            "type": "object"
          }
        },
        "required": [
          "id",
          "provider_delivery_id",
          "event_type",
          "processing_status",
          "received_at",
          "created_at",
          "headers",
          "payload"
        ],
        "title": "WebhookDeliveryDetailSchema",
        "type": "object"
      },
      "ReplayResponse": {
        "description": "Replay response schema.",
        "properties": {
          "status": {
            "title": "Status",
            "type": "string"
          },
          "message": {
            "title": "Message",
            "type": "string"
          },
          "delivery_id": {
            "title": "Delivery Id",
            "type": "integer"
          }
        },
        "required": [
          "status",
          "message",
          "delivery_id"
        ],
        "title": "ReplayResponse",
        "type": "object"
      },
      "UploadInitiateResponse": {
        "description": "Response with presigned upload URL.",
        "properties": {
          "upload_id": {
            "title": "Upload Id",
            "type": "integer"
          },
          "upload_url": {
            "title": "Upload Url",
            "type": "string"
          },
          "content_type": {
            "title": "Content Type",
            "type": "string"
          },
          "expires_in": {
            "title": "Expires In",
            "type": "integer"
          }
        },
        "required": [
          "upload_id",
          "upload_url",
          "content_type",
          "expires_in"
        ],
        "title": "UploadInitiateResponse",
        "type": "object"
      },
      "UploadInitiateRequest": {
        "description": "Request to initiate a unified upload.",
        "properties": {
          "upload_type": {
            "title": "Upload Type",
            "type": "string"
          },
          "branch": {
            "title": "Branch",
            "type": "string"
          },
          "sha": {
            "title": "Sha",
            "type": "string"
          },
          "filename": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Filename"
          },
          "content_type": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Content Type"
          },
          "metadata": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Metadata"
          },
          "batch_id": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Batch Id"
          }
        },
        "required": [
          "upload_type",
          "branch",
          "sha"
        ],
        "title": "UploadInitiateRequest",
        "type": "object"
      },
      "UploadCompleteResponse": {
        "description": "Response after marking upload complete.",
        "properties": {
          "upload_id": {
            "title": "Upload Id",
            "type": "integer"
          },
          "status": {
            "title": "Status",
            "type": "string"
          }
        },
        "required": [
          "upload_id",
          "status"
        ],
        "title": "UploadCompleteResponse",
        "type": "object"
      },
      "UploadStatusResponse": {
        "description": "Response with upload processing status.",
        "properties": {
          "upload_id": {
            "title": "Upload Id",
            "type": "integer"
          },
          "upload_type": {
            "title": "Upload Type",
            "type": "string"
          },
          "status": {
            "title": "Status",
            "type": "string"
          },
          "result": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Result"
          },
          "error_message": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Error Message"
          }
        },
        "required": [
          "upload_id",
          "upload_type",
          "status"
        ],
        "title": "UploadStatusResponse",
        "type": "object"
      },
      "BatchCreateResponse": {
        "description": "Response after creating an upload batch.",
        "properties": {
          "batch_id": {
            "title": "Batch Id",
            "type": "integer"
          }
        },
        "required": [
          "batch_id"
        ],
        "title": "BatchCreateResponse",
        "type": "object"
      },
      "BatchCreateRequest": {
        "description": "Request to create an upload batch.",
        "properties": {
          "upload_type": {
            "title": "Upload Type",
            "type": "string"
          },
          "expected_count": {
            "title": "Expected Count",
            "type": "integer"
          },
          "branch": {
            "title": "Branch",
            "type": "string"
          },
          "sha": {
            "title": "Sha",
            "type": "string"
          },
          "metadata": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Metadata"
          }
        },
        "required": [
          "upload_type",
          "expected_count",
          "branch",
          "sha"
        ],
        "title": "BatchCreateRequest",
        "type": "object"
      },
      "BatchStatusResponse": {
        "description": "Response with batch processing status.",
        "properties": {
          "batch_id": {
            "title": "Batch Id",
            "type": "integer"
          },
          "status": {
            "title": "Status",
            "type": "string"
          },
          "expected_count": {
            "title": "Expected Count",
            "type": "integer"
          },
          "completed_count": {
            "title": "Completed Count",
            "type": "integer"
          },
          "result": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Result"
          },
          "error_message": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Error Message"
          }
        },
        "required": [
          "batch_id",
          "status",
          "expected_count",
          "completed_count"
        ],
        "title": "BatchStatusResponse",
        "type": "object"
      },
      "SuppressedTestsResponse": {
        "description": "Response with suppressed test names for a branch.",
        "properties": {
          "test_names": {
            "items": {
              "type": "string"
            },
            "title": "Test Names",
            "type": "array"
          },
          "branch": {
            "title": "Branch",
            "type": "string"
          }
        },
        "required": [
          "test_names",
          "branch"
        ],
        "title": "SuppressedTestsResponse",
        "type": "object"
      },
      "TestSuppressionResponse": {
        "description": "Test suppression response schema.",
        "properties": {
          "id": {
            "title": "Id",
            "type": "integer"
          },
          "test_name": {
            "title": "Test Name",
            "type": "string"
          },
          "branch_pattern": {
            "title": "Branch Pattern",
            "type": "string"
          },
          "justification": {
            "title": "Justification",
            "type": "string"
          },
          "suppression_source": {
            "title": "Suppression Source",
            "type": "string"
          },
          "is_active": {
            "title": "Is Active",
            "type": "boolean"
          },
          "created_at": {
            "format": "date-time",
            "title": "Created At",
            "type": "string"
          },
          "created_by_email": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Created By Email"
          },
          "expires_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Expires At"
          },
          "ticket_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Ticket Url"
          },
          "test_file": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Test File"
          },
          "test_suite": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Test Suite"
          }
        },
        "required": [
          "id",
          "test_name",
          "branch_pattern",
          "justification",
          "suppression_source",
          "is_active",
          "created_at"
        ],
        "title": "TestSuppressionResponse",
        "type": "object"
      },
      "TestSuppressionCreateRequest": {
        "description": "Request to create a test suppression.",
        "properties": {
          "test_name": {
            "title": "Test Name",
            "type": "string"
          },
          "justification": {
            "title": "Justification",
            "type": "string"
          },
          "branch_pattern": {
            "default": "*",
            "title": "Branch Pattern",
            "type": "string"
          },
          "test_file": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Test File"
          },
          "test_suite": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Test Suite"
          },
          "expires_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Expires At"
          },
          "ticket_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Ticket Url"
          },
          "suppression_source": {
            "default": "manual",
            "title": "Suppression Source",
            "type": "string"
          },
          "suppression_type": {
            "default": "suppressed",
            "title": "Suppression Type",
            "type": "string"
          }
        },
        "required": [
          "test_name",
          "justification"
        ],
        "title": "TestSuppressionCreateRequest",
        "type": "object"
      },
      "TestSuppressionBulkCreateRequest": {
        "description": "Request to bulk create test suppressions.",
        "properties": {
          "suppressions": {
            "items": {
              "$ref": "#/components/schemas/TestSuppressionCreateRequest"
            },
            "title": "Suppressions",
            "type": "array"
          }
        },
        "required": [
          "suppressions"
        ],
        "title": "TestSuppressionBulkCreateRequest",
        "type": "object"
      },
      "TestSuppressionUpdateRequest": {
        "description": "Request to update a test suppression.",
        "properties": {
          "justification": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Justification"
          },
          "expires_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Expires At"
          },
          "ticket_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Ticket Url"
          }
        },
        "title": "TestSuppressionUpdateRequest",
        "type": "object"
      }
    },
    "securitySchemes": {
      "APIKeyAuth": {
        "type": "http",
        "scheme": "bearer"
      }
    }
  },
  "servers": []
}
