{
  "openapi": "3.1.0",
  "info": {
    "title": "Localisync Git synchronization API",
    "version": "0.1.0",
    "description": "Workspace provider authorization and reviewed branch-scoped ARB/JSON synchronization. Provider writes require explicit approval; webhooks only schedule previews."
  },
  "paths": {
    "/api/v1/git-provider-catalog": {
      "get": {
        "operationId": "getGitProviderCatalog",
        "summary": "Read configured providers and requested permissions",
        "description": "Current membership, explicit branch scope and version checks apply. Previews expire after 24 hours. A pull request is not synchronized until the actual merge result is verified. See the Git synchronization guide for permissions and recovery.",
        "security": [
          {
            "session": []
          }
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "Operation accepted or result returned. Remote completion is indicated only by the job state.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Catalog"
                }
              }
            }
          },
          "400": {
            "description": "Safe error; no partial content application.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Safe error; no partial content application.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Safe error; no partial content application.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Safe error; no partial content application.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Safe error; no partial content application.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "413": {
            "description": "Safe error; no partial content application.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Safe error; no partial content application.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Safe error; no partial content application.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Safe error; no partial content application.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/workspaces/{workspaceId}/git-connections": {
      "get": {
        "operationId": "listGitConnections",
        "summary": "List workspace Git connections (Owner/Admin)",
        "description": "Current membership, explicit branch scope and version checks apply. Previews expire after 24 hours. A pull request is not synchronized until the actual merge result is verified. See the Git synchronization guide for permissions and recovery.",
        "security": [
          {
            "session": []
          }
        ],
        "parameters": [
          {
            "name": "workspaceId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Operation accepted or result returned. Remote completion is indicated only by the job state.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Connections"
                }
              }
            }
          },
          "400": {
            "description": "Safe error; no partial content application.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Safe error; no partial content application.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Safe error; no partial content application.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Safe error; no partial content application.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Safe error; no partial content application.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "413": {
            "description": "Safe error; no partial content application.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Safe error; no partial content application.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Safe error; no partial content application.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Safe error; no partial content application.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/workspaces/{workspaceId}/git-connections/authorize": {
      "post": {
        "operationId": "authorizeGitConnection",
        "summary": "Begin or restart provider authorization",
        "description": "Current membership, explicit branch scope and version checks apply. Previews expire after 24 hours. A pull request is not synchronized until the actual merge result is verified. See the Git synchronization guide for permissions and recovery.",
        "security": [
          {
            "session": []
          }
        ],
        "parameters": [
          {
            "name": "workspaceId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "X-CSRF-Token",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Origin",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uri"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Authorization"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Operation accepted or result returned. Remote completion is indicated only by the job state.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthorizationResult"
                }
              }
            }
          },
          "400": {
            "description": "Safe error; no partial content application.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Safe error; no partial content application.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Safe error; no partial content application.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Safe error; no partial content application.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Safe error; no partial content application.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "413": {
            "description": "Safe error; no partial content application.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Safe error; no partial content application.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Safe error; no partial content application.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Safe error; no partial content application.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/workspaces/{workspaceId}/git-connections/{id}": {
      "delete": {
        "operationId": "disableGitConnection",
        "summary": "Disable local access without revoking provider authorization",
        "description": "Current membership, explicit branch scope and version checks apply. Previews expire after 24 hours. A pull request is not synchronized until the actual merge result is verified. See the Git synchronization guide for permissions and recovery.",
        "security": [
          {
            "session": []
          }
        ],
        "parameters": [
          {
            "name": "workspaceId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "X-CSRF-Token",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Origin",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uri"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Operation accepted or result returned. Remote completion is indicated only by the job state.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Disabled"
                }
              }
            }
          },
          "400": {
            "description": "Safe error; no partial content application.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Safe error; no partial content application.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Safe error; no partial content application.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Safe error; no partial content application.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Safe error; no partial content application.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "413": {
            "description": "Safe error; no partial content application.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Safe error; no partial content application.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Safe error; no partial content application.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Safe error; no partial content application.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/workspaces/{workspaceId}/git-connections/discoveries": {
      "post": {
        "operationId": "createGitDiscovery",
        "summary": "Queue repository, branch or file discovery",
        "description": "Current membership, explicit branch scope and version checks apply. Previews expire after 24 hours. A pull request is not synchronized until the actual merge result is verified. See the Git synchronization guide for permissions and recovery.",
        "security": [
          {
            "session": []
          }
        ],
        "parameters": [
          {
            "name": "workspaceId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "X-CSRF-Token",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Origin",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uri"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DiscoveryInput"
              }
            }
          }
        },
        "responses": {
          "202": {
            "description": "Operation accepted or result returned. Remote completion is indicated only by the job state.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Discovery"
                }
              }
            }
          },
          "400": {
            "description": "Safe error; no partial content application.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Safe error; no partial content application.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Safe error; no partial content application.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Safe error; no partial content application.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Safe error; no partial content application.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "413": {
            "description": "Safe error; no partial content application.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Safe error; no partial content application.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Safe error; no partial content application.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Safe error; no partial content application.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/workspaces/{workspaceId}/git-connections/discoveries/{id}": {
      "get": {
        "operationId": "getGitDiscovery",
        "summary": "Read a discovery result",
        "description": "Current membership, explicit branch scope and version checks apply. Previews expire after 24 hours. A pull request is not synchronized until the actual merge result is verified. See the Git synchronization guide for permissions and recovery.",
        "security": [
          {
            "session": []
          }
        ],
        "parameters": [
          {
            "name": "workspaceId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Operation accepted or result returned. Remote completion is indicated only by the job state.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Discovery"
                }
              }
            }
          },
          "400": {
            "description": "Safe error; no partial content application.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Safe error; no partial content application.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Safe error; no partial content application.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Safe error; no partial content application.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Safe error; no partial content application.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "413": {
            "description": "Safe error; no partial content application.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Safe error; no partial content application.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Safe error; no partial content application.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Safe error; no partial content application.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/workspaces/{workspaceId}/projects/{projectId}/branches/{branchId}/git-sync/mappings": {
      "get": {
        "operationId": "listGitMappings",
        "summary": "List mappings for the explicit content branch",
        "description": "Current membership, explicit branch scope and version checks apply. Previews expire after 24 hours. A pull request is not synchronized until the actual merge result is verified. See the Git synchronization guide for permissions and recovery.",
        "security": [
          {
            "session": []
          }
        ],
        "parameters": [
          {
            "name": "workspaceId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "projectId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "branchId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Operation accepted or result returned. Remote completion is indicated only by the job state.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Mappings"
                }
              }
            }
          },
          "400": {
            "description": "Safe error; no partial content application.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Safe error; no partial content application.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Safe error; no partial content application.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Safe error; no partial content application.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Safe error; no partial content application.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "413": {
            "description": "Safe error; no partial content application.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Safe error; no partial content application.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Safe error; no partial content application.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Safe error; no partial content application.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      },
      "post": {
        "operationId": "createGitMapping",
        "summary": "Assign repository files to active branch languages",
        "description": "Current membership, explicit branch scope and version checks apply. Previews expire after 24 hours. A pull request is not synchronized until the actual merge result is verified. See the Git synchronization guide for permissions and recovery.",
        "security": [
          {
            "session": []
          }
        ],
        "parameters": [
          {
            "name": "workspaceId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "projectId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "branchId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "X-CSRF-Token",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Origin",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uri"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MappingInput"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Operation accepted or result returned. Remote completion is indicated only by the job state.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Mapping"
                }
              }
            }
          },
          "400": {
            "description": "Safe error; no partial content application.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Safe error; no partial content application.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Safe error; no partial content application.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Safe error; no partial content application.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Safe error; no partial content application.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "413": {
            "description": "Safe error; no partial content application.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Safe error; no partial content application.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Safe error; no partial content application.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Safe error; no partial content application.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/workspaces/{workspaceId}/projects/{projectId}/branches/{branchId}/git-sync/mappings/{id}": {
      "patch": {
        "operationId": "setGitMappingEnabled",
        "summary": "Pause or resume a mapping",
        "description": "Current membership, explicit branch scope and version checks apply. Previews expire after 24 hours. A pull request is not synchronized until the actual merge result is verified. See the Git synchronization guide for permissions and recovery.",
        "security": [
          {
            "session": []
          }
        ],
        "parameters": [
          {
            "name": "workspaceId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "projectId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "branchId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "X-CSRF-Token",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Origin",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uri"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Enable"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Operation accepted or result returned. Remote completion is indicated only by the job state.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Mapping"
                }
              }
            }
          },
          "400": {
            "description": "Safe error; no partial content application.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Safe error; no partial content application.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Safe error; no partial content application.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Safe error; no partial content application.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Safe error; no partial content application.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "413": {
            "description": "Safe error; no partial content application.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Safe error; no partial content application.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Safe error; no partial content application.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Safe error; no partial content application.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/workspaces/{workspaceId}/projects/{projectId}/branches/{branchId}/git-sync/mappings/{id}/files": {
      "patch": {
        "operationId": "updateGitMappingFiles",
        "summary": "Approve file and language mapping changes; require a fresh comparison",
        "description": "Current membership, explicit branch scope and version checks apply. Previews expire after 24 hours. A pull request is not synchronized until the actual merge result is verified. See the Git synchronization guide for permissions and recovery.",
        "security": [
          {
            "session": []
          }
        ],
        "parameters": [
          {
            "name": "workspaceId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "projectId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "branchId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "X-CSRF-Token",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Origin",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uri"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MappingFiles"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Operation accepted or result returned. Remote completion is indicated only by the job state.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Mapping"
                }
              }
            }
          },
          "400": {
            "description": "Safe error; no partial content application.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Safe error; no partial content application.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Safe error; no partial content application.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Safe error; no partial content application.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Safe error; no partial content application.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "413": {
            "description": "Safe error; no partial content application.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Safe error; no partial content application.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Safe error; no partial content application.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Safe error; no partial content application.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/workspaces/{workspaceId}/projects/{projectId}/branches/{branchId}/git-sync/unassigned": {
      "get": {
        "operationId": "listGitUnassignedKeys",
        "summary": "List keys without a Git file group",
        "description": "Current membership, explicit branch scope and version checks apply. Previews expire after 24 hours. A pull request is not synchronized until the actual merge result is verified. See the Git synchronization guide for permissions and recovery.",
        "security": [
          {
            "session": []
          }
        ],
        "parameters": [
          {
            "name": "workspaceId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "projectId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "branchId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "page",
            "in": "query",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "default": 1
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Operation accepted or result returned. Remote completion is indicated only by the job state.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unassigned"
                }
              }
            }
          },
          "400": {
            "description": "Safe error; no partial content application.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Safe error; no partial content application.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Safe error; no partial content application.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Safe error; no partial content application.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Safe error; no partial content application.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "413": {
            "description": "Safe error; no partial content application.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Safe error; no partial content application.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Safe error; no partial content application.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Safe error; no partial content application.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/workspaces/{workspaceId}/projects/{projectId}/branches/{branchId}/git-sync/mappings/{id}/bindings": {
      "get": {
        "operationId": "listGitBindings",
        "summary": "Read file group assignments",
        "description": "Current membership, explicit branch scope and version checks apply. Previews expire after 24 hours. A pull request is not synchronized until the actual merge result is verified. See the Git synchronization guide for permissions and recovery.",
        "security": [
          {
            "session": []
          }
        ],
        "parameters": [
          {
            "name": "workspaceId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "projectId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "branchId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Operation accepted or result returned. Remote completion is indicated only by the job state.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Bindings"
                }
              }
            }
          },
          "400": {
            "description": "Safe error; no partial content application.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Safe error; no partial content application.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Safe error; no partial content application.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Safe error; no partial content application.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Safe error; no partial content application.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "413": {
            "description": "Safe error; no partial content application.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Safe error; no partial content application.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Safe error; no partial content application.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Safe error; no partial content application.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      },
      "post": {
        "operationId": "assignGitKey",
        "summary": "Assign a key to a file group",
        "description": "Current membership, explicit branch scope and version checks apply. Previews expire after 24 hours. A pull request is not synchronized until the actual merge result is verified. See the Git synchronization guide for permissions and recovery.",
        "security": [
          {
            "session": []
          }
        ],
        "parameters": [
          {
            "name": "workspaceId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "projectId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "branchId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "X-CSRF-Token",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Origin",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uri"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Binding"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Operation accepted or result returned. Remote completion is indicated only by the job state.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Assigned"
                }
              }
            }
          },
          "400": {
            "description": "Safe error; no partial content application.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Safe error; no partial content application.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Safe error; no partial content application.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Safe error; no partial content application.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Safe error; no partial content application.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "413": {
            "description": "Safe error; no partial content application.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Safe error; no partial content application.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Safe error; no partial content application.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Safe error; no partial content application.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/workspaces/{workspaceId}/projects/{projectId}/branches/{branchId}/git-sync/mappings/{id}/renames": {
      "post": {
        "operationId": "matchGitKeyRename",
        "summary": "Explicitly match an external rename to the existing key",
        "description": "Current membership, explicit branch scope and version checks apply. Previews expire after 24 hours. A pull request is not synchronized until the actual merge result is verified. See the Git synchronization guide for permissions and recovery.",
        "security": [
          {
            "session": []
          }
        ],
        "parameters": [
          {
            "name": "workspaceId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "projectId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "branchId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "X-CSRF-Token",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Origin",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uri"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Rename"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Operation accepted or result returned. Remote completion is indicated only by the job state.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Assigned"
                }
              }
            }
          },
          "400": {
            "description": "Safe error; no partial content application.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Safe error; no partial content application.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Safe error; no partial content application.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Safe error; no partial content application.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Safe error; no partial content application.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "413": {
            "description": "Safe error; no partial content application.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Safe error; no partial content application.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Safe error; no partial content application.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Safe error; no partial content application.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/workspaces/{workspaceId}/projects/{projectId}/branches/{branchId}/git-sync/mappings/{id}/previews": {
      "post": {
        "operationId": "createGitPreview",
        "summary": "Queue a preview without applying changes",
        "description": "Current membership, explicit branch scope and version checks apply. Previews expire after 24 hours. A pull request is not synchronized until the actual merge result is verified. See the Git synchronization guide for permissions and recovery.",
        "security": [
          {
            "session": []
          }
        ],
        "parameters": [
          {
            "name": "workspaceId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "projectId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "branchId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "X-CSRF-Token",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Origin",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uri"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Preview"
              }
            }
          }
        },
        "responses": {
          "202": {
            "description": "Operation accepted or result returned. Remote completion is indicated only by the job state.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Job"
                }
              }
            }
          },
          "400": {
            "description": "Safe error; no partial content application.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Safe error; no partial content application.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Safe error; no partial content application.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Safe error; no partial content application.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Safe error; no partial content application.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "413": {
            "description": "Safe error; no partial content application.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Safe error; no partial content application.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Safe error; no partial content application.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Safe error; no partial content application.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/workspaces/{workspaceId}/projects/{projectId}/branches/{branchId}/git-sync/jobs": {
      "get": {
        "operationId": "listGitJobs",
        "summary": "Read recent branch synchronization activity",
        "description": "Current membership, explicit branch scope and version checks apply. Previews expire after 24 hours. A pull request is not synchronized until the actual merge result is verified. See the Git synchronization guide for permissions and recovery.",
        "security": [
          {
            "session": []
          }
        ],
        "parameters": [
          {
            "name": "workspaceId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "projectId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "branchId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Operation accepted or result returned. Remote completion is indicated only by the job state.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Jobs"
                }
              }
            }
          },
          "400": {
            "description": "Safe error; no partial content application.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Safe error; no partial content application.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Safe error; no partial content application.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Safe error; no partial content application.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Safe error; no partial content application.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "413": {
            "description": "Safe error; no partial content application.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Safe error; no partial content application.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Safe error; no partial content application.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Safe error; no partial content application.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/workspaces/{workspaceId}/projects/{projectId}/branches/{branchId}/git-sync/jobs/{id}": {
      "get": {
        "operationId": "getGitJob",
        "summary": "Read a job and a page of reviewed changes",
        "description": "Current membership, explicit branch scope and version checks apply. Previews expire after 24 hours. A pull request is not synchronized until the actual merge result is verified. See the Git synchronization guide for permissions and recovery.",
        "security": [
          {
            "session": []
          }
        ],
        "parameters": [
          {
            "name": "workspaceId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "projectId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "branchId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "page",
            "in": "query",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "default": 1
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Operation accepted or result returned. Remote completion is indicated only by the job state.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Job"
                }
              }
            }
          },
          "400": {
            "description": "Safe error; no partial content application.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Safe error; no partial content application.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Safe error; no partial content application.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Safe error; no partial content application.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Safe error; no partial content application.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "413": {
            "description": "Safe error; no partial content application.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Safe error; no partial content application.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Safe error; no partial content application.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Safe error; no partial content application.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/workspaces/{workspaceId}/projects/{projectId}/branches/{branchId}/git-sync/jobs/{id}/approve": {
      "post": {
        "operationId": "approveGitChanges",
        "summary": "Approve selected changes with version and removal checks",
        "description": "Current membership, explicit branch scope and version checks apply. Previews expire after 24 hours. A pull request is not synchronized until the actual merge result is verified. See the Git synchronization guide for permissions and recovery.",
        "security": [
          {
            "session": []
          }
        ],
        "parameters": [
          {
            "name": "workspaceId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "projectId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "branchId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "X-CSRF-Token",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Origin",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uri"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Approval"
              }
            }
          }
        },
        "responses": {
          "202": {
            "description": "Operation accepted or result returned. Remote completion is indicated only by the job state.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Job"
                }
              }
            }
          },
          "400": {
            "description": "Safe error; no partial content application.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Safe error; no partial content application.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Safe error; no partial content application.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Safe error; no partial content application.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Safe error; no partial content application.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "413": {
            "description": "Safe error; no partial content application.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Safe error; no partial content application.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Safe error; no partial content application.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Safe error; no partial content application.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/workspaces/{workspaceId}/projects/{projectId}/branches/{branchId}/git-sync/jobs/{id}/cancel": {
      "post": {
        "operationId": "cancelGitJob",
        "summary": "Cancel an operation that has not started a remote write",
        "description": "Current membership, explicit branch scope and version checks apply. Previews expire after 24 hours. A pull request is not synchronized until the actual merge result is verified. See the Git synchronization guide for permissions and recovery.",
        "security": [
          {
            "session": []
          }
        ],
        "parameters": [
          {
            "name": "workspaceId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "projectId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "branchId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "X-CSRF-Token",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Origin",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uri"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Version"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Operation accepted or result returned. Remote completion is indicated only by the job state.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Job"
                }
              }
            }
          },
          "400": {
            "description": "Safe error; no partial content application.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Safe error; no partial content application.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Safe error; no partial content application.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Safe error; no partial content application.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Safe error; no partial content application.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "413": {
            "description": "Safe error; no partial content application.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Safe error; no partial content application.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Safe error; no partial content application.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Safe error; no partial content application.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/git/callback/{provider}": {
      "get": {
        "operationId": "completeGitAuthorization",
        "summary": "Complete state-bound provider authorization",
        "description": "Browser navigation only. Requires the same authenticated manager and one-time authorization state. The code is encrypted for worker exchange.",
        "security": [
          {
            "session": []
          }
        ],
        "parameters": [
          {
            "name": "provider",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "github",
                "gitlab",
                "bitbucket"
              ]
            }
          },
          {
            "name": "state",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "code",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "303": {
            "description": "Return to workspace Git connections.",
            "headers": {
              "Location": {
                "schema": {
                  "type": "string",
                  "format": "uri"
                }
              }
            }
          },
          "400": {
            "description": "Invalid authorization state."
          },
          "401": {
            "description": "Sign in again."
          },
          "409": {
            "description": "Expired or already used authorization."
          },
          "503": {
            "description": "Vault unavailable."
          }
        }
      }
    },
    "/api/v1/git/webhooks/{provider}": {
      "post": {
        "operationId": "receiveGitWebhook",
        "summary": "Verify a provider webhook and schedule preview work",
        "description": "No session authentication. Raw-body HMAC is mandatory: X-Hub-Signature-256 for GitHub, X-Hub-Signature for Bitbucket, Standard Webhooks headers for GitLab. Maximum 1 MiB. This never approves content or creates a pull request.",
        "security": [],
        "parameters": [
          {
            "name": "provider",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "github",
                "gitlab",
                "bitbucket"
              ]
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "description": "Provider event body preserved byte-for-byte for signature verification."
              }
            }
          }
        },
        "responses": {
          "202": {
            "description": "Verified event accepted or unsupported event ignored."
          },
          "400": {
            "description": "Invalid event."
          },
          "401": {
            "description": "Signature invalid."
          },
          "413": {
            "description": "Body too large."
          },
          "429": {
            "description": "Rate limited."
          },
          "503": {
            "description": "Dependency or maintenance unavailable."
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "Catalog": {
        "type": "array",
        "items": {
          "type": "object",
          "properties": {
            "provider": {
              "type": "string",
              "enum": [
                "github",
                "gitlab",
                "bitbucket"
              ]
            },
            "enabled": {
              "type": "boolean"
            },
            "permissions": {
              "type": "string"
            }
          },
          "required": [
            "provider",
            "enabled",
            "permissions"
          ]
        }
      },
      "Connections": {
        "type": "array",
        "items": {
          "type": "object",
          "properties": {
            "id": {
              "type": "string",
              "format": "uuid",
              "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
            },
            "workspaceId": {
              "type": "string",
              "format": "uuid",
              "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
            },
            "actorId": {
              "type": "string",
              "format": "uuid",
              "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
            },
            "provider": {
              "type": "string",
              "enum": [
                "github",
                "gitlab",
                "bitbucket"
              ]
            },
            "name": {
              "type": "string"
            },
            "state": {
              "type": "string",
              "enum": [
                "pending",
                "connected",
                "reconnect",
                "disabled"
              ]
            },
            "version": {
              "type": "integer",
              "exclusiveMinimum": 0,
              "maximum": 9007199254740991
            }
          },
          "required": [
            "id",
            "workspaceId",
            "actorId",
            "provider",
            "name",
            "state",
            "version"
          ]
        }
      },
      "Mapping": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "minLength": 1,
            "maxLength": 100
          },
          "grantId": {
            "type": "string",
            "format": "uuid",
            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
          },
          "repository": {
            "type": "string",
            "minLength": 1,
            "maxLength": 300
          },
          "repositoryId": {
            "type": "string",
            "minLength": 1,
            "maxLength": 100
          },
          "gitBranch": {
            "type": "string",
            "minLength": 1,
            "maxLength": 250
          },
          "files": {
            "minItems": 1,
            "maxItems": 20,
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "path": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 500
                },
                "locale": {
                  "type": "string",
                  "minLength": 2,
                  "maxLength": 40
                },
                "group": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 100,
                  "pattern": "^[\\w.-]+$"
                },
                "format": {
                  "type": "string",
                  "enum": [
                    "arb",
                    "json"
                  ]
                },
                "messageFormat": {
                  "type": "string",
                  "enum": [
                    "plain",
                    "icu"
                  ]
                },
                "nested": {
                  "type": "boolean"
                }
              },
              "required": [
                "path",
                "locale",
                "group",
                "format",
                "messageFormat",
                "nested"
              ],
              "additionalProperties": false
            }
          },
          "id": {
            "type": "string",
            "format": "uuid",
            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
          },
          "enabled": {
            "type": "boolean"
          },
          "version": {
            "type": "integer",
            "exclusiveMinimum": 0,
            "maximum": 9007199254740991
          },
          "openJobId": {
            "anyOf": [
              {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "name",
          "grantId",
          "repository",
          "repositoryId",
          "gitBranch",
          "files",
          "id",
          "enabled",
          "version",
          "openJobId"
        ],
        "additionalProperties": false
      },
      "Mappings": {
        "type": "array",
        "items": {
          "type": "object",
          "properties": {
            "name": {
              "type": "string",
              "minLength": 1,
              "maxLength": 100
            },
            "grantId": {
              "type": "string",
              "format": "uuid",
              "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
            },
            "repository": {
              "type": "string",
              "minLength": 1,
              "maxLength": 300
            },
            "repositoryId": {
              "type": "string",
              "minLength": 1,
              "maxLength": 100
            },
            "gitBranch": {
              "type": "string",
              "minLength": 1,
              "maxLength": 250
            },
            "files": {
              "minItems": 1,
              "maxItems": 20,
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "path": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 500
                  },
                  "locale": {
                    "type": "string",
                    "minLength": 2,
                    "maxLength": 40
                  },
                  "group": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 100,
                    "pattern": "^[\\w.-]+$"
                  },
                  "format": {
                    "type": "string",
                    "enum": [
                      "arb",
                      "json"
                    ]
                  },
                  "messageFormat": {
                    "type": "string",
                    "enum": [
                      "plain",
                      "icu"
                    ]
                  },
                  "nested": {
                    "type": "boolean"
                  }
                },
                "required": [
                  "path",
                  "locale",
                  "group",
                  "format",
                  "messageFormat",
                  "nested"
                ],
                "additionalProperties": false
              }
            },
            "id": {
              "type": "string",
              "format": "uuid",
              "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
            },
            "enabled": {
              "type": "boolean"
            },
            "version": {
              "type": "integer",
              "exclusiveMinimum": 0,
              "maximum": 9007199254740991
            },
            "openJobId": {
              "anyOf": [
                {
                  "type": "string",
                  "format": "uuid",
                  "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
                },
                {
                  "type": "null"
                }
              ]
            }
          },
          "required": [
            "name",
            "grantId",
            "repository",
            "repositoryId",
            "gitBranch",
            "files",
            "id",
            "enabled",
            "version",
            "openJobId"
          ],
          "additionalProperties": false
        }
      },
      "MappingInput": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "minLength": 1,
            "maxLength": 100
          },
          "grantId": {
            "type": "string",
            "format": "uuid",
            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
          },
          "repository": {
            "type": "string",
            "minLength": 1,
            "maxLength": 300
          },
          "repositoryId": {
            "type": "string",
            "minLength": 1,
            "maxLength": 100
          },
          "gitBranch": {
            "type": "string",
            "minLength": 1,
            "maxLength": 250
          },
          "files": {
            "minItems": 1,
            "maxItems": 20,
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "path": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 500
                },
                "locale": {
                  "type": "string",
                  "minLength": 2,
                  "maxLength": 40
                },
                "group": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 100,
                  "pattern": "^[\\w.-]+$"
                },
                "format": {
                  "type": "string",
                  "enum": [
                    "arb",
                    "json"
                  ]
                },
                "messageFormat": {
                  "type": "string",
                  "enum": [
                    "plain",
                    "icu"
                  ]
                },
                "nested": {
                  "type": "boolean"
                }
              },
              "required": [
                "path",
                "locale",
                "group",
                "format",
                "messageFormat",
                "nested"
              ],
              "additionalProperties": false
            }
          }
        },
        "required": [
          "name",
          "grantId",
          "repository",
          "repositoryId",
          "gitBranch",
          "files"
        ],
        "additionalProperties": false
      },
      "Authorization": {
        "type": "object",
        "properties": {
          "provider": {
            "type": "string",
            "enum": [
              "github",
              "gitlab",
              "bitbucket"
            ]
          },
          "existing": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
              },
              "version": {
                "type": "integer",
                "exclusiveMinimum": 0,
                "maximum": 9007199254740991
              }
            },
            "required": [
              "id",
              "version"
            ],
            "additionalProperties": false
          }
        },
        "required": [
          "provider"
        ],
        "additionalProperties": false
      },
      "AuthorizationResult": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
          },
          "url": {
            "type": "string",
            "format": "uri"
          }
        },
        "required": [
          "id",
          "url"
        ]
      },
      "Disabled": {
        "type": "object",
        "properties": {
          "disabled": {
            "type": "boolean",
            "const": true
          }
        },
        "required": [
          "disabled"
        ]
      },
      "DiscoveryInput": {
        "type": "object",
        "properties": {
          "grantId": {
            "type": "string",
            "format": "uuid",
            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
          },
          "kind": {
            "type": "string",
            "enum": [
              "repositories",
              "branches",
              "files"
            ]
          },
          "repository": {
            "default": "",
            "type": "string",
            "maxLength": 300
          },
          "branch": {
            "default": "",
            "type": "string",
            "maxLength": 250
          }
        },
        "required": [
          "grantId",
          "kind"
        ],
        "additionalProperties": false
      },
      "Discovery": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
          },
          "grantId": {
            "type": "string",
            "format": "uuid",
            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
          },
          "kind": {
            "type": "string",
            "enum": [
              "repositories",
              "branches",
              "files"
            ]
          },
          "repository": {
            "type": "string"
          },
          "branch": {
            "type": "string"
          },
          "state": {
            "type": "string",
            "enum": [
              "queued",
              "completed",
              "failed"
            ]
          },
          "result": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string"
                },
                "name": {
                  "type": "string"
                },
                "stableId": {
                  "type": "string"
                }
              },
              "required": [
                "id",
                "name"
              ]
            }
          },
          "error": {
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "id",
          "grantId",
          "kind",
          "repository",
          "branch",
          "state",
          "result",
          "error"
        ]
      },
      "Binding": {
        "type": "object",
        "properties": {
          "keyId": {
            "type": "string",
            "format": "uuid",
            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
          },
          "group": {
            "type": "string",
            "minLength": 1,
            "maxLength": 100
          },
          "externalName": {
            "type": "string",
            "minLength": 1,
            "maxLength": 200
          }
        },
        "required": [
          "keyId",
          "group",
          "externalName"
        ],
        "additionalProperties": false
      },
      "Bindings": {
        "type": "array",
        "items": {
          "type": "object",
          "properties": {
            "keyId": {
              "type": "string",
              "format": "uuid",
              "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
            },
            "group": {
              "type": "string",
              "minLength": 1,
              "maxLength": 100
            },
            "externalName": {
              "type": "string",
              "minLength": 1,
              "maxLength": 200
            },
            "name": {
              "type": "string"
            }
          },
          "required": [
            "keyId",
            "group",
            "externalName",
            "name"
          ],
          "additionalProperties": false
        }
      },
      "Rename": {
        "type": "object",
        "properties": {
          "keyId": {
            "type": "string",
            "format": "uuid",
            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
          },
          "group": {
            "type": "string",
            "minLength": 1,
            "maxLength": 100
          },
          "externalName": {
            "type": "string",
            "minLength": 1,
            "maxLength": 200
          },
          "oldName": {
            "type": "string",
            "minLength": 1,
            "maxLength": 200
          },
          "approved": {
            "type": "boolean",
            "const": true
          }
        },
        "required": [
          "keyId",
          "group",
          "externalName",
          "oldName",
          "approved"
        ],
        "additionalProperties": false
      },
      "Assigned": {
        "type": "object",
        "properties": {
          "assigned": {
            "type": "boolean",
            "const": true
          }
        },
        "required": [
          "assigned"
        ]
      },
      "Unassigned": {
        "type": "array",
        "items": {
          "type": "object",
          "properties": {
            "keyId": {
              "type": "string",
              "format": "uuid",
              "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
            },
            "name": {
              "type": "string"
            }
          },
          "required": [
            "keyId",
            "name"
          ]
        }
      },
      "Enable": {
        "type": "object",
        "properties": {
          "version": {
            "type": "integer",
            "exclusiveMinimum": 0,
            "maximum": 9007199254740991
          },
          "enabled": {
            "type": "boolean"
          }
        },
        "required": [
          "version",
          "enabled"
        ],
        "additionalProperties": false
      },
      "MappingFiles": {
        "type": "object",
        "properties": {
          "version": {
            "type": "integer",
            "exclusiveMinimum": 0,
            "maximum": 9007199254740991
          },
          "approved": {
            "type": "boolean",
            "const": true
          },
          "files": {
            "minItems": 1,
            "maxItems": 20,
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "path": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 500
                },
                "locale": {
                  "type": "string",
                  "minLength": 2,
                  "maxLength": 40
                },
                "group": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 100,
                  "pattern": "^[\\w.-]+$"
                },
                "format": {
                  "type": "string",
                  "enum": [
                    "arb",
                    "json"
                  ]
                },
                "messageFormat": {
                  "type": "string",
                  "enum": [
                    "plain",
                    "icu"
                  ]
                },
                "nested": {
                  "type": "boolean"
                }
              },
              "required": [
                "path",
                "locale",
                "group",
                "format",
                "messageFormat",
                "nested"
              ],
              "additionalProperties": false
            }
          }
        },
        "required": [
          "version",
          "approved",
          "files"
        ],
        "additionalProperties": false
      },
      "Preview": {
        "type": "object",
        "properties": {
          "direction": {
            "type": "string",
            "enum": [
              "import",
              "export"
            ]
          }
        },
        "required": [
          "direction"
        ],
        "additionalProperties": false
      },
      "Job": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
          },
          "mappingId": {
            "type": "string",
            "format": "uuid",
            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
          },
          "direction": {
            "type": "string",
            "enum": [
              "import",
              "export"
            ]
          },
          "state": {
            "type": "string",
            "enum": [
              "queued",
              "processing",
              "ready",
              "approved",
              "sending",
              "open",
              "completed",
              "failed",
              "outcome_unknown",
              "cancelled",
              "expired"
            ]
          },
          "version": {
            "type": "integer",
            "exclusiveMinimum": 0,
            "maximum": 9007199254740991
          },
          "error": {
            "type": [
              "string",
              "null"
            ]
          },
          "expiresAt": {
            "type": "string",
            "format": "date-time",
            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
          },
          "request": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string"
                  },
                  "url": {
                    "type": "string",
                    "format": "uri"
                  },
                  "branch": {
                    "type": "string"
                  },
                  "targetBranch": {
                    "type": "string"
                  },
                  "head": {
                    "type": "string"
                  },
                  "state": {
                    "type": "string",
                    "enum": [
                      "open",
                      "closed",
                      "merged"
                    ]
                  }
                },
                "required": [
                  "id",
                  "url",
                  "branch",
                  "targetBranch",
                  "head",
                  "state"
                ]
              },
              {
                "type": "null"
              }
            ]
          },
          "preview": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "direction": {
                    "type": "string",
                    "enum": [
                      "import",
                      "export"
                    ]
                  },
                  "commit": {
                    "type": "string"
                  },
                  "total": {
                    "type": "integer",
                    "minimum": -9007199254740991,
                    "maximum": 9007199254740991
                  },
                  "page": {
                    "type": "integer",
                    "exclusiveMinimum": 0,
                    "maximum": 9007199254740991
                  },
                  "changes": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "identity": {
                          "type": "string"
                        },
                        "field": {
                          "type": "string",
                          "enum": [
                            "definition",
                            "value",
                            "archived",
                            "notes"
                          ]
                        },
                        "locale": {
                          "type": [
                            "string",
                            "null"
                          ]
                        },
                        "base": {
                          "anyOf": [
                            {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "id": {
                                    "type": "string",
                                    "minLength": 1,
                                    "maxLength": 200
                                  },
                                  "format": {
                                    "type": "string",
                                    "enum": [
                                      "arb",
                                      "apple-xcstrings",
                                      "xliff12",
                                      "xliff20",
                                      "po",
                                      "pot",
                                      "resx",
                                      "android",
                                      "apple-strings",
                                      "apple-stringsdict",
                                      "properties",
                                      "yaml",
                                      "csv",
                                      "xlsx",
                                      "xls"
                                    ]
                                  },
                                  "scope": {
                                    "type": "string",
                                    "enum": [
                                      "file",
                                      "key",
                                      "locale",
                                      "parameter"
                                    ]
                                  },
                                  "kind": {
                                    "type": "string",
                                    "minLength": 1,
                                    "maxLength": 100
                                  },
                                  "locale": {
                                    "anyOf": [
                                      {
                                        "type": "string",
                                        "minLength": 2,
                                        "maxLength": 255
                                      },
                                      {
                                        "type": "null"
                                      }
                                    ]
                                  },
                                  "parameter": {
                                    "anyOf": [
                                      {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 100
                                      },
                                      {
                                        "type": "null"
                                      }
                                    ]
                                  },
                                  "text": {
                                    "type": "string"
                                  },
                                  "attributes": {
                                    "type": "object",
                                    "propertyNames": {
                                      "type": "string",
                                      "pattern": "^[A-Za-z_][A-Za-z0-9_.:-]*$"
                                    },
                                    "additionalProperties": {
                                      "type": "string"
                                    }
                                  }
                                },
                                "required": [
                                  "id",
                                  "format",
                                  "scope",
                                  "kind",
                                  "locale",
                                  "parameter",
                                  "text"
                                ],
                                "additionalProperties": false
                              }
                            },
                            {
                              "type": "object",
                              "properties": {
                                "name": {
                                  "type": "string",
                                  "minLength": 1,
                                  "maxLength": 200
                                },
                                "format": {
                                  "type": "string",
                                  "enum": [
                                    "plain",
                                    "icu"
                                  ]
                                },
                                "parameters": {
                                  "maxItems": 32,
                                  "type": "array",
                                  "items": {
                                    "type": "object",
                                    "properties": {
                                      "name": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 100
                                      },
                                      "type": {
                                        "type": "string",
                                        "enum": [
                                          "text",
                                          "number"
                                        ]
                                      }
                                    },
                                    "required": [
                                      "name",
                                      "type"
                                    ],
                                    "additionalProperties": false
                                  }
                                }
                              },
                              "required": [
                                "name",
                                "format",
                                "parameters"
                              ],
                              "additionalProperties": false
                            },
                            {
                              "type": "object",
                              "properties": {
                                "present": {
                                  "type": "boolean"
                                },
                                "value": {
                                  "type": [
                                    "string",
                                    "null"
                                  ]
                                }
                              },
                              "required": [
                                "present",
                                "value"
                              ],
                              "additionalProperties": false
                            },
                            {
                              "type": "boolean"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "local": {
                          "anyOf": [
                            {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "id": {
                                    "type": "string",
                                    "minLength": 1,
                                    "maxLength": 200
                                  },
                                  "format": {
                                    "type": "string",
                                    "enum": [
                                      "arb",
                                      "apple-xcstrings",
                                      "xliff12",
                                      "xliff20",
                                      "po",
                                      "pot",
                                      "resx",
                                      "android",
                                      "apple-strings",
                                      "apple-stringsdict",
                                      "properties",
                                      "yaml",
                                      "csv",
                                      "xlsx",
                                      "xls"
                                    ]
                                  },
                                  "scope": {
                                    "type": "string",
                                    "enum": [
                                      "file",
                                      "key",
                                      "locale",
                                      "parameter"
                                    ]
                                  },
                                  "kind": {
                                    "type": "string",
                                    "minLength": 1,
                                    "maxLength": 100
                                  },
                                  "locale": {
                                    "anyOf": [
                                      {
                                        "type": "string",
                                        "minLength": 2,
                                        "maxLength": 255
                                      },
                                      {
                                        "type": "null"
                                      }
                                    ]
                                  },
                                  "parameter": {
                                    "anyOf": [
                                      {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 100
                                      },
                                      {
                                        "type": "null"
                                      }
                                    ]
                                  },
                                  "text": {
                                    "type": "string"
                                  },
                                  "attributes": {
                                    "type": "object",
                                    "propertyNames": {
                                      "type": "string",
                                      "pattern": "^[A-Za-z_][A-Za-z0-9_.:-]*$"
                                    },
                                    "additionalProperties": {
                                      "type": "string"
                                    }
                                  }
                                },
                                "required": [
                                  "id",
                                  "format",
                                  "scope",
                                  "kind",
                                  "locale",
                                  "parameter",
                                  "text"
                                ],
                                "additionalProperties": false
                              }
                            },
                            {
                              "type": "object",
                              "properties": {
                                "name": {
                                  "type": "string",
                                  "minLength": 1,
                                  "maxLength": 200
                                },
                                "format": {
                                  "type": "string",
                                  "enum": [
                                    "plain",
                                    "icu"
                                  ]
                                },
                                "parameters": {
                                  "maxItems": 32,
                                  "type": "array",
                                  "items": {
                                    "type": "object",
                                    "properties": {
                                      "name": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 100
                                      },
                                      "type": {
                                        "type": "string",
                                        "enum": [
                                          "text",
                                          "number"
                                        ]
                                      }
                                    },
                                    "required": [
                                      "name",
                                      "type"
                                    ],
                                    "additionalProperties": false
                                  }
                                }
                              },
                              "required": [
                                "name",
                                "format",
                                "parameters"
                              ],
                              "additionalProperties": false
                            },
                            {
                              "type": "object",
                              "properties": {
                                "present": {
                                  "type": "boolean"
                                },
                                "value": {
                                  "type": [
                                    "string",
                                    "null"
                                  ]
                                }
                              },
                              "required": [
                                "present",
                                "value"
                              ],
                              "additionalProperties": false
                            },
                            {
                              "type": "boolean"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "remote": {
                          "anyOf": [
                            {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "id": {
                                    "type": "string",
                                    "minLength": 1,
                                    "maxLength": 200
                                  },
                                  "format": {
                                    "type": "string",
                                    "enum": [
                                      "arb",
                                      "apple-xcstrings",
                                      "xliff12",
                                      "xliff20",
                                      "po",
                                      "pot",
                                      "resx",
                                      "android",
                                      "apple-strings",
                                      "apple-stringsdict",
                                      "properties",
                                      "yaml",
                                      "csv",
                                      "xlsx",
                                      "xls"
                                    ]
                                  },
                                  "scope": {
                                    "type": "string",
                                    "enum": [
                                      "file",
                                      "key",
                                      "locale",
                                      "parameter"
                                    ]
                                  },
                                  "kind": {
                                    "type": "string",
                                    "minLength": 1,
                                    "maxLength": 100
                                  },
                                  "locale": {
                                    "anyOf": [
                                      {
                                        "type": "string",
                                        "minLength": 2,
                                        "maxLength": 255
                                      },
                                      {
                                        "type": "null"
                                      }
                                    ]
                                  },
                                  "parameter": {
                                    "anyOf": [
                                      {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 100
                                      },
                                      {
                                        "type": "null"
                                      }
                                    ]
                                  },
                                  "text": {
                                    "type": "string"
                                  },
                                  "attributes": {
                                    "type": "object",
                                    "propertyNames": {
                                      "type": "string",
                                      "pattern": "^[A-Za-z_][A-Za-z0-9_.:-]*$"
                                    },
                                    "additionalProperties": {
                                      "type": "string"
                                    }
                                  }
                                },
                                "required": [
                                  "id",
                                  "format",
                                  "scope",
                                  "kind",
                                  "locale",
                                  "parameter",
                                  "text"
                                ],
                                "additionalProperties": false
                              }
                            },
                            {
                              "type": "object",
                              "properties": {
                                "name": {
                                  "type": "string",
                                  "minLength": 1,
                                  "maxLength": 200
                                },
                                "format": {
                                  "type": "string",
                                  "enum": [
                                    "plain",
                                    "icu"
                                  ]
                                },
                                "parameters": {
                                  "maxItems": 32,
                                  "type": "array",
                                  "items": {
                                    "type": "object",
                                    "properties": {
                                      "name": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 100
                                      },
                                      "type": {
                                        "type": "string",
                                        "enum": [
                                          "text",
                                          "number"
                                        ]
                                      }
                                    },
                                    "required": [
                                      "name",
                                      "type"
                                    ],
                                    "additionalProperties": false
                                  }
                                }
                              },
                              "required": [
                                "name",
                                "format",
                                "parameters"
                              ],
                              "additionalProperties": false
                            },
                            {
                              "type": "object",
                              "properties": {
                                "present": {
                                  "type": "boolean"
                                },
                                "value": {
                                  "type": [
                                    "string",
                                    "null"
                                  ]
                                }
                              },
                              "required": [
                                "present",
                                "value"
                              ],
                              "additionalProperties": false
                            },
                            {
                              "type": "boolean"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "conflict": {
                          "type": "boolean"
                        },
                        "removal": {
                          "type": "boolean"
                        },
                        "notes": {
                          "type": [
                            "string",
                            "null"
                          ]
                        }
                      },
                      "required": [
                        "identity",
                        "field",
                        "locale",
                        "base",
                        "local",
                        "remote",
                        "conflict",
                        "removal",
                        "notes"
                      ]
                    }
                  }
                },
                "required": [
                  "direction",
                  "commit",
                  "total",
                  "page",
                  "changes"
                ]
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "id",
          "mappingId",
          "direction",
          "state",
          "version",
          "error",
          "expiresAt",
          "request",
          "preview"
        ]
      },
      "Jobs": {
        "type": "array",
        "items": {
          "type": "object",
          "properties": {
            "id": {
              "type": "string",
              "format": "uuid",
              "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
            },
            "mappingId": {
              "type": "string",
              "format": "uuid",
              "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
            },
            "direction": {
              "type": "string",
              "enum": [
                "import",
                "export"
              ]
            },
            "state": {
              "type": "string",
              "enum": [
                "queued",
                "processing",
                "ready",
                "approved",
                "sending",
                "open",
                "completed",
                "failed",
                "outcome_unknown",
                "cancelled",
                "expired"
              ]
            },
            "version": {
              "type": "integer",
              "exclusiveMinimum": 0,
              "maximum": 9007199254740991
            },
            "error": {
              "type": [
                "string",
                "null"
              ]
            },
            "expiresAt": {
              "type": "string",
              "format": "date-time",
              "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
            },
            "request": {
              "anyOf": [
                {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string"
                    },
                    "url": {
                      "type": "string",
                      "format": "uri"
                    },
                    "branch": {
                      "type": "string"
                    },
                    "targetBranch": {
                      "type": "string"
                    },
                    "head": {
                      "type": "string"
                    },
                    "state": {
                      "type": "string",
                      "enum": [
                        "open",
                        "closed",
                        "merged"
                      ]
                    }
                  },
                  "required": [
                    "id",
                    "url",
                    "branch",
                    "targetBranch",
                    "head",
                    "state"
                  ]
                },
                {
                  "type": "null"
                }
              ]
            },
            "preview": {
              "anyOf": [
                {
                  "type": "object",
                  "properties": {
                    "direction": {
                      "type": "string",
                      "enum": [
                        "import",
                        "export"
                      ]
                    },
                    "commit": {
                      "type": "string"
                    },
                    "total": {
                      "type": "integer",
                      "minimum": -9007199254740991,
                      "maximum": 9007199254740991
                    },
                    "page": {
                      "type": "integer",
                      "exclusiveMinimum": 0,
                      "maximum": 9007199254740991
                    },
                    "changes": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "identity": {
                            "type": "string"
                          },
                          "field": {
                            "type": "string",
                            "enum": [
                              "definition",
                              "value",
                              "archived",
                              "notes"
                            ]
                          },
                          "locale": {
                            "type": [
                              "string",
                              "null"
                            ]
                          },
                          "base": {
                            "anyOf": [
                              {
                                "type": "array",
                                "items": {
                                  "type": "object",
                                  "properties": {
                                    "id": {
                                      "type": "string",
                                      "minLength": 1,
                                      "maxLength": 200
                                    },
                                    "format": {
                                      "type": "string",
                                      "enum": [
                                        "arb",
                                        "apple-xcstrings",
                                        "xliff12",
                                        "xliff20",
                                        "po",
                                        "pot",
                                        "resx",
                                        "android",
                                        "apple-strings",
                                        "apple-stringsdict",
                                        "properties",
                                        "yaml",
                                        "csv",
                                        "xlsx",
                                        "xls"
                                      ]
                                    },
                                    "scope": {
                                      "type": "string",
                                      "enum": [
                                        "file",
                                        "key",
                                        "locale",
                                        "parameter"
                                      ]
                                    },
                                    "kind": {
                                      "type": "string",
                                      "minLength": 1,
                                      "maxLength": 100
                                    },
                                    "locale": {
                                      "anyOf": [
                                        {
                                          "type": "string",
                                          "minLength": 2,
                                          "maxLength": 255
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "parameter": {
                                      "anyOf": [
                                        {
                                          "type": "string",
                                          "minLength": 1,
                                          "maxLength": 100
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "text": {
                                      "type": "string"
                                    },
                                    "attributes": {
                                      "type": "object",
                                      "propertyNames": {
                                        "type": "string",
                                        "pattern": "^[A-Za-z_][A-Za-z0-9_.:-]*$"
                                      },
                                      "additionalProperties": {
                                        "type": "string"
                                      }
                                    }
                                  },
                                  "required": [
                                    "id",
                                    "format",
                                    "scope",
                                    "kind",
                                    "locale",
                                    "parameter",
                                    "text"
                                  ],
                                  "additionalProperties": false
                                }
                              },
                              {
                                "type": "object",
                                "properties": {
                                  "name": {
                                    "type": "string",
                                    "minLength": 1,
                                    "maxLength": 200
                                  },
                                  "format": {
                                    "type": "string",
                                    "enum": [
                                      "plain",
                                      "icu"
                                    ]
                                  },
                                  "parameters": {
                                    "maxItems": 32,
                                    "type": "array",
                                    "items": {
                                      "type": "object",
                                      "properties": {
                                        "name": {
                                          "type": "string",
                                          "minLength": 1,
                                          "maxLength": 100
                                        },
                                        "type": {
                                          "type": "string",
                                          "enum": [
                                            "text",
                                            "number"
                                          ]
                                        }
                                      },
                                      "required": [
                                        "name",
                                        "type"
                                      ],
                                      "additionalProperties": false
                                    }
                                  }
                                },
                                "required": [
                                  "name",
                                  "format",
                                  "parameters"
                                ],
                                "additionalProperties": false
                              },
                              {
                                "type": "object",
                                "properties": {
                                  "present": {
                                    "type": "boolean"
                                  },
                                  "value": {
                                    "type": [
                                      "string",
                                      "null"
                                    ]
                                  }
                                },
                                "required": [
                                  "present",
                                  "value"
                                ],
                                "additionalProperties": false
                              },
                              {
                                "type": "boolean"
                              },
                              {
                                "type": "null"
                              }
                            ]
                          },
                          "local": {
                            "anyOf": [
                              {
                                "type": "array",
                                "items": {
                                  "type": "object",
                                  "properties": {
                                    "id": {
                                      "type": "string",
                                      "minLength": 1,
                                      "maxLength": 200
                                    },
                                    "format": {
                                      "type": "string",
                                      "enum": [
                                        "arb",
                                        "apple-xcstrings",
                                        "xliff12",
                                        "xliff20",
                                        "po",
                                        "pot",
                                        "resx",
                                        "android",
                                        "apple-strings",
                                        "apple-stringsdict",
                                        "properties",
                                        "yaml",
                                        "csv",
                                        "xlsx",
                                        "xls"
                                      ]
                                    },
                                    "scope": {
                                      "type": "string",
                                      "enum": [
                                        "file",
                                        "key",
                                        "locale",
                                        "parameter"
                                      ]
                                    },
                                    "kind": {
                                      "type": "string",
                                      "minLength": 1,
                                      "maxLength": 100
                                    },
                                    "locale": {
                                      "anyOf": [
                                        {
                                          "type": "string",
                                          "minLength": 2,
                                          "maxLength": 255
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "parameter": {
                                      "anyOf": [
                                        {
                                          "type": "string",
                                          "minLength": 1,
                                          "maxLength": 100
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "text": {
                                      "type": "string"
                                    },
                                    "attributes": {
                                      "type": "object",
                                      "propertyNames": {
                                        "type": "string",
                                        "pattern": "^[A-Za-z_][A-Za-z0-9_.:-]*$"
                                      },
                                      "additionalProperties": {
                                        "type": "string"
                                      }
                                    }
                                  },
                                  "required": [
                                    "id",
                                    "format",
                                    "scope",
                                    "kind",
                                    "locale",
                                    "parameter",
                                    "text"
                                  ],
                                  "additionalProperties": false
                                }
                              },
                              {
                                "type": "object",
                                "properties": {
                                  "name": {
                                    "type": "string",
                                    "minLength": 1,
                                    "maxLength": 200
                                  },
                                  "format": {
                                    "type": "string",
                                    "enum": [
                                      "plain",
                                      "icu"
                                    ]
                                  },
                                  "parameters": {
                                    "maxItems": 32,
                                    "type": "array",
                                    "items": {
                                      "type": "object",
                                      "properties": {
                                        "name": {
                                          "type": "string",
                                          "minLength": 1,
                                          "maxLength": 100
                                        },
                                        "type": {
                                          "type": "string",
                                          "enum": [
                                            "text",
                                            "number"
                                          ]
                                        }
                                      },
                                      "required": [
                                        "name",
                                        "type"
                                      ],
                                      "additionalProperties": false
                                    }
                                  }
                                },
                                "required": [
                                  "name",
                                  "format",
                                  "parameters"
                                ],
                                "additionalProperties": false
                              },
                              {
                                "type": "object",
                                "properties": {
                                  "present": {
                                    "type": "boolean"
                                  },
                                  "value": {
                                    "type": [
                                      "string",
                                      "null"
                                    ]
                                  }
                                },
                                "required": [
                                  "present",
                                  "value"
                                ],
                                "additionalProperties": false
                              },
                              {
                                "type": "boolean"
                              },
                              {
                                "type": "null"
                              }
                            ]
                          },
                          "remote": {
                            "anyOf": [
                              {
                                "type": "array",
                                "items": {
                                  "type": "object",
                                  "properties": {
                                    "id": {
                                      "type": "string",
                                      "minLength": 1,
                                      "maxLength": 200
                                    },
                                    "format": {
                                      "type": "string",
                                      "enum": [
                                        "arb",
                                        "apple-xcstrings",
                                        "xliff12",
                                        "xliff20",
                                        "po",
                                        "pot",
                                        "resx",
                                        "android",
                                        "apple-strings",
                                        "apple-stringsdict",
                                        "properties",
                                        "yaml",
                                        "csv",
                                        "xlsx",
                                        "xls"
                                      ]
                                    },
                                    "scope": {
                                      "type": "string",
                                      "enum": [
                                        "file",
                                        "key",
                                        "locale",
                                        "parameter"
                                      ]
                                    },
                                    "kind": {
                                      "type": "string",
                                      "minLength": 1,
                                      "maxLength": 100
                                    },
                                    "locale": {
                                      "anyOf": [
                                        {
                                          "type": "string",
                                          "minLength": 2,
                                          "maxLength": 255
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "parameter": {
                                      "anyOf": [
                                        {
                                          "type": "string",
                                          "minLength": 1,
                                          "maxLength": 100
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "text": {
                                      "type": "string"
                                    },
                                    "attributes": {
                                      "type": "object",
                                      "propertyNames": {
                                        "type": "string",
                                        "pattern": "^[A-Za-z_][A-Za-z0-9_.:-]*$"
                                      },
                                      "additionalProperties": {
                                        "type": "string"
                                      }
                                    }
                                  },
                                  "required": [
                                    "id",
                                    "format",
                                    "scope",
                                    "kind",
                                    "locale",
                                    "parameter",
                                    "text"
                                  ],
                                  "additionalProperties": false
                                }
                              },
                              {
                                "type": "object",
                                "properties": {
                                  "name": {
                                    "type": "string",
                                    "minLength": 1,
                                    "maxLength": 200
                                  },
                                  "format": {
                                    "type": "string",
                                    "enum": [
                                      "plain",
                                      "icu"
                                    ]
                                  },
                                  "parameters": {
                                    "maxItems": 32,
                                    "type": "array",
                                    "items": {
                                      "type": "object",
                                      "properties": {
                                        "name": {
                                          "type": "string",
                                          "minLength": 1,
                                          "maxLength": 100
                                        },
                                        "type": {
                                          "type": "string",
                                          "enum": [
                                            "text",
                                            "number"
                                          ]
                                        }
                                      },
                                      "required": [
                                        "name",
                                        "type"
                                      ],
                                      "additionalProperties": false
                                    }
                                  }
                                },
                                "required": [
                                  "name",
                                  "format",
                                  "parameters"
                                ],
                                "additionalProperties": false
                              },
                              {
                                "type": "object",
                                "properties": {
                                  "present": {
                                    "type": "boolean"
                                  },
                                  "value": {
                                    "type": [
                                      "string",
                                      "null"
                                    ]
                                  }
                                },
                                "required": [
                                  "present",
                                  "value"
                                ],
                                "additionalProperties": false
                              },
                              {
                                "type": "boolean"
                              },
                              {
                                "type": "null"
                              }
                            ]
                          },
                          "conflict": {
                            "type": "boolean"
                          },
                          "removal": {
                            "type": "boolean"
                          },
                          "notes": {
                            "type": [
                              "string",
                              "null"
                            ]
                          }
                        },
                        "required": [
                          "identity",
                          "field",
                          "locale",
                          "base",
                          "local",
                          "remote",
                          "conflict",
                          "removal",
                          "notes"
                        ]
                      }
                    }
                  },
                  "required": [
                    "direction",
                    "commit",
                    "total",
                    "page",
                    "changes"
                  ]
                },
                {
                  "type": "null"
                }
              ]
            }
          },
          "required": [
            "id",
            "mappingId",
            "direction",
            "state",
            "version",
            "error",
            "expiresAt",
            "request",
            "preview"
          ]
        }
      },
      "Approval": {
        "type": "object",
        "properties": {
          "version": {
            "type": "integer",
            "exclusiveMinimum": 0,
            "maximum": 9007199254740991
          },
          "approved": {
            "type": "boolean",
            "const": true
          },
          "choices": {
            "maxItems": 70000,
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "index": {
                  "type": "integer",
                  "minimum": 0,
                  "maximum": 9007199254740991
                },
                "choice": {
                  "type": "string",
                  "enum": [
                    "local",
                    "remote",
                    "custom"
                  ]
                },
                "value": {
                  "anyOf": [
                    {
                      "type": "object",
                      "properties": {
                        "present": {
                          "type": "boolean"
                        },
                        "value": {
                          "type": [
                            "string",
                            "null"
                          ]
                        }
                      },
                      "required": [
                        "present",
                        "value"
                      ],
                      "additionalProperties": false
                    },
                    {
                      "type": "object",
                      "properties": {
                        "name": {
                          "type": "string",
                          "minLength": 1,
                          "maxLength": 200
                        },
                        "format": {
                          "type": "string",
                          "enum": [
                            "plain",
                            "icu"
                          ]
                        },
                        "parameters": {
                          "maxItems": 32,
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "name": {
                                "type": "string",
                                "minLength": 1,
                                "maxLength": 100
                              },
                              "type": {
                                "type": "string",
                                "enum": [
                                  "text",
                                  "number"
                                ]
                              }
                            },
                            "required": [
                              "name",
                              "type"
                            ],
                            "additionalProperties": false
                          }
                        }
                      },
                      "required": [
                        "name",
                        "format",
                        "parameters"
                      ],
                      "additionalProperties": false
                    },
                    {
                      "type": "boolean"
                    },
                    {
                      "maxItems": 100,
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "string",
                            "minLength": 1,
                            "maxLength": 200
                          },
                          "format": {
                            "type": "string",
                            "enum": [
                              "arb",
                              "apple-xcstrings",
                              "xliff12",
                              "xliff20",
                              "po",
                              "pot",
                              "resx",
                              "android",
                              "apple-strings",
                              "apple-stringsdict",
                              "properties",
                              "yaml",
                              "csv",
                              "xlsx",
                              "xls"
                            ]
                          },
                          "scope": {
                            "type": "string",
                            "enum": [
                              "file",
                              "key",
                              "locale",
                              "parameter"
                            ]
                          },
                          "kind": {
                            "type": "string",
                            "minLength": 1,
                            "maxLength": 100
                          },
                          "locale": {
                            "anyOf": [
                              {
                                "type": "string",
                                "minLength": 2,
                                "maxLength": 255
                              },
                              {
                                "type": "null"
                              }
                            ]
                          },
                          "parameter": {
                            "anyOf": [
                              {
                                "type": "string",
                                "minLength": 1,
                                "maxLength": 100
                              },
                              {
                                "type": "null"
                              }
                            ]
                          },
                          "text": {
                            "type": "string"
                          },
                          "attributes": {
                            "type": "object",
                            "propertyNames": {
                              "type": "string",
                              "pattern": "^[A-Za-z_][A-Za-z0-9_.:-]*$"
                            },
                            "additionalProperties": {
                              "type": "string"
                            }
                          }
                        },
                        "required": [
                          "id",
                          "format",
                          "scope",
                          "kind",
                          "locale",
                          "parameter",
                          "text"
                        ],
                        "additionalProperties": false
                      }
                    }
                  ]
                },
                "approveRemoval": {
                  "default": false,
                  "type": "boolean"
                }
              },
              "required": [
                "index",
                "choice"
              ],
              "additionalProperties": false
            }
          }
        },
        "required": [
          "version",
          "approved",
          "choices"
        ],
        "additionalProperties": false
      },
      "Version": {
        "type": "object",
        "properties": {
          "version": {
            "type": "integer",
            "exclusiveMinimum": 0,
            "maximum": 9007199254740991
          }
        },
        "required": [
          "version"
        ],
        "additionalProperties": false
      },
      "Error": {
        "type": "object",
        "properties": {
          "error": {
            "type": "string"
          },
          "message": {
            "type": "string"
          },
          "requestId": {
            "type": "string"
          }
        },
        "required": [
          "error",
          "message",
          "requestId"
        ]
      }
    },
    "securitySchemes": {
      "session": {
        "type": "apiKey",
        "in": "cookie",
        "name": "__Host-localisync-session"
      }
    }
  }
}
