{
 "openapi": "3.1.0",
 "info": {
  "title": "DevDash local service",
  "version": "0.1.0",
  "description": "The API of `devdash`, the service on this Mac behind app.devdash.pro. It listens on `127.0.0.1` only, and the `Host` header must be `127.0.0.1:<port>` or `localhost:<port>`.\n\nEvery operation is `POST /call/{operation}` with its arguments as the JSON body. Live events (`/events`), terminals (`/terminal`) and log tails (`/logs/tail`) are WebSockets and are described in `docs/api.md`.\n\nGenerated from the operation registry by `npm run openapi` in `v9/web`. Do not edit."
 },
 "servers": [
  {
   "url": "http://127.0.0.1:9999",
   "description": "The default port (`DEVDASH_PORT`)"
  }
 ],
 "security": [
  {
   "session": []
  },
  {
   "pairingKey": []
  }
 ],
 "tags": [
  {
   "name": "Transport",
   "description": "Health and pairing."
  },
  {
   "name": "AI"
  },
  {
   "name": "APM"
  },
  {
   "name": "Agents"
  },
  {
   "name": "App"
  },
  {
   "name": "Automation"
  },
  {
   "name": "Chat"
  },
  {
   "name": "Cloudflare"
  },
  {
   "name": "Database"
  },
  {
   "name": "Datastore"
  },
  {
   "name": "Delivery"
  },
  {
   "name": "Epic"
  },
  {
   "name": "Favorites"
  },
  {
   "name": "Followups"
  },
  {
   "name": "IP geolocation"
  },
  {
   "name": "Inbox"
  },
  {
   "name": "Incident"
  },
  {
   "name": "Intake"
  },
  {
   "name": "Integration"
  },
  {
   "name": "Investigation"
  },
  {
   "name": "Issue"
  },
  {
   "name": "Jev"
  },
  {
   "name": "Kubernetes"
  },
  {
   "name": "Legacy"
  },
  {
   "name": "Live"
  },
  {
   "name": "Local"
  },
  {
   "name": "Localmodel"
  },
  {
   "name": "Logs"
  },
  {
   "name": "MCP"
  },
  {
   "name": "Monitor"
  },
  {
   "name": "New Relic"
  },
  {
   "name": "Notifications"
  },
  {
   "name": "Overview"
  },
  {
   "name": "Plan"
  },
  {
   "name": "Presets"
  },
  {
   "name": "Profiles"
  },
  {
   "name": "Project"
  },
  {
   "name": "Pull requests"
  },
  {
   "name": "Release"
  },
  {
   "name": "Remote"
  },
  {
   "name": "Report"
  },
  {
   "name": "Repository"
  },
  {
   "name": "Repository browser"
  },
  {
   "name": "Run"
  },
  {
   "name": "Sandbox"
  },
  {
   "name": "Screen"
  },
  {
   "name": "Search"
  },
  {
   "name": "Security"
  },
  {
   "name": "Sentry"
  },
  {
   "name": "Service"
  },
  {
   "name": "Sessions"
  },
  {
   "name": "Task"
  },
  {
   "name": "Template"
  },
  {
   "name": "Terminal"
  },
  {
   "name": "Tests"
  },
  {
   "name": "Timeline"
  },
  {
   "name": "Webhook"
  },
  {
   "name": "Webhooks"
  },
  {
   "name": "Work"
  }
 ],
 "paths": {
  "/health": {
   "get": {
    "operationId": "health",
    "summary": "Service status",
    "description": "Answers without a token or an Origin. `paired` is true only for a bearer token that is valid for this origin.",
    "tags": [
     "Transport"
    ],
    "security": [],
    "responses": {
     "200": {
      "description": "Running.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Health"
        }
       }
      }
     }
    }
   }
  },
  "/pair": {
   "post": {
    "operationId": "pair",
    "summary": "Pair a browser",
    "description": "With the pairing key or a one-time code. Allowed origins only; 10 attempts a minute.",
    "tags": [
     "Transport"
    ],
    "security": [],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "properties": {
         "key": {
          "type": "string"
         }
        },
        "required": [
         "key"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "A session token bound to this origin.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Paired"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/pair/code": {
   "post": {
    "operationId": "pairCode",
    "summary": "Mint a one-time pairing code",
    "description": "Only without an Origin, with the pairing key. Used by `devdash open`.",
    "tags": [
     "Transport"
    ],
    "security": [],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "properties": {
         "key": {
          "type": "string"
         }
        },
        "required": [
         "key"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "A code that pairs once, within `expiresIn` seconds.",
      "content": {
       "application/json": {
        "schema": {
         "type": "object",
         "properties": {
          "code": {
           "type": "string"
          },
          "expiresIn": {
           "type": "number"
          }
         },
         "required": [
          "code",
          "expiresIn"
         ]
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/pair/request": {
   "post": {
    "operationId": "pairRequest",
    "summary": "Ask this Mac to allow a browser",
    "description": "Shows a macOS dialog. Poll `/pair/request/{id}` for the answer.",
    "tags": [
     "Transport"
    ],
    "security": [],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "properties": {
         "name": {
          "type": "string"
         }
        }
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "Waiting for an answer.",
      "content": {
       "application/json": {
        "schema": {
         "type": "object",
         "properties": {
          "requestId": {
           "type": "string"
          },
          "expiresIn": {
           "type": "number"
          }
         },
         "required": [
          "requestId",
          "expiresIn"
         ]
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/pair/request/{id}": {
   "get": {
    "operationId": "pairRequestStatus",
    "summary": "The answer to a pairing request",
    "tags": [
     "Transport"
    ],
    "security": [],
    "parameters": [
     {
      "name": "id",
      "in": "path",
      "required": true,
      "schema": {
       "type": "string"
      }
     }
    ],
    "responses": {
     "200": {
      "description": "`pending`, `approved` (with the token, once), `denied` or `expired`.",
      "content": {
       "application/json": {
        "schema": {
         "type": "object",
         "properties": {
          "status": {
           "enum": [
            "pending",
            "approved",
            "denied",
            "expired"
           ]
          },
          "token": {
           "type": "string"
          },
          "expiresIn": {
           "type": "number"
          },
          "version": {
           "type": "number"
          }
         },
         "required": [
          "status"
         ]
        }
       }
      }
     }
    }
   }
  },
  "/call": {
   "post": {
    "operationId": "call",
    "summary": "Run any operation by name",
    "description": "The form the site uses. The same as `POST /call/{operation}` with `args` as the body.",
    "tags": [
     "Transport"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "properties": {
         "operation": {
          "type": "string"
         },
         "args": {
          "type": "object"
         }
        },
        "required": [
         "operation"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The operation's result.",
      "content": {
       "application/json": {
        "schema": {}
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/agents.outcomes": {
   "post": {
    "operationId": "agents.outcomes",
    "summary": "agents.outcomes",
    "description": "Needs **read** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `runs`, `tasks`, `pulls`, `automations`.",
    "tags": [
     "Agents"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "runs",
     "tasks",
     "pulls",
     "automations"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "days": {
          "type": "number",
          "description": "7, 30 or 90."
         }
        },
        "required": [
         "days",
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/AgentOutcomes"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/ai.agents": {
   "post": {
    "operationId": "ai.agents",
    "summary": "ai.agents",
    "description": "Needs **read** access. About the installation, not one project.\n\nChanges: nothing. Refetch on `dataChanged` naming: `ai`.",
    "tags": [
     "AI"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": false,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "ai"
    ],
    "requestBody": {
     "required": false,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/InventoryArgs"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "type": "array",
         "items": {
          "$ref": "#/components/schemas/AiSystemEntries"
         }
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/ai.brief": {
   "post": {
    "operationId": "ai.brief",
    "summary": "ai.brief",
    "description": "Needs **read** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `settings`.",
    "tags": [
     "AI"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "settings"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "key": {
          "type": "string",
          "description": "The ticket key, e.g. `ENGR-1`."
         },
         "fingerprint": {
          "type": [
           "string",
           "null"
          ],
          "description": "The ticket's fingerprint now, from `issue.fetch`. Given, the answer says whether the stored reading still describes it."
         }
        },
        "required": [
         "fingerprint",
         "key",
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "anyOf": [
          {
           "$ref": "#/components/schemas/StoredBrief"
          },
          {
           "type": "null"
          }
         ]
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/ai.brief.forget": {
   "post": {
    "operationId": "ai.brief.forget",
    "summary": "ai.brief.forget",
    "description": "Needs **act** access. About one project: `project` is its slug or id.\n\nChanges: `tasks`. Refetch on `dataChanged` naming: `settings`.",
    "tags": [
     "AI"
    ],
    "x-devdash-capability": "act",
    "x-devdash-project": true,
    "x-devdash-invalidates": [
     "tasks"
    ],
    "x-devdash-reads": [
     "settings"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "key": {
          "type": "string"
         }
        },
        "required": [
         "key",
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "type": "boolean"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/ai.brief.refresh": {
   "post": {
    "operationId": "ai.brief.refresh",
    "summary": "ai.brief.refresh",
    "description": "Needs **act** access. About one project: `project` is its slug or id.\n\nChanges: `tasks`. Refetch on `dataChanged` naming: `settings`.",
    "tags": [
     "AI"
    ],
    "x-devdash-capability": "act",
    "x-devdash-project": true,
    "x-devdash-invalidates": [
     "tasks"
    ],
    "x-devdash-reads": [
     "settings"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "key": {
          "type": "string",
          "description": "The ticket key, e.g. `ENGR-1`."
         },
         "fingerprint": {
          "type": [
           "string",
           "null"
          ],
          "description": "The ticket's fingerprint now, from `issue.fetch`. Given, the answer says whether the stored reading still describes it."
         }
        },
        "required": [
         "fingerprint",
         "key",
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/StoredBrief"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/ai.connectors": {
   "post": {
    "operationId": "ai.connectors",
    "summary": "ai.connectors",
    "description": "Needs **read** access. About the installation, not one project.\n\nChanges: nothing. Refetch on `dataChanged` naming: `ai`.",
    "tags": [
     "AI"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": false,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "ai"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/ConnectorsArgs"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/AiConnectors"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/ai.disable": {
   "post": {
    "operationId": "ai.disable",
    "summary": "ai.disable",
    "description": "Needs **admin** access. About the installation, not one project.\n\nChanges: `settings`. Refetch on `dataChanged` naming: `settings`.",
    "tags": [
     "AI"
    ],
    "x-devdash-capability": "admin",
    "x-devdash-project": false,
    "x-devdash-invalidates": [
     "settings"
    ],
    "x-devdash-reads": [
     "settings"
    ],
    "requestBody": {
     "required": false,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/NoArgs"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/AiState"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/ai.models": {
   "post": {
    "operationId": "ai.models",
    "summary": "ai.models",
    "description": "Needs **read** access. About the installation, not one project.\n\nChanges: nothing. Refetch on `dataChanged` naming: `settings`.",
    "tags": [
     "AI"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": false,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "settings"
    ],
    "requestBody": {
     "required": false,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/NoArgs"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/ModelSystems"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/ai.save": {
   "post": {
    "operationId": "ai.save",
    "summary": "ai.save",
    "description": "Needs **admin** access. About the installation, not one project.\n\nChanges: `settings`. Refetch on `dataChanged` naming: `settings`.",
    "tags": [
     "AI"
    ],
    "x-devdash-capability": "admin",
    "x-devdash-project": false,
    "x-devdash-invalidates": [
     "settings"
    ],
    "x-devdash-reads": [
     "settings"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/AiChoice"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/AiState"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/ai.session": {
   "post": {
    "operationId": "ai.session",
    "summary": "ai.session",
    "description": "Needs **read** access. About the installation, not one project.\n\nChanges: nothing. Refetch on `dataChanged` naming: `ai`.",
    "tags": [
     "AI"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": false,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "ai"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/SessionArgs"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/AiSessionDetail"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/ai.session.resume": {
   "post": {
    "operationId": "ai.session.resume",
    "summary": "ai.session.resume",
    "description": "Needs **operate** access. About one project: `project` is its slug or id.\n\nChanges: `terminals`. Refetch on `dataChanged` naming: `ai`.",
    "tags": [
     "AI"
    ],
    "x-devdash-capability": "operate",
    "x-devdash-project": true,
    "x-devdash-invalidates": [
     "terminals"
    ],
    "x-devdash-reads": [
     "ai"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "id": {
          "type": "string",
          "description": "The session."
         }
        },
        "required": [
         "id",
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Resumed"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/ai.sessions": {
   "post": {
    "operationId": "ai.sessions",
    "summary": "ai.sessions",
    "description": "Needs **read** access. About the installation, not one project.\n\nChanges: nothing. Refetch on `dataChanged` naming: `ai`.",
    "tags": [
     "AI"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": false,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "ai"
    ],
    "requestBody": {
     "required": false,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/SessionsArgs"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/AiSessionPage"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/ai.sessions.search": {
   "post": {
    "operationId": "ai.sessions.search",
    "summary": "ai.sessions.search",
    "description": "Needs **read** access. About the installation, not one project.\n\nChanges: nothing. Refetch on `dataChanged` naming: `ai`.",
    "tags": [
     "AI"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": false,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "ai"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/AiSearchArgs"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/AiSessionPage"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/ai.settings": {
   "post": {
    "operationId": "ai.settings",
    "summary": "ai.settings",
    "description": "Needs **admin** access. About the installation, not one project.\n\nChanges: nothing. Refetch on `dataChanged` naming: `settings`.",
    "tags": [
     "AI"
    ],
    "x-devdash-capability": "admin",
    "x-devdash-project": false,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "settings"
    ],
    "requestBody": {
     "required": false,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/NoArgs"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/AiState"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/ai.skill": {
   "post": {
    "operationId": "ai.skill",
    "summary": "ai.skill",
    "description": "Needs **read** access. About the installation, not one project.\n\nChanges: nothing. Refetch on `dataChanged` naming: `ai`.",
    "tags": [
     "AI"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": false,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "ai"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/SkillArgs"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/AiSkillDetail"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/ai.skill.install": {
   "post": {
    "operationId": "ai.skill.install",
    "summary": "ai.skill.install",
    "description": "Needs **admin** access. About the installation, not one project.\n\nChanges: `ai`. Refetch on `dataChanged` naming: `ai`.",
    "tags": [
     "AI"
    ],
    "x-devdash-capability": "admin",
    "x-devdash-project": false,
    "x-devdash-invalidates": [
     "ai"
    ],
    "x-devdash-reads": [
     "ai"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/SkillInstall"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/SkillSaved"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/ai.skill.save": {
   "post": {
    "operationId": "ai.skill.save",
    "summary": "ai.skill.save",
    "description": "Needs **admin** access. About the installation, not one project.\n\nChanges: `ai`. Refetch on `dataChanged` naming: `ai`.",
    "tags": [
     "AI"
    ],
    "x-devdash-capability": "admin",
    "x-devdash-project": false,
    "x-devdash-invalidates": [
     "ai"
    ],
    "x-devdash-reads": [
     "ai"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/SkillSave"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/SkillSaved"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/ai.skills": {
   "post": {
    "operationId": "ai.skills",
    "summary": "ai.skills",
    "description": "Needs **read** access. About the installation, not one project.\n\nChanges: nothing. Refetch on `dataChanged` naming: `ai`.",
    "tags": [
     "AI"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": false,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "ai"
    ],
    "requestBody": {
     "required": false,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/InventoryArgs"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "type": "array",
         "items": {
          "$ref": "#/components/schemas/AiSystemEntries"
         }
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/ai.skills.builtin": {
   "post": {
    "operationId": "ai.skills.builtin",
    "summary": "ai.skills.builtin",
    "description": "Needs **read** access. About the installation, not one project.\n\nChanges: nothing. Refetch on `dataChanged` naming: `ai`.",
    "tags": [
     "AI"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": false,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "ai"
    ],
    "requestBody": {
     "required": false,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/NoArgs"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "type": "array",
         "items": {
          "$ref": "#/components/schemas/BuiltInSkill"
         }
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/ai.stats": {
   "post": {
    "operationId": "ai.stats",
    "summary": "ai.stats",
    "description": "Needs **read** access. About the installation, not one project.\n\nChanges: nothing. Refetch on `dataChanged` naming: `ai`.",
    "tags": [
     "AI"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": false,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "ai"
    ],
    "requestBody": {
     "required": false,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/StatsArgs"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/AiStats"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/ai.system": {
   "post": {
    "operationId": "ai.system",
    "summary": "ai.system",
    "description": "Needs **read** access. About the installation, not one project.\n\nChanges: nothing. Refetch on `dataChanged` naming: `ai`, `mcp`.",
    "tags": [
     "AI"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": false,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "ai",
     "mcp"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/SystemArgs"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/AiSystemDetail"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/ai.systems": {
   "post": {
    "operationId": "ai.systems",
    "summary": "ai.systems",
    "description": "Needs **read** access. About the installation, not one project.\n\nChanges: nothing. Refetch on `dataChanged` naming: `ai`, `mcp`.",
    "tags": [
     "AI"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": false,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "ai",
     "mcp"
    ],
    "requestBody": {
     "required": false,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/NoArgs"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "type": "array",
         "items": {
          "$ref": "#/components/schemas/AiSystemCard"
         }
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/ai.test": {
   "post": {
    "operationId": "ai.test",
    "summary": "ai.test",
    "description": "Needs **admin** access. About the installation, not one project.\n\nChanges: nothing. Refetch on `dataChanged` naming: `settings`.",
    "tags": [
     "AI"
    ],
    "x-devdash-capability": "admin",
    "x-devdash-project": false,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "settings"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/AiChoice"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/AiTested"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/apm.calls": {
   "post": {
    "operationId": "apm.calls",
    "summary": "apm.calls",
    "description": "Needs **read** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `services`.",
    "tags": [
     "APM"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "services"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "kind": {
          "$ref": "#/components/schemas/ApmKind",
          "description": "`databases` or `external`."
         },
         "guid": {
          "type": "string",
          "description": "The application's entity guid."
         },
         "background": {
          "type": "boolean",
          "description": "Background (non-web) transactions instead of web ones."
         },
         "host": {
          "type": [
           "string",
           "null"
          ],
          "description": "Limit to one host."
         },
         "compare": {
          "type": "boolean",
          "description": "Also fetch the previous period, for comparison."
         },
         "minutes": {
          "type": [
           "number",
           "null"
          ],
          "description": "Minutes back from now. Default 60."
         },
         "from": {
          "type": [
           "number",
           "null"
          ],
          "description": "Epoch seconds. With `to`, replaces `minutes`."
         },
         "to": {
          "type": [
           "number",
           "null"
          ]
         }
        },
        "required": [
         "background",
         "compare",
         "from",
         "guid",
         "host",
         "kind",
         "minutes",
         "project",
         "to"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/ApmCalls"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/apm.explore": {
   "post": {
    "operationId": "apm.explore",
    "summary": "apm.explore",
    "description": "Needs **read** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `services`.",
    "tags": [
     "APM"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "services"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "kind": {
          "$ref": "#/components/schemas/ApmKind"
         },
         "filters": {
          "type": "array",
          "items": {
           "type": "array",
           "items": {
            "type": "string"
           },
           "minItems": 2,
           "maxItems": 2
          },
          "description": "Facet filters as `[dimension, value]` pairs, e.g. `[\"datastoreType\", \"MySQL\"]`. Dimensions the kind does not have are ignored by core."
         },
         "guid": {
          "type": "string",
          "description": "The application's entity guid."
         },
         "background": {
          "type": "boolean",
          "description": "Background (non-web) transactions instead of web ones."
         },
         "host": {
          "type": [
           "string",
           "null"
          ],
          "description": "Limit to one host."
         },
         "compare": {
          "type": "boolean",
          "description": "Also fetch the previous period, for comparison."
         },
         "minutes": {
          "type": [
           "number",
           "null"
          ],
          "description": "Minutes back from now. Default 60."
         },
         "from": {
          "type": [
           "number",
           "null"
          ],
          "description": "Epoch seconds. With `to`, replaces `minutes`."
         },
         "to": {
          "type": [
           "number",
           "null"
          ]
         }
        },
        "required": [
         "background",
         "compare",
         "filters",
         "from",
         "guid",
         "host",
         "kind",
         "minutes",
         "project",
         "to"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/ApmListing"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/apm.explore.detail": {
   "post": {
    "operationId": "apm.explore.detail",
    "summary": "apm.explore.detail",
    "description": "Needs **read** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `services`.",
    "tags": [
     "APM"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "services"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "kind": {
          "$ref": "#/components/schemas/ApmKind"
         },
         "dimensions": {
          "type": "array",
          "items": {
           "type": [
            "string",
            "null"
           ]
          },
          "description": "The row's `dimensions`, as `apm.explore` returned them."
         },
         "start": {
          "type": "number",
          "description": "The listing's bounds, so the detail charts the same period."
         },
         "end": {
          "type": "number"
         },
         "guid": {
          "type": "string",
          "description": "The application's entity guid."
         },
         "background": {
          "type": "boolean",
          "description": "Background (non-web) transactions instead of web ones."
         },
         "host": {
          "type": [
           "string",
           "null"
          ],
          "description": "Limit to one host."
         },
         "compare": {
          "type": "boolean",
          "description": "Also fetch the previous period, for comparison."
         },
         "minutes": {
          "type": [
           "number",
           "null"
          ],
          "description": "Minutes back from now. Default 60."
         },
         "from": {
          "type": [
           "number",
           "null"
          ],
          "description": "Epoch seconds. With `to`, replaces `minutes`."
         },
         "to": {
          "type": [
           "number",
           "null"
          ]
         }
        },
        "required": [
         "background",
         "compare",
         "dimensions",
         "end",
         "from",
         "guid",
         "host",
         "kind",
         "minutes",
         "project",
         "start",
         "to"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/ApmOverview"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/apm.overview": {
   "post": {
    "operationId": "apm.overview",
    "summary": "apm.overview",
    "description": "Needs **read** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `services`.",
    "tags": [
     "APM"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "services"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "guid": {
          "type": "string",
          "description": "The application's entity guid."
         },
         "background": {
          "type": "boolean",
          "description": "Background (non-web) transactions instead of web ones."
         },
         "host": {
          "type": [
           "string",
           "null"
          ],
          "description": "Limit to one host."
         },
         "compare": {
          "type": "boolean",
          "description": "Also fetch the previous period, for comparison."
         },
         "minutes": {
          "type": [
           "number",
           "null"
          ],
          "description": "Minutes back from now. Default 60."
         },
         "from": {
          "type": [
           "number",
           "null"
          ],
          "description": "Epoch seconds. With `to`, replaces `minutes`."
         },
         "to": {
          "type": [
           "number",
           "null"
          ]
         }
        },
        "required": [
         "background",
         "compare",
         "from",
         "guid",
         "host",
         "minutes",
         "project",
         "to"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/ApmOverview"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/app.locale": {
   "post": {
    "operationId": "app.locale",
    "summary": "app.locale",
    "description": "Needs **admin** access. About the installation, not one project.\n\nChanges: nothing. Refetch on `dataChanged` naming: `settings`.",
    "tags": [
     "App"
    ],
    "x-devdash-capability": "admin",
    "x-devdash-project": false,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "settings"
    ],
    "requestBody": {
     "required": false,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/NoArgs"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/AppLocale"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/app.notification_kinds": {
   "post": {
    "operationId": "app.notification_kinds",
    "summary": "app.notification_kinds",
    "description": "Needs **admin** access. About the installation, not one project.\n\nChanges: nothing. Refetch on `dataChanged` naming: `settings`.",
    "tags": [
     "App"
    ],
    "x-devdash-capability": "admin",
    "x-devdash-project": false,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "settings"
    ],
    "requestBody": {
     "required": false,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/NoArgs"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "type": "array",
         "items": {
          "$ref": "#/components/schemas/NotificationKind"
         }
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/app.preferences": {
   "post": {
    "operationId": "app.preferences",
    "summary": "app.preferences",
    "description": "Needs **admin** access. About the installation, not one project.\n\nChanges: nothing. Refetch on `dataChanged` naming: `settings`.",
    "tags": [
     "App"
    ],
    "x-devdash-capability": "admin",
    "x-devdash-project": false,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "settings"
    ],
    "requestBody": {
     "required": false,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/NoArgs"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/AppPreferences"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/app.preferences.save": {
   "post": {
    "operationId": "app.preferences.save",
    "summary": "app.preferences.save",
    "description": "Needs **admin** access. About the installation, not one project.\n\nChanges: `settings`, `projects`. Refetch on `dataChanged` naming: `settings`.",
    "tags": [
     "App"
    ],
    "x-devdash-capability": "admin",
    "x-devdash-project": false,
    "x-devdash-invalidates": [
     "settings",
     "projects"
    ],
    "x-devdash-reads": [
     "settings"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/AppPreferences"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/AppPreferences"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/automation.action": {
   "post": {
    "operationId": "automation.action",
    "summary": "automation.action",
    "description": "Needs **operate** access. About one project: `project` is its slug or id.\n\nChanges: `automations`, `runs`, `tasks`, `inbox`. Refetch on `dataChanged` naming: `automations`, `runs`.",
    "tags": [
     "Automation"
    ],
    "x-devdash-capability": "operate",
    "x-devdash-project": true,
    "x-devdash-invalidates": [
     "automations",
     "runs",
     "tasks",
     "inbox"
    ],
    "x-devdash-reads": [
     "automations",
     "runs"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "action": {
          "type": "string",
          "description": "`pause`, `save`, `enable`, `run`, `approve`, `cancel`, `retry` or `archive`."
         },
         "id": {
          "type": [
           "string",
           "null"
          ],
          "description": "The rule (or, for `approve`, `cancel` and `retry`, the run)."
         },
         "revision": {
          "type": [
           "number",
           "null"
          ],
          "description": "The revision the editor loaded, for `save` and `enable`: a rule that changed since is refused rather than overwritten."
         },
         "enabled": {
          "type": [
           "boolean",
           "null"
          ]
         },
         "paused": {
          "type": [
           "boolean",
           "null"
          ]
         },
         "definition": {
          "anyOf": [
           {
            "$ref": "#/components/schemas/JsonValue"
           },
           {
            "type": "null"
           }
          ],
          "description": "For `save`: core's `Definition`."
         }
        },
        "required": [
         "action",
         "definition",
         "enabled",
         "id",
         "paused",
         "project",
         "revision"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/AutomationOutcome"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/automation.backfill": {
   "post": {
    "operationId": "automation.backfill",
    "summary": "automation.backfill",
    "description": "Needs **operate** access. About one project: `project` is its slug or id.\n\nChanges: `automations`, `runs`. Refetch on `dataChanged` naming: `automations`, `runs`.",
    "tags": [
     "Automation"
    ],
    "x-devdash-capability": "operate",
    "x-devdash-project": true,
    "x-devdash-invalidates": [
     "automations",
     "runs"
    ],
    "x-devdash-reads": [
     "automations",
     "runs"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "id": {
          "type": "string",
          "description": "The rule to run on past events."
         },
         "hours": {
          "type": "number",
          "description": "How far back, in hours (up to 90 days)."
         },
         "openOnly": {
          "type": "boolean",
          "description": "Leave out pull requests that are no longer open."
         },
         "dryRun": {
          "type": "boolean",
          "description": "Only count what would run."
         }
        },
        "required": [
         "hours",
         "id",
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/BackfillResult"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/automation.draft.save": {
   "post": {
    "operationId": "automation.draft.save",
    "summary": "automation.draft.save",
    "description": "Needs **act** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `automations`, `runs`.",
    "tags": [
     "Automation"
    ],
    "x-devdash-capability": "act",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "automations",
     "runs"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "id": {
          "type": [
           "string",
           "null"
          ],
          "description": "The rule being edited; absent for a new one."
         },
         "session": {
          "type": "string",
          "description": "The editor session. Once a session discards its draft, a late save from that same session cannot bring it back."
         },
         "draft": {
          "anyOf": [
           {
            "$ref": "#/components/schemas/JsonValue"
           },
           {
            "type": "null"
           }
          ],
          "description": "`{definition, prior}` to keep, or `null` to discard."
         }
        },
        "required": [
         "draft",
         "id",
         "project",
         "session"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "type": "boolean"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/automation.marks": {
   "post": {
    "operationId": "automation.marks",
    "summary": "automation.marks",
    "description": "Needs **read** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `automations`, `runs`.",
    "tags": [
     "Automation"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "automations",
     "runs"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "kinds": {
          "type": "array",
          "items": {
           "type": "string"
          },
          "description": "Event kinds (`pull_opened`, `issue_created`…)."
         }
        },
        "required": [
         "kinds",
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/AutomationMarks"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/automation.preview": {
   "post": {
    "operationId": "automation.preview",
    "summary": "automation.preview",
    "description": "Needs **read** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `automations`, `runs`.",
    "tags": [
     "Automation"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "automations",
     "runs"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "definition": {
          "$ref": "#/components/schemas/JsonValue",
          "description": "The rule as the editor holds it: core's `Definition`."
         }
        },
        "required": [
         "definition",
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "type": "string"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/automations": {
   "post": {
    "operationId": "automations",
    "summary": "automations",
    "description": "Needs **read** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `automations`, `runs`.",
    "tags": [
     "Automation"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "automations",
     "runs"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "id": {
          "type": [
           "string",
           "null"
          ],
          "description": "The rule whose runs and decisions to include."
         }
        },
        "required": [
         "id",
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/AutomationsScreen"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/automations.runs": {
   "post": {
    "operationId": "automations.runs",
    "summary": "automations.runs",
    "description": "Needs **read** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `automations`, `runs`.",
    "tags": [
     "Automation"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "automations",
     "runs"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "state": {
          "type": "array",
          "items": {
           "type": "string"
          },
          "description": "`running`, `queued`, `awaiting`, `done`, `failed`, `stopped`."
         },
         "task": {
          "type": "array",
          "items": {
           "type": "string"
          },
          "description": "Task ids."
         },
         "step": {
          "type": "array",
          "items": {
           "type": "string"
          },
          "description": "Step keys (the run's current step)."
         },
         "page": {
          "type": "number",
          "description": "From 1."
         },
         "size": {
          "type": "number",
          "description": "10–200, default 50."
         }
        },
        "required": [
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/AllRunsPage"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/chat.clear": {
   "post": {
    "operationId": "chat.clear",
    "summary": "chat.clear",
    "description": "Needs **act** access. About one project: `project` is its slug or id.\n\nChanges: `inbox`. Refetch on `dataChanged` naming: `inbox`.",
    "tags": [
     "Chat"
    ],
    "x-devdash-capability": "act",
    "x-devdash-project": true,
    "x-devdash-invalidates": [
     "inbox"
    ],
    "x-devdash-reads": [
     "inbox"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "thread": {
          "type": "string",
          "description": "`chat:<id>` from `chat.new` or `chat.threads`, or `jira:<KEY>`."
         }
        },
        "required": [
         "project",
         "thread"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "type": "boolean"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/chat.forget": {
   "post": {
    "operationId": "chat.forget",
    "summary": "chat.forget",
    "description": "Needs **act** access. About one project: `project` is its slug or id.\n\nChanges: `inbox`. Refetch on `dataChanged` naming: `inbox`.",
    "tags": [
     "Chat"
    ],
    "x-devdash-capability": "act",
    "x-devdash-project": true,
    "x-devdash-invalidates": [
     "inbox"
    ],
    "x-devdash-reads": [
     "inbox"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "thread": {
          "type": "string",
          "description": "`chat:<id>` from `chat.new` or `chat.threads`, or `jira:<KEY>`."
         }
        },
        "required": [
         "project",
         "thread"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "type": "boolean"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/chat.history": {
   "post": {
    "operationId": "chat.history",
    "summary": "chat.history",
    "description": "Needs **read** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `inbox`.",
    "tags": [
     "Chat"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "inbox"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "thread": {
          "type": "string",
          "description": "`chat:<id>` from `chat.new` or `chat.threads`, or `jira:<KEY>`."
         }
        },
        "required": [
         "project",
         "thread"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/ChatSnapshot"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/chat.new": {
   "post": {
    "operationId": "chat.new",
    "summary": "chat.new",
    "description": "Needs **act** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `inbox`.",
    "tags": [
     "Chat"
    ],
    "x-devdash-capability": "act",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "inbox"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "properties": {
         "project": {
          "type": "string"
         }
        },
        "required": [
         "project"
        ],
        "additionalProperties": false
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/NewThread"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/chat.send": {
   "post": {
    "operationId": "chat.send",
    "summary": "chat.send",
    "description": "Needs **act** access. About one project: `project` is its slug or id.\n\nChanges: `inbox`. Refetch on `dataChanged` naming: `inbox`.",
    "tags": [
     "Chat"
    ],
    "x-devdash-capability": "act",
    "x-devdash-project": true,
    "x-devdash-invalidates": [
     "inbox"
    ],
    "x-devdash-reads": [
     "inbox"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "thread": {
          "type": "string"
         },
         "text": {
          "type": "string"
         }
        },
        "required": [
         "project",
         "text",
         "thread"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/ChatSnapshot"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/chat.threads": {
   "post": {
    "operationId": "chat.threads",
    "summary": "chat.threads",
    "description": "Needs **read** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `inbox`.",
    "tags": [
     "Chat"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "inbox"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "properties": {
         "project": {
          "type": "string"
         }
        },
        "required": [
         "project"
        ],
        "additionalProperties": false
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "type": "array",
         "items": {
          "$ref": "#/components/schemas/ChatThread"
         }
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/cloudflare.check": {
   "post": {
    "operationId": "cloudflare.check",
    "summary": "cloudflare.check",
    "description": "Needs **act** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `cloudflare`, `integrations`.",
    "tags": [
     "Cloudflare"
    ],
    "x-devdash-capability": "act",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "cloudflare",
     "integrations"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "properties": {
         "project": {
          "type": "string"
         }
        },
        "required": [
         "project"
        ],
        "additionalProperties": false
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/CloudflareCheckStarted"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/cloudflare.issue": {
   "post": {
    "operationId": "cloudflare.issue",
    "summary": "cloudflare.issue",
    "description": "Needs **read** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `cloudflare`, `integrations`.",
    "tags": [
     "Cloudflare"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "cloudflare",
     "integrations"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "id": {
          "type": "string"
         }
        },
        "required": [
         "id",
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/CloudflareIssueDetail"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/cloudflare.options": {
   "post": {
    "operationId": "cloudflare.options",
    "summary": "cloudflare.options",
    "description": "Needs **read** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `cloudflare`, `integrations`.",
    "tags": [
     "Cloudflare"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "cloudflare",
     "integrations"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "properties": {
         "project": {
          "type": "string"
         }
        },
        "required": [
         "project"
        ],
        "additionalProperties": false
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/CloudflareOptions"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/cloudflare.probe": {
   "post": {
    "operationId": "cloudflare.probe",
    "summary": "cloudflare.probe",
    "description": "Needs **read** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `cloudflare`, `integrations`.",
    "tags": [
     "Cloudflare"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "cloudflare",
     "integrations"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "properties": {
         "project": {
          "type": "string"
         }
        },
        "required": [
         "project"
        ],
        "additionalProperties": false
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/CloudflareProbe"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/cloudflare.url": {
   "post": {
    "operationId": "cloudflare.url",
    "summary": "cloudflare.url",
    "description": "Needs **read** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `cloudflare`, `integrations`.",
    "tags": [
     "Cloudflare"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "cloudflare",
     "integrations"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "zone": {
          "type": "string",
          "description": "The zone's name or id; without one, the zone the host belongs to."
         },
         "host": {
          "type": "string"
         },
         "path": {
          "type": "string",
          "description": "The normalised path, `/orders/:id`."
         },
         "range": {
          "type": "string",
          "description": "The page's window: `1h`, `6h`, `24h` (default), `7d` or `30d`, or `from`/`to` in seconds."
         },
         "from": {
          "type": "number"
         },
         "to": {
          "type": "number"
         }
        },
        "required": [
         "host",
         "path",
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/CloudflareUrlDetail"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/database.query": {
   "post": {
    "operationId": "database.query",
    "summary": "database.query",
    "description": "Needs **admin** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `integrations`, `live`.",
    "tags": [
     "Database"
    ],
    "x-devdash-capability": "admin",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "integrations",
     "live"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "sql": {
          "type": "string",
          "description": "One SELECT, as typed."
         },
         "connection": {
          "type": "string",
          "description": "`database` (the default) or `snowflake`."
         }
        },
        "required": [
         "project",
         "sql"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/DatabaseQueryResult"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/database.schema": {
   "post": {
    "operationId": "database.schema",
    "summary": "database.schema",
    "description": "Needs **admin** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `integrations`, `live`.",
    "tags": [
     "Database"
    ],
    "x-devdash-capability": "admin",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "integrations",
     "live"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "connection": {
          "type": "string",
          "description": "`database` (the default) or `snowflake`."
         }
        },
        "required": [
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/DatabaseSchema"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/database.source.pause": {
   "post": {
    "operationId": "database.source.pause",
    "summary": "database.source.pause",
    "description": "Needs **admin** access. About one project: `project` is its slug or id.\n\nChanges: `integrations`, `live`. Refetch on `dataChanged` naming: `integrations`, `live`.",
    "tags": [
     "Database"
    ],
    "x-devdash-capability": "admin",
    "x-devdash-project": true,
    "x-devdash-invalidates": [
     "integrations",
     "live"
    ],
    "x-devdash-reads": [
     "integrations",
     "live"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "id": {
          "type": "string"
         },
         "paused": {
          "type": "boolean"
         },
         "connection": {
          "type": "string",
          "description": "`database` (the default) or `snowflake`."
         }
        },
        "required": [
         "id",
         "paused",
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/DatabaseSources"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/database.source.remove": {
   "post": {
    "operationId": "database.source.remove",
    "summary": "database.source.remove",
    "description": "Needs **admin** access. About one project: `project` is its slug or id.\n\nChanges: `integrations`, `live`. Refetch on `dataChanged` naming: `integrations`, `live`.",
    "tags": [
     "Database"
    ],
    "x-devdash-capability": "admin",
    "x-devdash-project": true,
    "x-devdash-invalidates": [
     "integrations",
     "live"
    ],
    "x-devdash-reads": [
     "integrations",
     "live"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "id": {
          "type": "string"
         },
         "connection": {
          "type": "string",
          "description": "`database` (the default) or `snowflake`."
         }
        },
        "required": [
         "id",
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/DatabaseSources"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/database.source.save": {
   "post": {
    "operationId": "database.source.save",
    "summary": "database.source.save",
    "description": "Needs **admin** access. About one project: `project` is its slug or id.\n\nChanges: `integrations`, `live`. Refetch on `dataChanged` naming: `integrations`, `live`.",
    "tags": [
     "Database"
    ],
    "x-devdash-capability": "admin",
    "x-devdash-project": true,
    "x-devdash-invalidates": [
     "integrations",
     "live"
    ],
    "x-devdash-reads": [
     "integrations",
     "live"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "id": {
          "type": "string",
          "description": "Absent creates a source; its id comes from the label."
         },
         "config": {
          "$ref": "#/components/schemas/JsonValue",
          "description": "The source's settings: `label`, `query`, `cursorColumn`, `cursorType`, `timestampColumn`, `messageColumn`, and optionally `severityColumn`, `severityScale`, `typeColumn`, `entityIdColumn`, `actorColumn`, `linkColumn`, `messageFormat`, `variablesColumn`, `rawColumns`, `phpColumns`, `redactions`, `startFrom`, `backfill`, `paused`."
         },
         "connection": {
          "type": "string",
          "description": "`database` (the default) or `snowflake`."
         }
        },
        "required": [
         "config",
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/DatabaseSources"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/database.source.test": {
   "post": {
    "operationId": "database.source.test",
    "summary": "database.source.test",
    "description": "Needs **admin** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `integrations`, `live`.",
    "tags": [
     "Database"
    ],
    "x-devdash-capability": "admin",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "integrations",
     "live"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "config": {
          "$ref": "#/components/schemas/JsonValue",
          "description": "The settings being edited, saved or not."
         },
         "connection": {
          "type": "string",
          "description": "`database` (the default) or `snowflake`."
         }
        },
        "required": [
         "config",
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/DatabaseTestResult"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/database.sources": {
   "post": {
    "operationId": "database.sources",
    "summary": "database.sources",
    "description": "Needs **read** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `integrations`, `live`.",
    "tags": [
     "Database"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "integrations",
     "live"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "connection": {
          "type": "string",
          "description": "`database` (the default) or `snowflake`."
         }
        },
        "required": [
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/DatabaseSources"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/datastore.browse": {
   "post": {
    "operationId": "datastore.browse",
    "summary": "datastore.browse",
    "description": "Needs **admin** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `integrations`.",
    "tags": [
     "Datastore"
    ],
    "x-devdash-capability": "admin",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "integrations"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "id": {
          "type": "string"
         },
         "path": {
          "type": "array",
          "items": {
           "type": "string"
          }
         },
         "offset": {
          "type": "number"
         },
         "limit": {
          "type": "number",
          "description": "At most 200."
         },
         "sort": {
          "$ref": "#/components/schemas/DatastoreSort"
         },
         "filters": {
          "type": "array",
          "items": {
           "$ref": "#/components/schemas/DatastoreFilter"
          }
         }
        },
        "required": [
         "filters",
         "id",
         "limit",
         "offset",
         "path",
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/DatastoreTable"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/datastore.list": {
   "post": {
    "operationId": "datastore.list",
    "summary": "datastore.list",
    "description": "Needs **read** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `integrations`.",
    "tags": [
     "Datastore"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "integrations"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "properties": {
         "project": {
          "type": "string"
         }
        },
        "required": [
         "project"
        ],
        "additionalProperties": false
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/DatastoreList"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/datastore.query": {
   "post": {
    "operationId": "datastore.query",
    "summary": "datastore.query",
    "description": "Needs **admin** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `integrations`.",
    "tags": [
     "Datastore"
    ],
    "x-devdash-capability": "admin",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "integrations"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "id": {
          "type": "string"
         },
         "text": {
          "type": "string",
          "description": "As typed: SQL, a Redis command or a MongoDB JSON query."
         }
        },
        "required": [
         "id",
         "project",
         "text"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/DatastoreTable"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/datastore.remove": {
   "post": {
    "operationId": "datastore.remove",
    "summary": "datastore.remove",
    "description": "Needs **admin** access. About one project: `project` is its slug or id.\n\nChanges: `integrations`. Refetch on `dataChanged` naming: `integrations`.",
    "tags": [
     "Datastore"
    ],
    "x-devdash-capability": "admin",
    "x-devdash-project": true,
    "x-devdash-invalidates": [
     "integrations"
    ],
    "x-devdash-reads": [
     "integrations"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "id": {
          "type": "string"
         }
        },
        "required": [
         "id",
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/DatastoreRemoved"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/datastore.save": {
   "post": {
    "operationId": "datastore.save",
    "summary": "datastore.save",
    "description": "Needs **admin** access. About one project: `project` is its slug or id.\n\nChanges: `integrations`. Refetch on `dataChanged` naming: `integrations`.",
    "tags": [
     "Datastore"
    ],
    "x-devdash-capability": "admin",
    "x-devdash-project": true,
    "x-devdash-invalidates": [
     "integrations"
    ],
    "x-devdash-reads": [
     "integrations"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "id": {
          "type": "string",
          "description": "Absent to make a new connection."
         },
         "kind": {
          "type": "string"
         },
         "name": {
          "type": "string"
         },
         "config": {
          "$ref": "#/components/schemas/JsonValue"
         },
         "secret": {
          "type": "string",
          "description": "A new password, token or key. Absent or empty keeps the stored one."
         }
        },
        "required": [
         "config",
         "kind",
         "name",
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/DatastoreSaved"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/datastore.state": {
   "post": {
    "operationId": "datastore.state",
    "summary": "datastore.state",
    "description": "Needs **admin** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `integrations`.",
    "tags": [
     "Datastore"
    ],
    "x-devdash-capability": "admin",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "integrations"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "properties": {
         "project": {
          "type": "string"
         }
        },
        "required": [
         "project"
        ],
        "additionalProperties": false
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/DatastoreState"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/datastore.state.set": {
   "post": {
    "operationId": "datastore.state.set",
    "summary": "datastore.state.set",
    "description": "Needs **admin** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `integrations`.",
    "tags": [
     "Datastore"
    ],
    "x-devdash-capability": "admin",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "integrations"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "key": {
          "type": "string"
         },
         "value": {
          "type": [
           "string",
           "null"
          ],
          "description": "JSON text; none forgets the key."
         }
        },
        "required": [
         "key",
         "project",
         "value"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/DatastoreStateSaved"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/datastore.structure": {
   "post": {
    "operationId": "datastore.structure",
    "summary": "datastore.structure",
    "description": "Needs **admin** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `integrations`.",
    "tags": [
     "Datastore"
    ],
    "x-devdash-capability": "admin",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "integrations"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "id": {
          "type": "string"
         },
         "path": {
          "type": "array",
          "items": {
           "type": "string"
          },
          "description": "Where in the store: empty for the top."
         }
        },
        "required": [
         "id",
         "path",
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/DatastoreStructure"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/datastore.test": {
   "post": {
    "operationId": "datastore.test",
    "summary": "datastore.test",
    "description": "Needs **admin** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `integrations`.",
    "tags": [
     "Datastore"
    ],
    "x-devdash-capability": "admin",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "integrations"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "id": {
          "type": "string",
          "description": "A saved connection, whose stored secret is used when none is given."
         },
         "kind": {
          "type": "string"
         },
         "config": {
          "$ref": "#/components/schemas/JsonValue"
         },
         "secret": {
          "type": "string"
         }
        },
        "required": [
         "config",
         "kind",
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/DatastoreTested"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/datastore.tree": {
   "post": {
    "operationId": "datastore.tree",
    "summary": "datastore.tree",
    "description": "Needs **admin** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `integrations`.",
    "tags": [
     "Datastore"
    ],
    "x-devdash-capability": "admin",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "integrations"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "id": {
          "type": "string"
         },
         "path": {
          "type": "array",
          "items": {
           "type": "string"
          },
          "description": "Where in the store: empty for the top."
         }
        },
        "required": [
         "id",
         "path",
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/DatastoreTree"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/delivery.summary": {
   "post": {
    "operationId": "delivery.summary",
    "summary": "delivery.summary",
    "description": "Needs **read** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `pulls`, `monitors`, `runs`, `services`.",
    "tags": [
     "Delivery"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "pulls",
     "monitors",
     "runs",
     "services"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "days": {
          "type": "number",
          "description": "7, 30 or 90."
         }
        },
        "required": [
         "days",
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/DeliveryMetrics"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/epic.chat": {
   "post": {
    "operationId": "epic.chat",
    "summary": "epic.chat",
    "description": "Needs **read** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `tasks`.",
    "tags": [
     "Epic"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "tasks"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "id": {
          "type": "string"
         }
        },
        "required": [
         "id",
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/EpicChat"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/epic.chat.approve": {
   "post": {
    "operationId": "epic.chat.approve",
    "summary": "epic.chat.approve",
    "description": "Needs **act** access. About one project: `project` is its slug or id.\n\nChanges: `tasks`. Refetch on `dataChanged` naming: `tasks`.",
    "tags": [
     "Epic"
    ],
    "x-devdash-capability": "act",
    "x-devdash-project": true,
    "x-devdash-invalidates": [
     "tasks"
    ],
    "x-devdash-reads": [
     "tasks"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "approval": {
          "type": "string"
         },
         "allow": {
          "type": "boolean"
         },
         "remember": {
          "type": "boolean",
          "description": "Always allow this kind of request on this epic."
         }
        },
        "required": [
         "allow",
         "approval",
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "type": "boolean"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/epic.chat.reset": {
   "post": {
    "operationId": "epic.chat.reset",
    "summary": "epic.chat.reset",
    "description": "Needs **act** access. About one project: `project` is its slug or id.\n\nChanges: `tasks`. Refetch on `dataChanged` naming: `tasks`.",
    "tags": [
     "Epic"
    ],
    "x-devdash-capability": "act",
    "x-devdash-project": true,
    "x-devdash-invalidates": [
     "tasks"
    ],
    "x-devdash-reads": [
     "tasks"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "id": {
          "type": "string"
         }
        },
        "required": [
         "id",
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "type": "boolean"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/epic.chat.send": {
   "post": {
    "operationId": "epic.chat.send",
    "summary": "epic.chat.send",
    "description": "Needs **act** access. About one project: `project` is its slug or id.\n\nChanges: `tasks`. Refetch on `dataChanged` naming: `tasks`.",
    "tags": [
     "Epic"
    ],
    "x-devdash-capability": "act",
    "x-devdash-project": true,
    "x-devdash-invalidates": [
     "tasks"
    ],
    "x-devdash-reads": [
     "tasks"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "id": {
          "type": "string"
         },
         "text": {
          "type": "string"
         }
        },
        "required": [
         "id",
         "project",
         "text"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/EpicChat"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/epic.chat.stop": {
   "post": {
    "operationId": "epic.chat.stop",
    "summary": "epic.chat.stop",
    "description": "Needs **act** access. About one project: `project` is its slug or id.\n\nChanges: `tasks`. Refetch on `dataChanged` naming: `tasks`.",
    "tags": [
     "Epic"
    ],
    "x-devdash-capability": "act",
    "x-devdash-project": true,
    "x-devdash-invalidates": [
     "tasks"
    ],
    "x-devdash-reads": [
     "tasks"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "id": {
          "type": "string"
         }
        },
        "required": [
         "id",
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "type": "boolean"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/favorites": {
   "post": {
    "operationId": "favorites",
    "summary": "favorites",
    "description": "Needs **read** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `favorites`.",
    "tags": [
     "Favorites"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "favorites"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "properties": {
         "project": {
          "type": "string"
         }
        },
        "required": [
         "project"
        ],
        "additionalProperties": false
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "type": "array",
         "items": {
          "$ref": "#/components/schemas/Favorite"
         }
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/favorites.save": {
   "post": {
    "operationId": "favorites.save",
    "summary": "favorites.save",
    "description": "Needs **act** access. About one project: `project` is its slug or id.\n\nChanges: `favorites`. Refetch on `dataChanged` naming: `favorites`.",
    "tags": [
     "Favorites"
    ],
    "x-devdash-capability": "act",
    "x-devdash-project": true,
    "x-devdash-invalidates": [
     "favorites"
    ],
    "x-devdash-reads": [
     "favorites"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "item": {
          "$ref": "#/components/schemas/Favorite"
         },
         "saved": {
          "type": "boolean",
          "description": "`true` to save, `false` to remove."
         }
        },
        "required": [
         "item",
         "project",
         "saved"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "type": "array",
         "items": {
          "$ref": "#/components/schemas/Favorite"
         }
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/followups.check.remove": {
   "post": {
    "operationId": "followups.check.remove",
    "summary": "followups.check.remove",
    "description": "Needs **admin** access. About one project: `project` is its slug or id.\n\nChanges: `followups`, `inbox`. Refetch on `dataChanged` naming: `followups`.",
    "tags": [
     "Followups"
    ],
    "x-devdash-capability": "admin",
    "x-devdash-project": true,
    "x-devdash-invalidates": [
     "followups",
     "inbox"
    ],
    "x-devdash-reads": [
     "followups"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "id": {
          "type": "string"
         }
        },
        "required": [
         "id",
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "type": "boolean"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/followups.check.run": {
   "post": {
    "operationId": "followups.check.run",
    "summary": "followups.check.run",
    "description": "Needs **act** access. About one project: `project` is its slug or id.\n\nChanges: `followups`, `inbox`. Refetch on `dataChanged` naming: `followups`.",
    "tags": [
     "Followups"
    ],
    "x-devdash-capability": "act",
    "x-devdash-project": true,
    "x-devdash-invalidates": [
     "followups",
     "inbox"
    ],
    "x-devdash-reads": [
     "followups"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "id": {
          "type": "string"
         }
        },
        "required": [
         "id",
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/CheckRan"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/followups.check.save": {
   "post": {
    "operationId": "followups.check.save",
    "summary": "followups.check.save",
    "description": "Needs **admin** access. About one project: `project` is its slug or id.\n\nChanges: `followups`. Refetch on `dataChanged` naming: `followups`.",
    "tags": [
     "Followups"
    ],
    "x-devdash-capability": "admin",
    "x-devdash-project": true,
    "x-devdash-invalidates": [
     "followups"
    ],
    "x-devdash-reads": [
     "followups"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "check": {
          "$ref": "#/components/schemas/FollowupCheck"
         }
        },
        "required": [
         "check",
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/FollowupCheck"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/followups.check.test": {
   "post": {
    "operationId": "followups.check.test",
    "summary": "followups.check.test",
    "description": "Needs **act** access. About one project: `project` is its slug or id.\n\nChanges: `mcp`. Refetch on `dataChanged` naming: `followups`.",
    "tags": [
     "Followups"
    ],
    "x-devdash-capability": "act",
    "x-devdash-project": true,
    "x-devdash-invalidates": [
     "mcp"
    ],
    "x-devdash-reads": [
     "followups"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "check": {
          "$ref": "#/components/schemas/FollowupCheck",
          "description": "A saved or unsaved check, as the editor has it."
         }
        },
        "required": [
         "check",
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/CheckTest"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/followups.checks": {
   "post": {
    "operationId": "followups.checks",
    "summary": "followups.checks",
    "description": "Needs **read** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `followups`, `mcp`.",
    "tags": [
     "Followups"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "followups",
     "mcp"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "properties": {
         "project": {
          "type": "string"
         }
        },
        "required": [
         "project"
        ],
        "additionalProperties": false
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Checks"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/followups.item.done": {
   "post": {
    "operationId": "followups.item.done",
    "summary": "followups.item.done",
    "description": "Needs **act** access. About one project: `project` is its slug or id.\n\nChanges: `followups`, `inbox`. Refetch on `dataChanged` naming: `followups`.",
    "tags": [
     "Followups"
    ],
    "x-devdash-capability": "act",
    "x-devdash-project": true,
    "x-devdash-invalidates": [
     "followups",
     "inbox"
    ],
    "x-devdash-reads": [
     "followups"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "check": {
          "type": "string"
         },
         "key": {
          "type": "string"
         }
        },
        "required": [
         "check",
         "key",
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "type": "boolean"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/followups.item.mute": {
   "post": {
    "operationId": "followups.item.mute",
    "summary": "followups.item.mute",
    "description": "Needs **act** access. About one project: `project` is its slug or id.\n\nChanges: `followups`, `inbox`. Refetch on `dataChanged` naming: `followups`.",
    "tags": [
     "Followups"
    ],
    "x-devdash-capability": "act",
    "x-devdash-project": true,
    "x-devdash-invalidates": [
     "followups",
     "inbox"
    ],
    "x-devdash-reads": [
     "followups"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "check": {
          "type": "string"
         },
         "key": {
          "type": "string"
         },
         "kind": {
          "type": "string",
          "description": "`thread` or `person`."
         }
        },
        "required": [
         "check",
         "key",
         "kind",
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "type": "boolean"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/followups.item.reopen": {
   "post": {
    "operationId": "followups.item.reopen",
    "summary": "followups.item.reopen",
    "description": "Needs **act** access. About one project: `project` is its slug or id.\n\nChanges: `followups`, `inbox`. Refetch on `dataChanged` naming: `followups`.",
    "tags": [
     "Followups"
    ],
    "x-devdash-capability": "act",
    "x-devdash-project": true,
    "x-devdash-invalidates": [
     "followups",
     "inbox"
    ],
    "x-devdash-reads": [
     "followups"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "check": {
          "type": "string"
         },
         "key": {
          "type": "string"
         }
        },
        "required": [
         "check",
         "key",
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "type": "boolean"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/followups.item.snooze": {
   "post": {
    "operationId": "followups.item.snooze",
    "summary": "followups.item.snooze",
    "description": "Needs **act** access. About one project: `project` is its slug or id.\n\nChanges: `followups`, `inbox`. Refetch on `dataChanged` naming: `followups`.",
    "tags": [
     "Followups"
    ],
    "x-devdash-capability": "act",
    "x-devdash-project": true,
    "x-devdash-invalidates": [
     "followups",
     "inbox"
    ],
    "x-devdash-reads": [
     "followups"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "check": {
          "type": "string"
         },
         "key": {
          "type": "string"
         },
         "until": {
          "type": "number",
          "description": "Unix seconds."
         }
        },
        "required": [
         "check",
         "key",
         "project",
         "until"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "type": "boolean"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/followups.items": {
   "post": {
    "operationId": "followups.items",
    "summary": "followups.items",
    "description": "Needs **read** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `followups`.",
    "tags": [
     "Followups"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "followups"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "state": {
          "type": "string",
          "description": "`open` (default), `snoozed`, `done`, `resolved`, `all`."
         },
         "source": {
          "type": "string"
         },
         "who": {
          "type": "string"
         },
         "kind": {
          "type": "string"
         },
         "age": {
          "type": "string",
          "description": "`today`, `week`, `older`."
         },
         "check": {
          "type": "string"
         }
        },
        "required": [
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/FollowupItems"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/followups.mutes": {
   "post": {
    "operationId": "followups.mutes",
    "summary": "followups.mutes",
    "description": "Needs **read** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `followups`.",
    "tags": [
     "Followups"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "followups"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "properties": {
         "project": {
          "type": "string"
         }
        },
        "required": [
         "project"
        ],
        "additionalProperties": false
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "type": "array",
         "items": {
          "$ref": "#/components/schemas/FollowupMute"
         }
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/followups.unmute": {
   "post": {
    "operationId": "followups.unmute",
    "summary": "followups.unmute",
    "description": "Needs **act** access. About one project: `project` is its slug or id.\n\nChanges: `followups`, `inbox`. Refetch on `dataChanged` naming: `followups`.",
    "tags": [
     "Followups"
    ],
    "x-devdash-capability": "act",
    "x-devdash-project": true,
    "x-devdash-invalidates": [
     "followups",
     "inbox"
    ],
    "x-devdash-reads": [
     "followups"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "kind": {
          "type": "string"
         },
         "value": {
          "type": "string"
         }
        },
        "required": [
         "kind",
         "project",
         "value"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "type": "boolean"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/geoip.lookup": {
   "post": {
    "operationId": "geoip.lookup",
    "summary": "geoip.lookup",
    "description": "Needs **read** access. About the installation, not one project.\n\nChanges: nothing. Refetch on `dataChanged` naming: `settings`.",
    "tags": [
     "IP geolocation"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": false,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "settings"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/GeoipLookupArgs"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "type": "array",
         "items": {
          "$ref": "#/components/schemas/IpGeo"
         }
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/geoip.remove": {
   "post": {
    "operationId": "geoip.remove",
    "summary": "geoip.remove",
    "description": "Needs **admin** access. About the installation, not one project.\n\nChanges: `settings`, `monitors`. Refetch on `dataChanged` naming: `settings`.",
    "tags": [
     "IP geolocation"
    ],
    "x-devdash-capability": "admin",
    "x-devdash-project": false,
    "x-devdash-invalidates": [
     "settings",
     "monitors"
    ],
    "x-devdash-reads": [
     "settings"
    ],
    "requestBody": {
     "required": false,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/NoArgs"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/GeoipStatus"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/geoip.resolve": {
   "post": {
    "operationId": "geoip.resolve",
    "summary": "geoip.resolve",
    "description": "Needs **read** access. About the installation, not one project.\n\nChanges: nothing. Refetch on `dataChanged` naming: `settings`.",
    "tags": [
     "IP geolocation"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": false,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "settings"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/GeoipResolveArgs"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "type": "array",
         "items": {
          "$ref": "#/components/schemas/HostGeo"
         }
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/geoip.status": {
   "post": {
    "operationId": "geoip.status",
    "summary": "geoip.status",
    "description": "Needs **read** access. About the installation, not one project.\n\nChanges: nothing. Refetch on `dataChanged` naming: `settings`.",
    "tags": [
     "IP geolocation"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": false,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "settings"
    ],
    "requestBody": {
     "required": false,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/NoArgs"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/GeoipStatus"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/geoip.update": {
   "post": {
    "operationId": "geoip.update",
    "summary": "geoip.update",
    "description": "Needs **admin** access. About the installation, not one project.\n\nChanges: `settings`. Refetch on `dataChanged` naming: `settings`.",
    "tags": [
     "IP geolocation"
    ],
    "x-devdash-capability": "admin",
    "x-devdash-project": false,
    "x-devdash-invalidates": [
     "settings"
    ],
    "x-devdash-reads": [
     "settings"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/GeoipUpdateArgs"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/GeoipStatus"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/inbox": {
   "post": {
    "operationId": "inbox",
    "summary": "inbox",
    "description": "Needs **read** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `inbox`, `notifications`.",
    "tags": [
     "Inbox"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "inbox",
     "notifications"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "properties": {
         "project": {
          "type": "string"
         }
        },
        "required": [
         "project"
        ],
        "additionalProperties": false
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Inbox"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/inbox.save": {
   "post": {
    "operationId": "inbox.save",
    "summary": "inbox.save",
    "description": "Needs **act** access. About one project: `project` is its slug or id.\n\nChanges: `inbox`, `notifications`. Refetch on `dataChanged` naming: `inbox`, `notifications`.",
    "tags": [
     "Inbox"
    ],
    "x-devdash-capability": "act",
    "x-devdash-project": true,
    "x-devdash-invalidates": [
     "inbox",
     "notifications"
    ],
    "x-devdash-reads": [
     "inbox",
     "notifications"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "id": {
          "type": "string",
          "description": "The item's `id`."
         },
         "state": {
          "$ref": "#/components/schemas/ItemState"
         }
        },
        "required": [
         "id",
         "project",
         "state"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/ItemState"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/incident": {
   "post": {
    "operationId": "incident",
    "summary": "incident",
    "description": "Needs **read** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `monitors`, `sentry`, `logs`, `integrations`, `releases`, `live`, `runs`, `repositories`, `tests`.",
    "tags": [
     "Incident"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "monitors",
     "sentry",
     "logs",
     "integrations",
     "releases",
     "live",
     "runs",
     "repositories",
     "tests"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "id": {
          "type": "string",
          "description": "An incident id (`monitor.incidents`), a New Relic incident id, or a monitor id with `at`."
         },
         "from": {
          "type": "number",
          "description": "The window, ms; the default is 2 h before the start to 1 h after the end (or now)."
         },
         "to": {
          "type": "number"
         },
         "at": {
          "type": "number",
          "description": "With a monitor id: a moment in the firing, ms (a log alert marker on the Timeline)."
         }
        },
        "required": [
         "id",
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/IncidentView"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/incident.investigate": {
   "post": {
    "operationId": "incident.investigate",
    "summary": "incident.investigate",
    "description": "Needs **act** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `monitors`, `sentry`, `logs`, `integrations`, `releases`, `live`, `runs`, `repositories`, `tests`.",
    "tags": [
     "Incident"
    ],
    "x-devdash-capability": "act",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "monitors",
     "sentry",
     "logs",
     "integrations",
     "releases",
     "live",
     "runs",
     "repositories",
     "tests"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "id": {
          "type": "string",
          "description": "The incident id. The conversation is `investigation` `incident:<id>`."
         },
         "workspace": {
          "type": "string",
          "description": "The workspace whose repository the agent reads; remembered for the incident's app."
         },
         "agent": {
          "type": "string",
          "description": "`claude` or `codex`."
         },
         "question": {
          "type": "string"
         }
        },
        "required": [
         "agent",
         "id",
         "project",
         "question",
         "workspace"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/InvestigationSnapshot"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/incident.issue": {
   "post": {
    "operationId": "incident.issue",
    "summary": "incident.issue",
    "description": "Needs **read** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `monitors`, `sentry`, `logs`, `integrations`, `releases`, `live`, `runs`, `repositories`, `tests`.",
    "tags": [
     "Incident"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "monitors",
     "sentry",
     "logs",
     "integrations",
     "releases",
     "live",
     "runs",
     "repositories",
     "tests"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "issueId": {
          "type": "string"
         }
        },
        "required": [
         "issueId",
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/IncidentOfIssue"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/incident.postmortem.draft": {
   "post": {
    "operationId": "incident.postmortem.draft",
    "summary": "incident.postmortem.draft",
    "description": "Needs **act** access. About one project: `project` is its slug or id.\n\nChanges: `monitors`. Refetch on `dataChanged` naming: `monitors`, `sentry`, `logs`, `integrations`, `releases`, `live`, `runs`, `repositories`, `tests`.",
    "tags": [
     "Incident"
    ],
    "x-devdash-capability": "act",
    "x-devdash-project": true,
    "x-devdash-invalidates": [
     "monitors"
    ],
    "x-devdash-reads": [
     "monitors",
     "sentry",
     "logs",
     "integrations",
     "releases",
     "live",
     "runs",
     "repositories",
     "tests"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "id": {
          "type": "string"
         }
        },
        "required": [
         "id",
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/IncidentRecordView"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/incident.postmortem.post": {
   "post": {
    "operationId": "incident.postmortem.post",
    "summary": "incident.postmortem.post",
    "description": "Needs **act** access. About one project: `project` is its slug or id.\n\nChanges: `monitors`. Refetch on `dataChanged` naming: `monitors`, `sentry`, `logs`, `integrations`, `releases`, `live`, `runs`, `repositories`, `tests`.",
    "tags": [
     "Incident"
    ],
    "x-devdash-capability": "act",
    "x-devdash-project": true,
    "x-devdash-invalidates": [
     "monitors"
    ],
    "x-devdash-reads": [
     "monitors",
     "sentry",
     "logs",
     "integrations",
     "releases",
     "live",
     "runs",
     "repositories",
     "tests"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "id": {
          "type": "string"
         },
         "key": {
          "type": "string",
          "description": "Comment on this ticket…"
         },
         "jiraProject": {
          "type": "string",
          "description": "…or create one in this Jira project, with this issue type id (`sentry.jira.options`)."
         },
         "issueType": {
          "type": "string"
         }
        },
        "required": [
         "id",
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/IncidentPosted"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/incident.postmortem.save": {
   "post": {
    "operationId": "incident.postmortem.save",
    "summary": "incident.postmortem.save",
    "description": "Needs **act** access. About one project: `project` is its slug or id.\n\nChanges: `monitors`. Refetch on `dataChanged` naming: `monitors`, `sentry`, `logs`, `integrations`, `releases`, `live`, `runs`, `repositories`, `tests`.",
    "tags": [
     "Incident"
    ],
    "x-devdash-capability": "act",
    "x-devdash-project": true,
    "x-devdash-invalidates": [
     "monitors"
    ],
    "x-devdash-reads": [
     "monitors",
     "sentry",
     "logs",
     "integrations",
     "releases",
     "live",
     "runs",
     "repositories",
     "tests"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "id": {
          "type": "string"
         },
         "text": {
          "type": "string"
         }
        },
        "required": [
         "id",
         "project",
         "text"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/IncidentRecordView"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/incident.record": {
   "post": {
    "operationId": "incident.record",
    "summary": "incident.record",
    "description": "Needs **read** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `monitors`, `sentry`, `logs`, `integrations`, `releases`, `live`, `runs`, `repositories`, `tests`.",
    "tags": [
     "Incident"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "monitors",
     "sentry",
     "logs",
     "integrations",
     "releases",
     "live",
     "runs",
     "repositories",
     "tests"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "id": {
          "type": "string"
         }
        },
        "required": [
         "id",
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/IncidentRecordView"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/incident.record.note": {
   "post": {
    "operationId": "incident.record.note",
    "summary": "incident.record.note",
    "description": "Needs **act** access. About one project: `project` is its slug or id.\n\nChanges: `monitors`. Refetch on `dataChanged` naming: `monitors`, `sentry`, `logs`, `integrations`, `releases`, `live`, `runs`, `repositories`, `tests`.",
    "tags": [
     "Incident"
    ],
    "x-devdash-capability": "act",
    "x-devdash-project": true,
    "x-devdash-invalidates": [
     "monitors"
    ],
    "x-devdash-reads": [
     "monitors",
     "sentry",
     "logs",
     "integrations",
     "releases",
     "live",
     "runs",
     "repositories",
     "tests"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "id": {
          "type": "string"
         },
         "text": {
          "type": "string"
         }
        },
        "required": [
         "id",
         "project",
         "text"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/IncidentRecordView"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/incident.record.note.delete": {
   "post": {
    "operationId": "incident.record.note.delete",
    "summary": "incident.record.note.delete",
    "description": "Needs **act** access. About one project: `project` is its slug or id.\n\nChanges: `monitors`. Refetch on `dataChanged` naming: `monitors`, `sentry`, `logs`, `integrations`, `releases`, `live`, `runs`, `repositories`, `tests`.",
    "tags": [
     "Incident"
    ],
    "x-devdash-capability": "act",
    "x-devdash-project": true,
    "x-devdash-invalidates": [
     "monitors"
    ],
    "x-devdash-reads": [
     "monitors",
     "sentry",
     "logs",
     "integrations",
     "releases",
     "live",
     "runs",
     "repositories",
     "tests"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "id": {
          "type": "string"
         },
         "note": {
          "type": "string"
         }
        },
        "required": [
         "id",
         "note",
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/IncidentRecordView"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/incident.record.status": {
   "post": {
    "operationId": "incident.record.status",
    "summary": "incident.record.status",
    "description": "Needs **act** access. About one project: `project` is its slug or id.\n\nChanges: `monitors`. Refetch on `dataChanged` naming: `monitors`, `sentry`, `logs`, `integrations`, `releases`, `live`, `runs`, `repositories`, `tests`.",
    "tags": [
     "Incident"
    ],
    "x-devdash-capability": "act",
    "x-devdash-project": true,
    "x-devdash-invalidates": [
     "monitors"
    ],
    "x-devdash-reads": [
     "monitors",
     "sentry",
     "logs",
     "integrations",
     "releases",
     "live",
     "runs",
     "repositories",
     "tests"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "id": {
          "type": "string"
         },
         "status": {
          "type": "string",
          "description": "`investigating`, `identified`, `monitoring` or `resolved`."
         }
        },
        "required": [
         "id",
         "project",
         "status"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/IncidentRecordView"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/incident.record.summary": {
   "post": {
    "operationId": "incident.record.summary",
    "summary": "incident.record.summary",
    "description": "Needs **act** access. About one project: `project` is its slug or id.\n\nChanges: `monitors`. Refetch on `dataChanged` naming: `monitors`, `sentry`, `logs`, `integrations`, `releases`, `live`, `runs`, `repositories`, `tests`.",
    "tags": [
     "Incident"
    ],
    "x-devdash-capability": "act",
    "x-devdash-project": true,
    "x-devdash-invalidates": [
     "monitors"
    ],
    "x-devdash-reads": [
     "monitors",
     "sentry",
     "logs",
     "integrations",
     "releases",
     "live",
     "runs",
     "repositories",
     "tests"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "id": {
          "type": "string"
         },
         "text": {
          "type": "string"
         }
        },
        "required": [
         "id",
         "project",
         "text"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/IncidentRecordView"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/incident.repository": {
   "post": {
    "operationId": "incident.repository",
    "summary": "incident.repository",
    "description": "Needs **read** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `monitors`, `sentry`, `logs`, `integrations`, `releases`, `live`, `runs`, `repositories`, `tests`.",
    "tags": [
     "Incident"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "monitors",
     "sentry",
     "logs",
     "integrations",
     "releases",
     "live",
     "runs",
     "repositories",
     "tests"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "app": {
          "type": "string",
          "description": "The incident's app, when it has one."
         }
        },
        "required": [
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/IncidentRepository"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/incident.triage": {
   "post": {
    "operationId": "incident.triage",
    "summary": "incident.triage",
    "description": "Needs **read** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `monitors`, `sentry`, `logs`, `integrations`, `releases`, `live`, `runs`, `repositories`, `tests`.",
    "tags": [
     "Incident"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "monitors",
     "sentry",
     "logs",
     "integrations",
     "releases",
     "live",
     "runs",
     "repositories",
     "tests"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "id": {
          "type": "string"
         }
        },
        "required": [
         "id",
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "anyOf": [
          {
           "$ref": "#/components/schemas/IncidentTriage"
          },
          {
           "type": "null"
          }
         ]
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/intake.items": {
   "post": {
    "operationId": "intake.items",
    "summary": "intake.items",
    "description": "Needs **read** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `tasks`, `automations`.",
    "tags": [
     "Intake"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "tasks",
     "automations"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "properties": {
         "project": {
          "type": "string"
         }
        },
        "required": [
         "project"
        ],
        "additionalProperties": false
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "type": "array",
         "items": {
          "$ref": "#/components/schemas/IntakeItem"
         }
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/intake.prepare": {
   "post": {
    "operationId": "intake.prepare",
    "summary": "intake.prepare",
    "description": "Needs **act** access. About one project: `project` is its slug or id.\n\nChanges: `tasks`, `runs`, `inbox`, `automations`. Refetch on `dataChanged` naming: `tasks`, `automations`.",
    "tags": [
     "Intake"
    ],
    "x-devdash-capability": "act",
    "x-devdash-project": true,
    "x-devdash-invalidates": [
     "tasks",
     "runs",
     "inbox",
     "automations"
    ],
    "x-devdash-reads": [
     "tasks",
     "automations"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "workspace": {
          "type": "string",
          "description": "The repository (workspace) the task is cut in."
         },
         "key": {
          "type": "string",
          "description": "The Jira key, e.g. `ENGR-42`."
         },
         "title": {
          "type": "string"
         },
         "profile": {
          "type": "string",
          "description": "The workflow profile whose planning model writes the first plan."
         },
         "branch": {
          "type": [
           "string",
           "null"
          ],
          "description": "An existing branch to check out instead of cutting a new one."
         }
        },
        "required": [
         "branch",
         "key",
         "profile",
         "project",
         "title",
         "workspace"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/IntakePrepared"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/integration.connect": {
   "post": {
    "operationId": "integration.connect",
    "summary": "integration.connect",
    "description": "Needs **admin** access. About one project: `project` is its slug or id.\n\nChanges: `integrations`, `projects`, `settings`. Refetch on `dataChanged` naming: `integrations`.",
    "tags": [
     "Integration"
    ],
    "x-devdash-capability": "admin",
    "x-devdash-project": true,
    "x-devdash-invalidates": [
     "integrations",
     "projects",
     "settings"
    ],
    "x-devdash-reads": [
     "integrations"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "id": {
          "type": "string",
          "description": "The provider id, e.g. `jira`."
         },
         "fields": {
          "$ref": "#/components/schemas/Record_string_unknown",
          "description": "The connect form's values, keyed by field name."
         }
        },
        "required": [
         "fields",
         "id",
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Connected"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/integration.disconnect": {
   "post": {
    "operationId": "integration.disconnect",
    "summary": "integration.disconnect",
    "description": "Needs **admin** access. About one project: `project` is its slug or id.\n\nChanges: `integrations`, `projects`, `settings`. Refetch on `dataChanged` naming: `integrations`.",
    "tags": [
     "Integration"
    ],
    "x-devdash-capability": "admin",
    "x-devdash-project": true,
    "x-devdash-invalidates": [
     "integrations",
     "projects",
     "settings"
    ],
    "x-devdash-reads": [
     "integrations"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "id": {
          "type": "string"
         }
        },
        "required": [
         "id",
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "type": "array",
         "items": {
          "$ref": "#/components/schemas/Integration"
         }
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/integration.test": {
   "post": {
    "operationId": "integration.test",
    "summary": "integration.test",
    "description": "Needs **admin** access. About one project: `project` is its slug or id.\n\nChanges: `integrations`, `projects`, `settings`. Refetch on `dataChanged` naming: `integrations`.",
    "tags": [
     "Integration"
    ],
    "x-devdash-capability": "admin",
    "x-devdash-project": true,
    "x-devdash-invalidates": [
     "integrations",
     "projects",
     "settings"
    ],
    "x-devdash-reads": [
     "integrations"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "id": {
          "type": "string",
          "description": "The provider id, e.g. `jira`."
         },
         "fields": {
          "$ref": "#/components/schemas/Record_string_unknown",
          "description": "The connect form's values, keyed by field name."
         }
        },
        "required": [
         "fields",
         "id",
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/JsonValue"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/investigation": {
   "post": {
    "operationId": "investigation",
    "summary": "investigation",
    "description": "Needs **read** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `tasks`.",
    "tags": [
     "Investigation"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "tasks"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "id": {
          "type": "string"
         }
        },
        "required": [
         "id",
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/InvestigationSnapshot"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/investigation.cancel": {
   "post": {
    "operationId": "investigation.cancel",
    "summary": "investigation.cancel",
    "description": "Needs **act** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `tasks`.",
    "tags": [
     "Investigation"
    ],
    "x-devdash-capability": "act",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "tasks"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "id": {
          "type": "string"
         }
        },
        "required": [
         "id",
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/InvestigationSnapshot"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/investigation.start": {
   "post": {
    "operationId": "investigation.start",
    "summary": "investigation.start",
    "description": "Needs **act** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `tasks`.",
    "tags": [
     "Investigation"
    ],
    "x-devdash-capability": "act",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "tasks"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "id": {
          "type": "string",
          "description": "The ticket key."
         },
         "workspace": {
          "type": "string",
          "description": "The workspace whose repository the agent reads."
         },
         "agent": {
          "type": "string",
          "description": "`claude` or `codex`."
         },
         "question": {
          "type": "string"
         }
        },
        "required": [
         "agent",
         "id",
         "project",
         "question",
         "workspace"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/InvestigationSnapshot"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/issue": {
   "post": {
    "operationId": "issue",
    "summary": "issue",
    "description": "Needs **read** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `tasks`.",
    "tags": [
     "Issue"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "tasks"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "id": {
          "type": "string"
         }
        },
        "required": [
         "id",
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/IssueDetail"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/issue.assign": {
   "post": {
    "operationId": "issue.assign",
    "summary": "issue.assign",
    "description": "Needs **act** access. About one project: `project` is its slug or id.\n\nChanges: `tasks`, `inbox`. Refetch on `dataChanged` naming: `tasks`.",
    "tags": [
     "Issue"
    ],
    "x-devdash-capability": "act",
    "x-devdash-project": true,
    "x-devdash-invalidates": [
     "tasks",
     "inbox"
    ],
    "x-devdash-reads": [
     "tasks"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "id": {
          "type": "string"
         },
         "me": {
          "type": "boolean",
          "description": "True: assign to the connected Jira account. False: unassign."
         }
        },
        "required": [
         "id",
         "me",
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/IssueWritten"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/issue.comment": {
   "post": {
    "operationId": "issue.comment",
    "summary": "issue.comment",
    "description": "Needs **act** access. About one project: `project` is its slug or id.\n\nChanges: `tasks`, `inbox`. Refetch on `dataChanged` naming: `tasks`.",
    "tags": [
     "Issue"
    ],
    "x-devdash-capability": "act",
    "x-devdash-project": true,
    "x-devdash-invalidates": [
     "tasks",
     "inbox"
    ],
    "x-devdash-reads": [
     "tasks"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "id": {
          "type": "string"
         },
         "text": {
          "type": "string"
         }
        },
        "required": [
         "id",
         "project",
         "text"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/IssueWritten"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/issue.fetch": {
   "post": {
    "operationId": "issue.fetch",
    "summary": "issue.fetch",
    "description": "Needs **read** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `tasks`.",
    "tags": [
     "Issue"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "tasks"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "id": {
          "type": "string"
         }
        },
        "required": [
         "id",
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/FetchedIssue"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/issue.kept": {
   "post": {
    "operationId": "issue.kept",
    "summary": "issue.kept",
    "description": "Needs **read** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `tasks`.",
    "tags": [
     "Issue"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "tasks"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "id": {
          "type": "string"
         }
        },
        "required": [
         "id",
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "anyOf": [
          {
           "$ref": "#/components/schemas/FetchedIssue"
          },
          {
           "type": "null"
          }
         ]
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/issue.link": {
   "post": {
    "operationId": "issue.link",
    "summary": "issue.link",
    "description": "Needs **act** access. About one project: `project` is its slug or id.\n\nChanges: `tasks`, `inbox`. Refetch on `dataChanged` naming: `tasks`.",
    "tags": [
     "Issue"
    ],
    "x-devdash-capability": "act",
    "x-devdash-project": true,
    "x-devdash-invalidates": [
     "tasks",
     "inbox"
    ],
    "x-devdash-reads": [
     "tasks"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "id": {
          "type": "string"
         },
         "url": {
          "type": "string"
         },
         "title": {
          "type": "string"
         }
        },
        "required": [
         "id",
         "project",
         "title",
         "url"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/IssueWritten"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/issue.transition": {
   "post": {
    "operationId": "issue.transition",
    "summary": "issue.transition",
    "description": "Needs **act** access. About one project: `project` is its slug or id.\n\nChanges: `tasks`, `inbox`. Refetch on `dataChanged` naming: `tasks`.",
    "tags": [
     "Issue"
    ],
    "x-devdash-capability": "act",
    "x-devdash-project": true,
    "x-devdash-invalidates": [
     "tasks",
     "inbox"
    ],
    "x-devdash-reads": [
     "tasks"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "id": {
          "type": "string"
         },
         "transition": {
          "type": "string",
          "description": "A transition id from `issue.transitions`."
         }
        },
        "required": [
         "id",
         "project",
         "transition"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/IssueWritten"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/issue.transitions": {
   "post": {
    "operationId": "issue.transitions",
    "summary": "issue.transitions",
    "description": "Needs **read** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `tasks`.",
    "tags": [
     "Issue"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "tasks"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "id": {
          "type": "string"
         }
        },
        "required": [
         "id",
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "type": "array",
         "items": {
          "$ref": "#/components/schemas/IssueTransition"
         }
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/issues": {
   "post": {
    "operationId": "issues",
    "summary": "issues",
    "description": "Needs **read** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `tasks`.",
    "tags": [
     "Issue"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "tasks"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "filters": {
          "$ref": "#/components/schemas/Record_string_string",
          "description": "Facet groups to their chosen values, e.g. `{ \"owner\": [\"Mine\"] }`. Absent means the section's saved selection."
         },
         "offset": {
          "type": "number"
         },
         "limit": {
          "type": "number",
          "description": "1 to 200; 50 when absent."
         },
         "query": {
          "type": "string"
         },
         "sortBy": {
          "type": "string",
          "description": "A column to order by: `title`, `status`, `priority` (or `extra`), `updatedAt` (or `when`)…"
         },
         "descending": {
          "type": "boolean"
         }
        },
        "required": [
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/WorkList"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/jev.disconnect": {
   "post": {
    "operationId": "jev.disconnect",
    "summary": "jev.disconnect",
    "description": "Needs **admin** access. About one project: `project` is its slug or id.\n\nChanges: `settings`, `integrations`, `inbox`. Refetch on `dataChanged` naming: `settings`.",
    "tags": [
     "Jev"
    ],
    "x-devdash-capability": "admin",
    "x-devdash-project": true,
    "x-devdash-invalidates": [
     "settings",
     "integrations",
     "inbox"
    ],
    "x-devdash-reads": [
     "settings"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "properties": {
         "project": {
          "type": "string"
         }
        },
        "required": [
         "project"
        ],
        "additionalProperties": false
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "type": "boolean"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/jev.save": {
   "post": {
    "operationId": "jev.save",
    "summary": "jev.save",
    "description": "Needs **admin** access. About one project: `project` is its slug or id.\n\nChanges: `settings`, `integrations`, `inbox`. Refetch on `dataChanged` naming: `settings`.",
    "tags": [
     "Jev"
    ],
    "x-devdash-capability": "admin",
    "x-devdash-project": true,
    "x-devdash-invalidates": [
     "settings",
     "integrations",
     "inbox"
    ],
    "x-devdash-reads": [
     "settings"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "enabled": {
          "type": "boolean"
         },
         "features": {
          "type": "array",
          "items": {
           "$ref": "#/components/schemas/JevFeature"
          }
         },
         "provider": {
          "$ref": "#/components/schemas/JevProvider"
         },
         "account": {
          "type": [
           "string",
           "null"
          ],
          "description": "The Cloudflare account id, for Clef."
         },
         "key": {
          "type": [
           "string",
           "null"
          ],
          "description": "A new key (a Jev API key, or a Cloudflare token with Workers AI permission). Stored only when `test` is set and the test succeeds."
         },
         "test": {
          "type": "boolean",
          "description": "Check the key (new or stored) with one small decision before saving."
         }
        },
        "required": [
         "account",
         "enabled",
         "features",
         "key",
         "project",
         "provider",
         "test"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/JevSaved"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/jev.settings": {
   "post": {
    "operationId": "jev.settings",
    "summary": "jev.settings",
    "description": "Needs **read** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `settings`.",
    "tags": [
     "Jev"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "settings"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "properties": {
         "project": {
          "type": "string"
         }
        },
        "required": [
         "project"
        ],
        "additionalProperties": false
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/JevSettings"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/kubernetes.action": {
   "post": {
    "operationId": "kubernetes.action",
    "summary": "kubernetes.action",
    "description": "Needs **operate** access. About one project: `project` is its slug or id.\n\nChanges: `kubernetes`, `monitors`. Refetch on `dataChanged` naming: `kubernetes`, `integrations`.",
    "tags": [
     "Kubernetes"
    ],
    "x-devdash-capability": "operate",
    "x-devdash-project": true,
    "x-devdash-invalidates": [
     "kubernetes",
     "monitors"
    ],
    "x-devdash-reads": [
     "kubernetes",
     "integrations"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "context": {
          "type": "string"
         },
         "namespace": {
          "type": "string"
         },
         "kind": {
          "type": "string",
          "description": "`Deployment`, `StatefulSet`, `DaemonSet` or `Pod`."
         },
         "name": {
          "type": "string"
         },
         "action": {
          "type": "string",
          "description": "`restart`, `scale` or `delete`."
         },
         "replicas": {
          "type": "number"
         }
        },
        "required": [
         "action",
         "context",
         "kind",
         "name",
         "namespace",
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "type": "boolean"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/kubernetes.check": {
   "post": {
    "operationId": "kubernetes.check",
    "summary": "kubernetes.check",
    "description": "Needs **act** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `kubernetes`, `integrations`.",
    "tags": [
     "Kubernetes"
    ],
    "x-devdash-capability": "act",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "kubernetes",
     "integrations"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "properties": {
         "project": {
          "type": "string"
         }
        },
        "required": [
         "project"
        ],
        "additionalProperties": false
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/KubernetesCheckStarted"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/kubernetes.contexts": {
   "post": {
    "operationId": "kubernetes.contexts",
    "summary": "kubernetes.contexts",
    "description": "Needs **read** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `kubernetes`, `integrations`.",
    "tags": [
     "Kubernetes"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "kubernetes",
     "integrations"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "kubeconfig": {
          "type": "string"
         }
        },
        "required": [
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/K8sContexts"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/kubernetes.detect": {
   "post": {
    "operationId": "kubernetes.detect",
    "summary": "kubernetes.detect",
    "description": "Needs **read** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `kubernetes`, `integrations`.",
    "tags": [
     "Kubernetes"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "kubernetes",
     "integrations"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "kubeconfig": {
          "type": "string",
          "description": "A kubeconfig path to read; else the connection's, else `$KUBECONFIG` or `~/.kube/config`."
         }
        },
        "required": [
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/K8sDetection"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/kubernetes.exec": {
   "post": {
    "operationId": "kubernetes.exec",
    "summary": "kubernetes.exec",
    "description": "Needs **operate** access. About one project: `project` is its slug or id.\n\nChanges: `terminals`. Refetch on `dataChanged` naming: `kubernetes`, `integrations`.",
    "tags": [
     "Kubernetes"
    ],
    "x-devdash-capability": "operate",
    "x-devdash-project": true,
    "x-devdash-invalidates": [
     "terminals"
    ],
    "x-devdash-reads": [
     "kubernetes",
     "integrations"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "context": {
          "type": "string"
         },
         "namespace": {
          "type": "string"
         },
         "pod": {
          "type": "string"
         },
         "container": {
          "type": "string"
         }
        },
        "required": [
         "context",
         "namespace",
         "pod",
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/K8sExec"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/kubernetes.forward.start": {
   "post": {
    "operationId": "kubernetes.forward.start",
    "summary": "kubernetes.forward.start",
    "description": "Needs **operate** access. About one project: `project` is its slug or id.\n\nChanges: `kubernetes`, `local`. Refetch on `dataChanged` naming: `kubernetes`, `integrations`.",
    "tags": [
     "Kubernetes"
    ],
    "x-devdash-capability": "operate",
    "x-devdash-project": true,
    "x-devdash-invalidates": [
     "kubernetes",
     "local"
    ],
    "x-devdash-reads": [
     "kubernetes",
     "integrations"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "context": {
          "type": "string"
         },
         "namespace": {
          "type": "string"
         },
         "target": {
          "type": "string",
          "description": "`pod/<name>` or `svc/<name>`."
         },
         "port": {
          "type": "number"
         }
        },
        "required": [
         "context",
         "namespace",
         "port",
         "project",
         "target"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/K8sForward"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/kubernetes.forward.stop": {
   "post": {
    "operationId": "kubernetes.forward.stop",
    "summary": "kubernetes.forward.stop",
    "description": "Needs **operate** access. About one project: `project` is its slug or id.\n\nChanges: `kubernetes`, `local`. Refetch on `dataChanged` naming: `kubernetes`, `integrations`.",
    "tags": [
     "Kubernetes"
    ],
    "x-devdash-capability": "operate",
    "x-devdash-project": true,
    "x-devdash-invalidates": [
     "kubernetes",
     "local"
    ],
    "x-devdash-reads": [
     "kubernetes",
     "integrations"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "id": {
          "type": "string"
         }
        },
        "required": [
         "id",
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "type": "boolean"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/kubernetes.forwards": {
   "post": {
    "operationId": "kubernetes.forwards",
    "summary": "kubernetes.forwards",
    "description": "Needs **read** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `kubernetes`, `local`.",
    "tags": [
     "Kubernetes"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "kubernetes",
     "local"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "properties": {
         "project": {
          "type": "string"
         }
        },
        "required": [
         "project"
        ],
        "additionalProperties": false
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/K8sForwards"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/kubernetes.overview": {
   "post": {
    "operationId": "kubernetes.overview",
    "summary": "kubernetes.overview",
    "description": "Needs **read** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `kubernetes`, `integrations`.",
    "tags": [
     "Kubernetes"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "kubernetes",
     "integrations"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "context": {
          "type": [
           "string",
           "null"
          ],
          "description": "The context to read; the first the connection reads when none is named."
         }
        },
        "required": [
         "context",
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/K8sOverview"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/kubernetes.pod": {
   "post": {
    "operationId": "kubernetes.pod",
    "summary": "kubernetes.pod",
    "description": "Needs **read** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `kubernetes`, `integrations`, `logs`, `local`.",
    "tags": [
     "Kubernetes"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "kubernetes",
     "integrations",
     "logs",
     "local"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "context": {
          "type": "string"
         },
         "namespace": {
          "type": "string"
         },
         "name": {
          "type": "string"
         }
        },
        "required": [
         "context",
         "name",
         "namespace",
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/K8sPodDetail"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/kubernetes.pod.logs": {
   "post": {
    "operationId": "kubernetes.pod.logs",
    "summary": "kubernetes.pod.logs",
    "description": "Needs **read** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `kubernetes`, `integrations`, `logs`, `local`.",
    "tags": [
     "Kubernetes"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "kubernetes",
     "integrations",
     "logs",
     "local"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "context": {
          "type": "string"
         },
         "namespace": {
          "type": "string"
         },
         "name": {
          "type": "string"
         },
         "container": {
          "type": "string"
         },
         "tail": {
          "type": "number",
          "description": "Lines, 10–2000; 300 by default."
         },
         "previous": {
          "type": "boolean",
          "description": "The run before the last restart."
         }
        },
        "required": [
         "context",
         "name",
         "namespace",
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/K8sPodLogs"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/kubernetes.sign_in": {
   "post": {
    "operationId": "kubernetes.sign_in",
    "summary": "kubernetes.sign_in",
    "description": "Needs **operate** access. About one project: `project` is its slug or id.\n\nChanges: `terminals`. Refetch on `dataChanged` naming: `kubernetes`, `integrations`.",
    "tags": [
     "Kubernetes"
    ],
    "x-devdash-capability": "operate",
    "x-devdash-project": true,
    "x-devdash-invalidates": [
     "terminals"
    ],
    "x-devdash-reads": [
     "kubernetes",
     "integrations"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "context": {
          "type": "string"
         }
        },
        "required": [
         "context",
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/K8sExec"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/kubernetes.test": {
   "post": {
    "operationId": "kubernetes.test",
    "summary": "kubernetes.test",
    "description": "Needs **admin** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `kubernetes`, `integrations`.",
    "tags": [
     "Kubernetes"
    ],
    "x-devdash-capability": "admin",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "kubernetes",
     "integrations"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "kubeconfig": {
          "type": "string"
         },
         "contexts": {
          "type": "array",
          "items": {
           "type": "string"
          },
          "description": "The contexts to test; empty tests the kubeconfig's current one."
         },
         "namespaces": {
          "type": "array",
          "items": {
           "type": "string"
          }
         }
        },
        "required": [
         "contexts",
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/K8sTest"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/legacy.detect": {
   "post": {
    "operationId": "legacy.detect",
    "summary": "legacy.detect",
    "description": "Needs **admin** access. About the installation, not one project.\n\nChanges: nothing. Refetch on `dataChanged` naming: `projects`.",
    "tags": [
     "Legacy"
    ],
    "x-devdash-capability": "admin",
    "x-devdash-project": false,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "projects"
    ],
    "requestBody": {
     "required": false,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/NoArgs"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Legacy"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/legacy.import": {
   "post": {
    "operationId": "legacy.import",
    "summary": "legacy.import",
    "description": "Needs **admin** access. About the installation, not one project.\n\nChanges: `projects`. Refetch on `dataChanged` naming: `projects`.",
    "tags": [
     "Legacy"
    ],
    "x-devdash-capability": "admin",
    "x-devdash-project": false,
    "x-devdash-invalidates": [
     "projects"
    ],
    "x-devdash-reads": [
     "projects"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/ImportArgs"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Imported"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/live.event": {
   "post": {
    "operationId": "live.event",
    "summary": "live.event",
    "description": "Needs **read** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `live`.",
    "tags": [
     "Live"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "live"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "id": {
          "type": "string"
         }
        },
        "required": [
         "id",
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/EventDetail"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/live.events": {
   "post": {
    "operationId": "live.events",
    "summary": "live.events",
    "description": "Needs **read** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `live`.",
    "tags": [
     "Live"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "live"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "properties": {
         "project": {
          "type": "string"
         }
        },
        "required": [
         "project"
        ],
        "additionalProperties": false
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "type": "array",
         "items": {
          "$ref": "#/components/schemas/LiveEvent"
         }
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/live.watch": {
   "post": {
    "operationId": "live.watch",
    "summary": "live.watch",
    "description": "Needs **read** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `live`.",
    "tags": [
     "Live"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "live"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "fingerprint": {
          "type": "string"
         },
         "sourceLabel": {
          "type": "string",
          "description": "The list groups by fingerprint, query name and severity; passing the row's two narrows the read to exactly that row's occurrences."
         },
         "severity": {
          "type": "string"
         }
        },
        "required": [
         "fingerprint",
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/WatchDetail"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/live.watches": {
   "post": {
    "operationId": "live.watches",
    "summary": "live.watches",
    "description": "Needs **read** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `live`.",
    "tags": [
     "Live"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "live"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "properties": {
         "project": {
          "type": "string"
         }
        },
        "required": [
         "project"
        ],
        "additionalProperties": false
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "type": "array",
         "items": {
          "$ref": "#/components/schemas/Watch"
         }
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/local.container.restart": {
   "post": {
    "operationId": "local.container.restart",
    "summary": "local.container.restart",
    "description": "Needs **operate** access. About one project: `project` is its slug or id.\n\nChanges: `local`. Refetch on `dataChanged` naming: `local`.",
    "tags": [
     "Local"
    ],
    "x-devdash-capability": "operate",
    "x-devdash-project": true,
    "x-devdash-invalidates": [
     "local"
    ],
    "x-devdash-reads": [
     "local"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "id": {
          "type": "string",
          "description": "The full id, a 12-character prefix, or the name."
         },
         "confirm": {
          "type": "boolean",
          "description": "Required for a container DevDash did not create."
         }
        },
        "required": [
         "id",
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/ContainerAction"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/local.container.start": {
   "post": {
    "operationId": "local.container.start",
    "summary": "local.container.start",
    "description": "Needs **operate** access. About one project: `project` is its slug or id.\n\nChanges: `local`. Refetch on `dataChanged` naming: `local`.",
    "tags": [
     "Local"
    ],
    "x-devdash-capability": "operate",
    "x-devdash-project": true,
    "x-devdash-invalidates": [
     "local"
    ],
    "x-devdash-reads": [
     "local"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "id": {
          "type": "string",
          "description": "The full id, a 12-character prefix, or the name."
         },
         "confirm": {
          "type": "boolean",
          "description": "Required for a container DevDash did not create."
         }
        },
        "required": [
         "id",
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/ContainerAction"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/local.container.stop": {
   "post": {
    "operationId": "local.container.stop",
    "summary": "local.container.stop",
    "description": "Needs **operate** access. About one project: `project` is its slug or id.\n\nChanges: `local`. Refetch on `dataChanged` naming: `local`.",
    "tags": [
     "Local"
    ],
    "x-devdash-capability": "operate",
    "x-devdash-project": true,
    "x-devdash-invalidates": [
     "local"
    ],
    "x-devdash-reads": [
     "local"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "id": {
          "type": "string",
          "description": "The full id, a 12-character prefix, or the name."
         },
         "confirm": {
          "type": "boolean",
          "description": "Required for a container DevDash did not create."
         }
        },
        "required": [
         "id",
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/ContainerAction"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/local.containers": {
   "post": {
    "operationId": "local.containers",
    "summary": "local.containers",
    "description": "Needs **read** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `local`.",
    "tags": [
     "Local"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "local"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "properties": {
         "project": {
          "type": "string"
         }
        },
        "required": [
         "project"
        ],
        "additionalProperties": false
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/LocalContainers"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/local.environment.output": {
   "post": {
    "operationId": "local.environment.output",
    "summary": "local.environment.output",
    "description": "Needs **read** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `local`, `tasks`.",
    "tags": [
     "Local"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "local",
     "tasks"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "task": {
          "type": "string"
         },
         "service": {
          "type": "string"
         },
         "tail": {
          "type": "number",
          "description": "Lines per service, 1–2,000 (default 300)."
         }
        },
        "required": [
         "project",
         "task"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/LocalOutput"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/local.environment.restart": {
   "post": {
    "operationId": "local.environment.restart",
    "summary": "local.environment.restart",
    "description": "Needs **operate** access. About one project: `project` is its slug or id.\n\nChanges: `local`, `tasks`. Refetch on `dataChanged` naming: `local`, `tasks`.",
    "tags": [
     "Local"
    ],
    "x-devdash-capability": "operate",
    "x-devdash-project": true,
    "x-devdash-invalidates": [
     "local",
     "tasks"
    ],
    "x-devdash-reads": [
     "local",
     "tasks"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "task": {
          "type": "string"
         },
         "service": {
          "type": "string",
          "description": "One service (a Compose service or a process) instead of the whole environment."
         }
        },
        "required": [
         "project",
         "task"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/LocalAccepted"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/local.environment.start": {
   "post": {
    "operationId": "local.environment.start",
    "summary": "local.environment.start",
    "description": "Needs **operate** access. About one project: `project` is its slug or id.\n\nChanges: `local`, `tasks`. Refetch on `dataChanged` naming: `local`, `tasks`.",
    "tags": [
     "Local"
    ],
    "x-devdash-capability": "operate",
    "x-devdash-project": true,
    "x-devdash-invalidates": [
     "local",
     "tasks"
    ],
    "x-devdash-reads": [
     "local",
     "tasks"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "task": {
          "type": "string"
         },
         "service": {
          "type": "string",
          "description": "One service (a Compose service or a process) instead of the whole environment."
         }
        },
        "required": [
         "project",
         "task"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/LocalAccepted"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/local.environment.stop": {
   "post": {
    "operationId": "local.environment.stop",
    "summary": "local.environment.stop",
    "description": "Needs **operate** access. About one project: `project` is its slug or id.\n\nChanges: `local`, `tasks`. Refetch on `dataChanged` naming: `local`, `tasks`.",
    "tags": [
     "Local"
    ],
    "x-devdash-capability": "operate",
    "x-devdash-project": true,
    "x-devdash-invalidates": [
     "local",
     "tasks"
    ],
    "x-devdash-reads": [
     "local",
     "tasks"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "task": {
          "type": "string"
         },
         "service": {
          "type": "string",
          "description": "One service (a Compose service or a process) instead of the whole environment."
         }
        },
        "required": [
         "project",
         "task"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/LocalAccepted"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/local.environment.use-for-tests": {
   "post": {
    "operationId": "local.environment.use-for-tests",
    "summary": "local.environment.use-for-tests",
    "description": "Needs **admin** access. About one project: `project` is its slug or id.\n\nChanges: `tests`. Refetch on `dataChanged` naming: `local`, `tasks`.",
    "tags": [
     "Local"
    ],
    "x-devdash-capability": "admin",
    "x-devdash-project": true,
    "x-devdash-invalidates": [
     "tests"
    ],
    "x-devdash-reads": [
     "local",
     "tasks"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "task": {
          "type": "string"
         }
        },
        "required": [
         "project",
         "task"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/TestsBase"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/local.environments": {
   "post": {
    "operationId": "local.environments",
    "summary": "local.environments",
    "description": "Needs **read** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `local`, `tasks`.",
    "tags": [
     "Local"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "local",
     "tasks"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "task": {
          "type": "string",
          "description": "One task's environment. A task with none yet is returned with state `none` and `configured` saying whether it could start."
         }
        },
        "required": [
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "type": "array",
         "items": {
          "$ref": "#/components/schemas/LocalEnvironment"
         }
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/local.host": {
   "post": {
    "operationId": "local.host",
    "summary": "local.host",
    "description": "Needs **read** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `local`.",
    "tags": [
     "Local"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "local"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "properties": {
         "project": {
          "type": "string"
         }
        },
        "required": [
         "project"
        ],
        "additionalProperties": false
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/LocalHost"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/local.port.stop": {
   "post": {
    "operationId": "local.port.stop",
    "summary": "local.port.stop",
    "description": "Needs **operate** access. About one project: `project` is its slug or id.\n\nChanges: `local`. Refetch on `dataChanged` naming: `local`.",
    "tags": [
     "Local"
    ],
    "x-devdash-capability": "operate",
    "x-devdash-project": true,
    "x-devdash-invalidates": [
     "local"
    ],
    "x-devdash-reads": [
     "local"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "pid": {
          "type": "number"
         },
         "port": {
          "type": "number",
          "description": "The port it was listening on when the person chose it; checked again first."
         },
         "confirm": {
          "type": "boolean"
         }
        },
        "required": [
         "pid",
         "port",
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/PortStop"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/local.ports": {
   "post": {
    "operationId": "local.ports",
    "summary": "local.ports",
    "description": "Needs **read** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `local`, `tasks`, `repositories`.",
    "tags": [
     "Local"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "local",
     "tasks",
     "repositories"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "properties": {
         "project": {
          "type": "string"
         }
        },
        "required": [
         "project"
        ],
        "additionalProperties": false
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/LocalPorts"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/local.terminal": {
   "post": {
    "operationId": "local.terminal",
    "summary": "local.terminal",
    "description": "Needs **operate** access. About one project: `project` is its slug or id.\n\nChanges: `terminals`. Refetch on `dataChanged` naming: `local`.",
    "tags": [
     "Local"
    ],
    "x-devdash-capability": "operate",
    "x-devdash-project": true,
    "x-devdash-invalidates": [
     "terminals"
    ],
    "x-devdash-reads": [
     "local"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "task": {
          "type": "string",
          "description": "A task environment's service: a shell in its container, or in the process's directory."
         },
         "service": {
          "type": "string"
         },
         "pid": {
          "type": "number",
          "description": "A listening process: a shell in its working directory."
         }
        },
        "required": [
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/LocalTerminal"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/localmodel.install": {
   "post": {
    "operationId": "localmodel.install",
    "summary": "localmodel.install",
    "description": "Needs **admin** access. About the installation, not one project.\n\nChanges: `settings`. Refetch on `dataChanged` naming: `settings`.",
    "tags": [
     "Localmodel"
    ],
    "x-devdash-capability": "admin",
    "x-devdash-project": false,
    "x-devdash-invalidates": [
     "settings"
    ],
    "x-devdash-reads": [
     "settings"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/LocalModelInstallArgs"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/LocalModelStatus"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/localmodel.remove": {
   "post": {
    "operationId": "localmodel.remove",
    "summary": "localmodel.remove",
    "description": "Needs **admin** access. About the installation, not one project.\n\nChanges: `settings`. Refetch on `dataChanged` naming: `settings`.",
    "tags": [
     "Localmodel"
    ],
    "x-devdash-capability": "admin",
    "x-devdash-project": false,
    "x-devdash-invalidates": [
     "settings"
    ],
    "x-devdash-reads": [
     "settings"
    ],
    "requestBody": {
     "required": false,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/NoArgs"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/LocalModelStatus"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/localmodel.status": {
   "post": {
    "operationId": "localmodel.status",
    "summary": "localmodel.status",
    "description": "Needs **read** access. About the installation, not one project.\n\nChanges: nothing. Refetch on `dataChanged` naming: `settings`.",
    "tags": [
     "Localmodel"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": false,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "settings"
    ],
    "requestBody": {
     "required": false,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/NoArgs"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/LocalModelStatus"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/logs.alerts": {
   "post": {
    "operationId": "logs.alerts",
    "summary": "logs.alerts",
    "description": "Needs **read** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `logs`, `automations`.",
    "tags": [
     "Logs"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "logs",
     "automations"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "properties": {
         "project": {
          "type": "string"
         }
        },
        "required": [
         "project"
        ],
        "additionalProperties": false
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "type": "array",
         "items": {
          "$ref": "#/components/schemas/LogAlert"
         }
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/logs.alerts.mute": {
   "post": {
    "operationId": "logs.alerts.mute",
    "summary": "logs.alerts.mute",
    "description": "Needs **act** access. About one project: `project` is its slug or id.\n\nChanges: `logs`. Refetch on `dataChanged` naming: `logs`, `automations`.",
    "tags": [
     "Logs"
    ],
    "x-devdash-capability": "act",
    "x-devdash-project": true,
    "x-devdash-invalidates": [
     "logs"
    ],
    "x-devdash-reads": [
     "logs",
     "automations"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "id": {
          "type": "string"
         },
         "minutes": {
          "type": "number",
          "description": "Minutes to mute for; absent or 0 unmutes."
         }
        },
        "required": [
         "id",
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "type": "boolean"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/logs.alerts.remove": {
   "post": {
    "operationId": "logs.alerts.remove",
    "summary": "logs.alerts.remove",
    "description": "Needs **admin** access. About one project: `project` is its slug or id.\n\nChanges: `logs`. Refetch on `dataChanged` naming: `logs`, `automations`.",
    "tags": [
     "Logs"
    ],
    "x-devdash-capability": "admin",
    "x-devdash-project": true,
    "x-devdash-invalidates": [
     "logs"
    ],
    "x-devdash-reads": [
     "logs",
     "automations"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "id": {
          "type": "string"
         }
        },
        "required": [
         "id",
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "type": "boolean"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/logs.alerts.save": {
   "post": {
    "operationId": "logs.alerts.save",
    "summary": "logs.alerts.save",
    "description": "Needs **admin** access. About one project: `project` is its slug or id.\n\nChanges: `logs`. Refetch on `dataChanged` naming: `logs`, `automations`.",
    "tags": [
     "Logs"
    ],
    "x-devdash-capability": "admin",
    "x-devdash-project": true,
    "x-devdash-invalidates": [
     "logs"
    ],
    "x-devdash-reads": [
     "logs",
     "automations"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "id": {
          "type": "string"
         },
         "name": {
          "type": "string"
         },
         "query": {
          "type": "string"
         },
         "condition": {
          "$ref": "#/components/schemas/LogAlertCondition"
         },
         "actions": {
          "type": "array",
          "items": {
           "type": "string"
          },
          "description": "`notify`, `inbox`, `automation`."
         },
         "enabled": {
          "type": "boolean"
         }
        },
        "required": [
         "actions",
         "condition",
         "enabled",
         "name",
         "project",
         "query"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/LogAlert"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/logs.alerts.test": {
   "post": {
    "operationId": "logs.alerts.test",
    "summary": "logs.alerts.test",
    "description": "Needs **read** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `logs`, `automations`.",
    "tags": [
     "Logs"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "logs",
     "automations"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "query": {
          "type": "string"
         },
         "condition": {
          "$ref": "#/components/schemas/LogAlertCondition"
         }
        },
        "required": [
         "condition",
         "project",
         "query"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/LogAlertTestResult"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/logs.chart": {
   "post": {
    "operationId": "logs.chart",
    "summary": "logs.chart",
    "description": "Needs **read** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `logs`.",
    "tags": [
     "Logs"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "logs"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "query": {
          "type": "string"
         },
         "expr": {
          "type": "string"
         },
         "range": {
          "type": "string",
          "description": "`15m`, `1h`, `6h`, `24h`, `7d`, `30d`; ignored when `from` is given."
         },
         "from": {
          "type": "number",
          "description": "Microseconds since the epoch."
         },
         "to": {
          "type": "number"
         }
        },
        "required": [
         "expr",
         "project",
         "query"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/LogChart"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/logs.cloudwatch.groups": {
   "post": {
    "operationId": "logs.cloudwatch.groups",
    "summary": "logs.cloudwatch.groups",
    "description": "Needs **admin** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `logs`.",
    "tags": [
     "Logs"
    ],
    "x-devdash-capability": "admin",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "logs"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "region": {
          "type": "string"
         },
         "profile": {
          "type": "string"
         },
         "key": {
          "type": "string",
          "description": "A saved source whose stored access key to use."
         },
         "accessKeyId": {
          "type": "string"
         },
         "secretAccessKey": {
          "type": "string"
         },
         "sessionToken": {
          "type": "string"
         },
         "prefix": {
          "type": "string",
          "description": "Only groups whose name starts with this."
         }
        },
        "required": [
         "project",
         "region"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "type": "array",
         "items": {
          "type": "string"
         }
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/logs.cloudwatch.profiles": {
   "post": {
    "operationId": "logs.cloudwatch.profiles",
    "summary": "logs.cloudwatch.profiles",
    "description": "Needs **read** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `logs`.",
    "tags": [
     "Logs"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "logs"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "properties": {
         "project": {
          "type": "string"
         }
        },
        "required": [
         "project"
        ],
        "additionalProperties": false
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/LogAwsProfiles"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/logs.context": {
   "post": {
    "operationId": "logs.context",
    "summary": "logs.context",
    "description": "Needs **read** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `logs`.",
    "tags": [
     "Logs"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "logs"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "id": {
          "type": "string"
         },
         "around": {
          "type": "number",
          "description": "Lines either side on the same host; default 20, at most 100."
         }
        },
        "required": [
         "id",
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/LogContext"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/logs.dashboards": {
   "post": {
    "operationId": "logs.dashboards",
    "summary": "logs.dashboards",
    "description": "Needs **read** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `logs`.",
    "tags": [
     "Logs"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "logs"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "properties": {
         "project": {
          "type": "string"
         }
        },
        "required": [
         "project"
        ],
        "additionalProperties": false
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/LogDashboards"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/logs.dashboards.remove": {
   "post": {
    "operationId": "logs.dashboards.remove",
    "summary": "logs.dashboards.remove",
    "description": "Needs **act** access. About one project: `project` is its slug or id.\n\nChanges: `logs`. Refetch on `dataChanged` naming: `logs`.",
    "tags": [
     "Logs"
    ],
    "x-devdash-capability": "act",
    "x-devdash-project": true,
    "x-devdash-invalidates": [
     "logs"
    ],
    "x-devdash-reads": [
     "logs"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "id": {
          "type": "string"
         }
        },
        "required": [
         "id",
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "type": "boolean"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/logs.dashboards.save": {
   "post": {
    "operationId": "logs.dashboards.save",
    "summary": "logs.dashboards.save",
    "description": "Needs **act** access. About one project: `project` is its slug or id.\n\nChanges: `logs`. Refetch on `dataChanged` naming: `logs`.",
    "tags": [
     "Logs"
    ],
    "x-devdash-capability": "act",
    "x-devdash-project": true,
    "x-devdash-invalidates": [
     "logs"
    ],
    "x-devdash-reads": [
     "logs"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "id": {
          "type": "string"
         },
         "name": {
          "type": "string"
         },
         "template": {
          "type": "string",
          "description": "Create from a template (charts ignored)."
         },
         "charts": {
          "type": "array",
          "items": {
           "$ref": "#/components/schemas/LogDashboardChart"
          }
         }
        },
        "required": [
         "charts",
         "name",
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/LogDashboard"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/logs.export": {
   "post": {
    "operationId": "logs.export",
    "summary": "logs.export",
    "description": "Needs **read** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `logs`.",
    "tags": [
     "Logs"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "logs"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "query": {
          "type": "string"
         },
         "format": {
          "type": "string",
          "description": "`csv` or `ndjson`."
         },
         "limit": {
          "type": "number",
          "description": "At most 10,000."
         },
         "range": {
          "type": "string",
          "description": "`15m`, `1h`, `6h`, `24h`, `7d`, `30d`; ignored when `from` is given."
         },
         "from": {
          "type": "number",
          "description": "Microseconds since the epoch."
         },
         "to": {
          "type": "number"
         }
        },
        "required": [
         "format",
         "project",
         "query"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/LogExport"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/logs.facets": {
   "post": {
    "operationId": "logs.facets",
    "summary": "logs.facets",
    "description": "Needs **read** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `logs`.",
    "tags": [
     "Logs"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "logs"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "query": {
          "type": "string"
         },
         "fields": {
          "type": "array",
          "items": {
           "type": "string"
          },
          "description": "Extra fields to count, e.g. `attr.http.status_code`."
         },
         "range": {
          "type": "string",
          "description": "`15m`, `1h`, `6h`, `24h`, `7d`, `30d`; ignored when `from` is given."
         },
         "from": {
          "type": "number",
          "description": "Microseconds since the epoch."
         },
         "to": {
          "type": "number"
         }
        },
        "required": [
         "fields",
         "project",
         "query"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/LogFacets"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/logs.histogram": {
   "post": {
    "operationId": "logs.histogram",
    "summary": "logs.histogram",
    "description": "Needs **read** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `logs`.",
    "tags": [
     "Logs"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "logs"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "query": {
          "type": "string"
         },
         "bucket": {
          "type": "number",
          "description": "Bucket width in seconds; chosen from the range when absent."
         },
         "range": {
          "type": "string",
          "description": "`15m`, `1h`, `6h`, `24h`, `7d`, `30d`; ignored when `from` is given."
         },
         "from": {
          "type": "number",
          "description": "Microseconds since the epoch."
         },
         "to": {
          "type": "number"
         }
        },
        "required": [
         "project",
         "query"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/LogHistogram"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/logs.line": {
   "post": {
    "operationId": "logs.line",
    "summary": "logs.line",
    "description": "Needs **read** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `logs`.",
    "tags": [
     "Logs"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "logs"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "id": {
          "type": "string"
         }
        },
        "required": [
         "id",
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/LogLine"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/logs.manticore.describe": {
   "post": {
    "operationId": "logs.manticore.describe",
    "summary": "logs.manticore.describe",
    "description": "Needs **admin** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `logs`.",
    "tags": [
     "Logs"
    ],
    "x-devdash-capability": "admin",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "logs"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "url": {
          "type": "string",
          "description": "`http://127.0.0.1:9308` when empty."
         },
         "table": {
          "type": "string"
         },
         "key": {
          "type": "string",
          "description": "A saved source whose stored basic auth to use."
         },
         "username": {
          "type": "string"
         },
         "password": {
          "type": "string"
         }
        },
        "required": [
         "project",
         "url"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/LogManticoreTableInfo"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/logs.manticore.detect": {
   "post": {
    "operationId": "logs.manticore.detect",
    "summary": "logs.manticore.detect",
    "description": "Needs **read** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `logs`.",
    "tags": [
     "Logs"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "logs"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "properties": {
         "project": {
          "type": "string"
         }
        },
        "required": [
         "project"
        ],
        "additionalProperties": false
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "type": "array",
         "items": {
          "$ref": "#/components/schemas/LogManticoreLocal"
         }
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/logs.manticore.tables": {
   "post": {
    "operationId": "logs.manticore.tables",
    "summary": "logs.manticore.tables",
    "description": "Needs **admin** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `logs`.",
    "tags": [
     "Logs"
    ],
    "x-devdash-capability": "admin",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "logs"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "url": {
          "type": "string",
          "description": "`http://127.0.0.1:9308` when empty."
         },
         "table": {
          "type": "string"
         },
         "key": {
          "type": "string",
          "description": "A saved source whose stored basic auth to use."
         },
         "username": {
          "type": "string"
         },
         "password": {
          "type": "string"
         }
        },
        "required": [
         "project",
         "url"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "type": "array",
         "items": {
          "$ref": "#/components/schemas/LogManticoreTable"
         }
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/logs.overlays": {
   "post": {
    "operationId": "logs.overlays",
    "summary": "logs.overlays",
    "description": "Needs **read** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `live`, `runs`.",
    "tags": [
     "Logs"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "live",
     "runs"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "range": {
          "type": "string",
          "description": "`15m`, `1h`, `6h`, `24h`, `7d`, `30d`; ignored when `from` is given."
         },
         "from": {
          "type": "number",
          "description": "Microseconds since the epoch."
         },
         "to": {
          "type": "number"
         }
        },
        "required": [
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "type": "array",
         "items": {
          "$ref": "#/components/schemas/LogOverlay"
         }
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/logs.patterns": {
   "post": {
    "operationId": "logs.patterns",
    "summary": "logs.patterns",
    "description": "Needs **read** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `logs`.",
    "tags": [
     "Logs"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "logs"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "query": {
          "type": "string"
         },
         "level": {
          "type": "string",
          "description": "Lowest level grouped; default `warn`."
         },
         "range": {
          "type": "string",
          "description": "`15m`, `1h`, `6h`, `24h`, `7d`, `30d`; ignored when `from` is given."
         },
         "from": {
          "type": "number",
          "description": "Microseconds since the epoch."
         },
         "to": {
          "type": "number"
         }
        },
        "required": [
         "project",
         "query"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "type": "array",
         "items": {
          "$ref": "#/components/schemas/LogPattern"
         }
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/logs.query": {
   "post": {
    "operationId": "logs.query",
    "summary": "logs.query",
    "description": "Needs **read** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `logs`.",
    "tags": [
     "Logs"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "logs"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "query": {
          "type": "string"
         },
         "page": {
          "type": "number",
          "description": "1-based."
         },
         "size": {
          "type": "number",
          "description": "25, 50, 100 or 200."
         },
         "range": {
          "type": "string",
          "description": "`15m`, `1h`, `6h`, `24h`, `7d`, `30d`; ignored when `from` is given."
         },
         "from": {
          "type": "number",
          "description": "Microseconds since the epoch."
         },
         "to": {
          "type": "number"
         }
        },
        "required": [
         "project",
         "query"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/LogsPage"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/logs.related": {
   "post": {
    "operationId": "logs.related",
    "summary": "logs.related",
    "description": "Needs **read** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `logs`.",
    "tags": [
     "Logs"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "logs"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "ts": {
          "type": "number",
          "description": "The line's time, microseconds since the epoch."
         },
         "service": {
          "type": "string"
         }
        },
        "required": [
         "project",
         "ts"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/LogRelated"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/logs.settings.save": {
   "post": {
    "operationId": "logs.settings.save",
    "summary": "logs.settings.save",
    "description": "Needs **admin** access. About one project: `project` is its slug or id.\n\nChanges: `logs`. Refetch on `dataChanged` naming: `logs`.",
    "tags": [
     "Logs"
    ],
    "x-devdash-capability": "admin",
    "x-devdash-project": true,
    "x-devdash-invalidates": [
     "logs"
    ],
    "x-devdash-reads": [
     "logs"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "diskCapMb": {
          "type": "number",
          "description": "The disk cap in megabytes (100 MB to 200 GB)."
         }
        },
        "required": [
         "diskCapMb",
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "type": "boolean"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/logs.sources": {
   "post": {
    "operationId": "logs.sources",
    "summary": "logs.sources",
    "description": "Needs **read** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `logs`.",
    "tags": [
     "Logs"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "logs"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "properties": {
         "project": {
          "type": "string"
         }
        },
        "required": [
         "project"
        ],
        "additionalProperties": false
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/LogSources"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/logs.sources.remove": {
   "post": {
    "operationId": "logs.sources.remove",
    "summary": "logs.sources.remove",
    "description": "Needs **admin** access. About one project: `project` is its slug or id.\n\nChanges: `logs`. Refetch on `dataChanged` naming: `logs`.",
    "tags": [
     "Logs"
    ],
    "x-devdash-capability": "admin",
    "x-devdash-project": true,
    "x-devdash-invalidates": [
     "logs"
    ],
    "x-devdash-reads": [
     "logs"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "key": {
          "type": "string"
         }
        },
        "required": [
         "key",
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "type": "boolean"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/logs.sources.rotate": {
   "post": {
    "operationId": "logs.sources.rotate",
    "summary": "logs.sources.rotate",
    "description": "Needs **admin** access. About one project: `project` is its slug or id.\n\nChanges: `logs`. Refetch on `dataChanged` naming: `logs`.",
    "tags": [
     "Logs"
    ],
    "x-devdash-capability": "admin",
    "x-devdash-project": true,
    "x-devdash-invalidates": [
     "logs"
    ],
    "x-devdash-reads": [
     "logs"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "key": {
          "type": "string"
         }
        },
        "required": [
         "key",
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/LogSourceToken"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/logs.sources.save": {
   "post": {
    "operationId": "logs.sources.save",
    "summary": "logs.sources.save",
    "description": "Needs **admin** access. About one project: `project` is its slug or id.\n\nChanges: `logs`. Refetch on `dataChanged` naming: `logs`.",
    "tags": [
     "Logs"
    ],
    "x-devdash-capability": "admin",
    "x-devdash-project": true,
    "x-devdash-invalidates": [
     "logs"
    ],
    "x-devdash-reads": [
     "logs"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "key": {
          "type": "string",
          "description": "Absent creates a source."
         },
         "name": {
          "type": "string"
         },
         "kind": {
          "type": "string"
         },
         "retentionDays": {
          "type": "number"
         },
         "config": {
          "$ref": "#/components/schemas/JsonValue",
          "description": "Kind-specific: file `{ paths, parser, service, fromStart }`, docker `{ containers }`, macos `{ processes, subsystem, level }`, push kinds `{ service }`, drupal `{ table, site }`, manticore `{ url, table, mapping, service }`, newrelic `{ where, account }`, sentry `{ projects, environment }`, cloudwatch `{ region, groups, filterPattern, profile }`, cloudflare `{ workers, http, zones, scripts, service }`, kubernetes `{ context, namespaces, selector, containers, maxStreams, kubeconfig }`; every pull kind also `{ every, maxPerPull, start }`."
         },
         "enabled": {
          "type": "boolean"
         },
         "secret": {
          "type": "object",
          "additionalProperties": {
           "type": "string"
          },
          "description": "Manticore `{ username, password }`, CloudWatch `{ accessKeyId, secretAccessKey, sessionToken }`: kept in the keychain. An empty object removes the stored one; absent keeps it."
         }
        },
        "required": [
         "config",
         "enabled",
         "kind",
         "name",
         "project",
         "retentionDays"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/LogSource"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/logs.sources.test": {
   "post": {
    "operationId": "logs.sources.test",
    "summary": "logs.sources.test",
    "description": "Needs **admin** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `logs`.",
    "tags": [
     "Logs"
    ],
    "x-devdash-capability": "admin",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "logs"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "kind": {
          "type": "string"
         },
         "config": {
          "$ref": "#/components/schemas/JsonValue"
         },
         "key": {
          "type": "string",
          "description": "The source being edited, whose stored secret is used when `secret` is absent."
         },
         "secret": {
          "type": "object",
          "additionalProperties": {
           "type": "string"
          }
         }
        },
        "required": [
         "config",
         "kind",
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/LogSourceTestResult"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/logs.sources.token": {
   "post": {
    "operationId": "logs.sources.token",
    "summary": "logs.sources.token",
    "description": "Needs **admin** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `logs`.",
    "tags": [
     "Logs"
    ],
    "x-devdash-capability": "admin",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "logs"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "key": {
          "type": "string"
         }
        },
        "required": [
         "key",
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/LogSourceToken"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/logs.suggest": {
   "post": {
    "operationId": "logs.suggest",
    "summary": "logs.suggest",
    "description": "Needs **read** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `logs`.",
    "tags": [
     "Logs"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "logs"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "field": {
          "type": "string",
          "description": "A field to suggest values for; absent suggests field names."
         },
         "prefix": {
          "type": "string"
         }
        },
        "required": [
         "prefix",
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "type": "array",
         "items": {
          "$ref": "#/components/schemas/LogSuggestion"
         }
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/logs.views": {
   "post": {
    "operationId": "logs.views",
    "summary": "logs.views",
    "description": "Needs **read** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `logs`.",
    "tags": [
     "Logs"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "logs"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "properties": {
         "project": {
          "type": "string"
         }
        },
        "required": [
         "project"
        ],
        "additionalProperties": false
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "type": "array",
         "items": {
          "$ref": "#/components/schemas/LogView"
         }
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/logs.views.remove": {
   "post": {
    "operationId": "logs.views.remove",
    "summary": "logs.views.remove",
    "description": "Needs **act** access. About one project: `project` is its slug or id.\n\nChanges: `logs`. Refetch on `dataChanged` naming: `logs`.",
    "tags": [
     "Logs"
    ],
    "x-devdash-capability": "act",
    "x-devdash-project": true,
    "x-devdash-invalidates": [
     "logs"
    ],
    "x-devdash-reads": [
     "logs"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "id": {
          "type": "string"
         }
        },
        "required": [
         "id",
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "type": "boolean"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/logs.views.save": {
   "post": {
    "operationId": "logs.views.save",
    "summary": "logs.views.save",
    "description": "Needs **act** access. About one project: `project` is its slug or id.\n\nChanges: `logs`. Refetch on `dataChanged` naming: `logs`.",
    "tags": [
     "Logs"
    ],
    "x-devdash-capability": "act",
    "x-devdash-project": true,
    "x-devdash-invalidates": [
     "logs"
    ],
    "x-devdash-reads": [
     "logs"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "id": {
          "type": "string"
         },
         "name": {
          "type": "string"
         },
         "query": {
          "type": "string"
         },
         "range": {
          "type": "string"
         },
         "columns": {
          "type": "array",
          "items": {
           "type": "string"
          }
         }
        },
        "required": [
         "columns",
         "name",
         "project",
         "query"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/LogView"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/mcp.auth.finish": {
   "post": {
    "operationId": "mcp.auth.finish",
    "summary": "mcp.auth.finish",
    "description": "Needs **admin** access. About one project: `project` is its slug or id.\n\nChanges: `mcp`. Refetch on `dataChanged` naming: `mcp`.",
    "tags": [
     "MCP"
    ],
    "x-devdash-capability": "admin",
    "x-devdash-project": true,
    "x-devdash-invalidates": [
     "mcp"
    ],
    "x-devdash-reads": [
     "mcp"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "id": {
          "type": "string"
         },
         "code": {
          "type": "string",
          "description": "When the redirect could not reach this Mac: the `code` from the address bar, pasted by hand."
         },
         "state": {
          "type": "string"
         },
         "signOut": {
          "type": "boolean",
          "description": "Sign out instead."
         }
        },
        "required": [
         "id",
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/AuthStatus"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/mcp.auth.start": {
   "post": {
    "operationId": "mcp.auth.start",
    "summary": "mcp.auth.start",
    "description": "Needs **admin** access. About one project: `project` is its slug or id.\n\nChanges: `mcp`. Refetch on `dataChanged` naming: `mcp`.",
    "tags": [
     "MCP"
    ],
    "x-devdash-capability": "admin",
    "x-devdash-project": true,
    "x-devdash-invalidates": [
     "mcp"
    ],
    "x-devdash-reads": [
     "mcp"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "id": {
          "type": "string"
         },
         "clientSecret": {
          "type": "string",
          "description": "For a server that does not register clients itself (Slack): the secret of the app whose client id is in the server's OAuth settings."
         }
        },
        "required": [
         "id",
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/AuthStarted"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/mcp.call": {
   "post": {
    "operationId": "mcp.call",
    "summary": "mcp.call",
    "description": "Needs **operate** access. About one project: `project` is its slug or id.\n\nChanges: `mcp`. Refetch on `dataChanged` naming: `mcp`.",
    "tags": [
     "MCP"
    ],
    "x-devdash-capability": "operate",
    "x-devdash-project": true,
    "x-devdash-invalidates": [
     "mcp"
    ],
    "x-devdash-reads": [
     "mcp"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "id": {
          "type": "string"
         },
         "tool": {
          "type": "string"
         },
         "arguments": {
          "$ref": "#/components/schemas/Record_string_unknown"
         },
         "confirm": {
          "type": "boolean",
          "description": "Required for a tool that does not declare itself read-only."
         }
        },
        "required": [
         "id",
         "project",
         "tool"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/McpCallResult"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/mcp.calls": {
   "post": {
    "operationId": "mcp.calls",
    "summary": "mcp.calls",
    "description": "Needs **read** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `mcp`.",
    "tags": [
     "MCP"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "mcp"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "id": {
          "type": "string",
          "description": "One server's calls; absent for all."
         },
         "limit": {
          "type": "number"
         }
        },
        "required": [
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "type": "array",
         "items": {
          "$ref": "#/components/schemas/McpCall"
         }
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/mcp.server": {
   "post": {
    "operationId": "mcp.server",
    "summary": "mcp.server",
    "description": "Needs **read** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `mcp`.",
    "tags": [
     "MCP"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "mcp"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "id": {
          "type": "string"
         }
        },
        "required": [
         "id",
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/McpServerDetail"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/mcp.server.enable": {
   "post": {
    "operationId": "mcp.server.enable",
    "summary": "mcp.server.enable",
    "description": "Needs **admin** access. About one project: `project` is its slug or id.\n\nChanges: `mcp`, `followups`. Refetch on `dataChanged` naming: `mcp`.",
    "tags": [
     "MCP"
    ],
    "x-devdash-capability": "admin",
    "x-devdash-project": true,
    "x-devdash-invalidates": [
     "mcp",
     "followups"
    ],
    "x-devdash-reads": [
     "mcp"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "id": {
          "type": "string"
         },
         "enabled": {
          "type": "boolean"
         }
        },
        "required": [
         "enabled",
         "id",
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "type": "boolean"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/mcp.server.remove": {
   "post": {
    "operationId": "mcp.server.remove",
    "summary": "mcp.server.remove",
    "description": "Needs **admin** access. About one project: `project` is its slug or id.\n\nChanges: `mcp`. Refetch on `dataChanged` naming: `mcp`.",
    "tags": [
     "MCP"
    ],
    "x-devdash-capability": "admin",
    "x-devdash-project": true,
    "x-devdash-invalidates": [
     "mcp"
    ],
    "x-devdash-reads": [
     "mcp"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "id": {
          "type": "string"
         }
        },
        "required": [
         "id",
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Removed"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/mcp.server.restart": {
   "post": {
    "operationId": "mcp.server.restart",
    "summary": "mcp.server.restart",
    "description": "Needs **admin** access. About one project: `project` is its slug or id.\n\nChanges: `mcp`. Refetch on `dataChanged` naming: `mcp`.",
    "tags": [
     "MCP"
    ],
    "x-devdash-capability": "admin",
    "x-devdash-project": true,
    "x-devdash-invalidates": [
     "mcp"
    ],
    "x-devdash-reads": [
     "mcp"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "id": {
          "type": "string"
         }
        },
        "required": [
         "id",
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/McpStatus"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/mcp.server.save": {
   "post": {
    "operationId": "mcp.server.save",
    "summary": "mcp.server.save",
    "description": "Needs **admin** access. About one project: `project` is its slug or id.\n\nChanges: `mcp`. Refetch on `dataChanged` naming: `mcp`.",
    "tags": [
     "MCP"
    ],
    "x-devdash-capability": "admin",
    "x-devdash-project": true,
    "x-devdash-invalidates": [
     "mcp"
    ],
    "x-devdash-reads": [
     "mcp"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "id": {
          "type": "string",
          "description": "Absent adds a server; a discovered server's id saves an edited copy that replaces it."
         },
         "name": {
          "type": "string"
         },
         "transport": {
          "type": "string",
          "description": "`stdio`, `http` or `sse`."
         },
         "command": {
          "type": "string"
         },
         "args": {
          "type": "array",
          "items": {
           "type": "string"
          }
         },
         "cwd": {
          "type": "string"
         },
         "url": {
          "type": "string"
         },
         "env": {
          "$ref": "#/components/schemas/Record_string_string_null",
          "description": "Name → value; `null` keeps the stored value, a missing name removes it."
         },
         "headers": {
          "$ref": "#/components/schemas/Record_string_string_null"
         },
         "oauth": {
          "$ref": "#/components/schemas/McpOAuth"
         },
         "enable": {
          "type": "boolean",
          "description": "Enable it in this project once saved."
         }
        },
        "required": [
         "name",
         "project",
         "transport"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/SavedServer"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/mcp.servers": {
   "post": {
    "operationId": "mcp.servers",
    "summary": "mcp.servers",
    "description": "Needs **read** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `mcp`.",
    "tags": [
     "MCP"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "mcp"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "properties": {
         "project": {
          "type": "string"
         }
        },
        "required": [
         "project"
        ],
        "additionalProperties": false
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "type": "array",
         "items": {
          "$ref": "#/components/schemas/McpServer"
         }
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/mcp.tools": {
   "post": {
    "operationId": "mcp.tools",
    "summary": "mcp.tools",
    "description": "Needs **operate** access. About one project: `project` is its slug or id.\n\nChanges: `mcp`. Refetch on `dataChanged` naming: `mcp`.",
    "tags": [
     "MCP"
    ],
    "x-devdash-capability": "operate",
    "x-devdash-project": true,
    "x-devdash-invalidates": [
     "mcp"
    ],
    "x-devdash-reads": [
     "mcp"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "id": {
          "type": "string"
         }
        },
        "required": [
         "id",
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/McpTools"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/monitor": {
   "post": {
    "operationId": "monitor",
    "summary": "monitor",
    "description": "Needs **read** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `monitors`, `tests`, `logs`.",
    "tags": [
     "Monitor"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "monitors",
     "tests",
     "logs"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "id": {
          "type": "string"
         },
         "page": {
          "type": "number",
          "description": "1-based page of incidents."
         },
         "size": {
          "type": "number"
         },
         "period": {
          "type": "string",
          "description": "`24h` (default) or `7d`: the chart's window."
         }
        },
        "required": [
         "id",
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/MonitorView"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/monitor.incidents": {
   "post": {
    "operationId": "monitor.incidents",
    "summary": "monitor.incidents",
    "description": "Needs **read** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `monitors`, `tests`, `logs`.",
    "tags": [
     "Monitor"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "monitors",
     "tests",
     "logs"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "from": {
          "type": "string",
          "description": "RFC 3339."
         },
         "to": {
          "type": "string",
          "description": "RFC 3339; now when absent."
         },
         "source": {
          "type": "array",
          "items": {
           "type": "string"
          }
         },
         "monitor": {
          "type": "array",
          "items": {
           "type": "string"
          },
          "description": "Only these monitors."
         },
         "open": {
          "type": "boolean",
          "description": "Only incidents still open."
         }
        },
        "required": [
         "from",
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/MonitorIncidents"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/monitor.mute": {
   "post": {
    "operationId": "monitor.mute",
    "summary": "monitor.mute",
    "description": "Needs **act** access. About one project: `project` is its slug or id.\n\nChanges: `monitors`. Refetch on `dataChanged` naming: `monitors`, `tests`, `logs`.",
    "tags": [
     "Monitor"
    ],
    "x-devdash-capability": "act",
    "x-devdash-project": true,
    "x-devdash-invalidates": [
     "monitors"
    ],
    "x-devdash-reads": [
     "monitors",
     "tests",
     "logs"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "id": {
          "type": "string",
          "description": "The monitor's id, from any source."
         },
         "minutes": {
          "type": [
           "number",
           "null"
          ],
          "description": "For how long, 1 minute to 30 days. Absent: until unmuted."
         }
        },
        "required": [
         "id",
         "minutes",
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/MonitorMuted"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/monitor.series": {
   "post": {
    "operationId": "monitor.series",
    "summary": "monitor.series",
    "description": "Needs **read** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `monitors`, `tests`, `logs`.",
    "tags": [
     "Monitor"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "monitors",
     "tests",
     "logs"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "id": {
          "type": "string"
         },
         "from": {
          "type": "string",
          "description": "RFC 3339."
         },
         "to": {
          "type": "string",
          "description": "RFC 3339; now when absent."
         }
        },
        "required": [
         "from",
         "id",
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/MonitorSeriesView"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/monitor.unmute": {
   "post": {
    "operationId": "monitor.unmute",
    "summary": "monitor.unmute",
    "description": "Needs **act** access. About one project: `project` is its slug or id.\n\nChanges: `monitors`. Refetch on `dataChanged` naming: `monitors`, `tests`, `logs`.",
    "tags": [
     "Monitor"
    ],
    "x-devdash-capability": "act",
    "x-devdash-project": true,
    "x-devdash-invalidates": [
     "monitors"
    ],
    "x-devdash-reads": [
     "monitors",
     "tests",
     "logs"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "id": {
          "type": "string"
         }
        },
        "required": [
         "id",
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/MonitorMuted"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/monitors.sync": {
   "post": {
    "operationId": "monitors.sync",
    "summary": "monitors.sync",
    "description": "Needs **act** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `monitors`, `integrations`.",
    "tags": [
     "Monitor"
    ],
    "x-devdash-capability": "act",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "monitors",
     "integrations"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "properties": {
         "project": {
          "type": "string"
         }
        },
        "required": [
         "project"
        ],
        "additionalProperties": false
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/MonitorsSyncStarted"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/newrelic.track": {
   "post": {
    "operationId": "newrelic.track",
    "summary": "newrelic.track",
    "description": "Needs **admin** access. About one project: `project` is its slug or id.\n\nChanges: `services`, `integrations`. Refetch on `dataChanged` naming: `services`, `integrations`.",
    "tags": [
     "New Relic"
    ],
    "x-devdash-capability": "admin",
    "x-devdash-project": true,
    "x-devdash-invalidates": [
     "services",
     "integrations"
    ],
    "x-devdash-reads": [
     "services",
     "integrations"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "chosen": {
          "type": "array",
          "items": {
           "type": "array",
           "items": {
            "type": "string"
           },
           "minItems": 2,
           "maxItems": 2
          },
          "description": "`[guid, name]` pairs: the complete selection, replacing the previous one."
         }
        },
        "required": [
         "chosen",
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "type": "array",
         "items": {
          "$ref": "#/components/schemas/TrackedEntity"
         }
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/newrelic.tracked": {
   "post": {
    "operationId": "newrelic.tracked",
    "summary": "newrelic.tracked",
    "description": "Needs **read** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `services`, `integrations`.",
    "tags": [
     "New Relic"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "services",
     "integrations"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "properties": {
         "project": {
          "type": "string"
         }
        },
        "required": [
         "project"
        ],
        "additionalProperties": false
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "type": "array",
         "items": {
          "$ref": "#/components/schemas/Watchable"
         }
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/notifications": {
   "post": {
    "operationId": "notifications",
    "summary": "notifications",
    "description": "Needs **read** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `inbox`, `notifications`.",
    "tags": [
     "Notifications"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "inbox",
     "notifications"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "properties": {
         "project": {
          "type": "string"
         }
        },
        "required": [
         "project"
        ],
        "additionalProperties": false
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Notifications"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/overview.suggest": {
   "post": {
    "operationId": "overview.suggest",
    "summary": "overview.suggest",
    "description": "Needs **read** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `presets`, `integrations`, `logs`, `sentry`, `repositories`, `live`.",
    "tags": [
     "Overview"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "presets",
     "integrations",
     "logs",
     "sentry",
     "repositories",
     "live"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "properties": {
         "project": {
          "type": "string"
         }
        },
        "required": [
         "project"
        ],
        "additionalProperties": false
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "type": "array",
         "items": {
          "$ref": "#/components/schemas/OverviewSuggestion"
         }
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/plan.accept": {
   "post": {
    "operationId": "plan.accept",
    "summary": "plan.accept",
    "description": "Needs **act** access. About one project: `project` is its slug or id.\n\nChanges: `tasks`, `runs`, `inbox`, `automations`. Refetch on `dataChanged` naming: `tasks`, `runs`, `automations`.",
    "tags": [
     "Plan"
    ],
    "x-devdash-capability": "act",
    "x-devdash-project": true,
    "x-devdash-invalidates": [
     "tasks",
     "runs",
     "inbox",
     "automations"
    ],
    "x-devdash-reads": [
     "tasks",
     "runs",
     "automations"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "task": {
          "type": "string"
         },
         "review": {
          "type": "string",
          "description": "The proposal's id."
         },
         "profile": {
          "type": "string",
          "description": "The workflow profile to implement with."
         }
        },
        "required": [
         "profile",
         "project",
         "review",
         "task"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/PlanAccepted"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/plan.address-review": {
   "post": {
    "operationId": "plan.address-review",
    "summary": "plan.address-review",
    "description": "Needs **act** access. About one project: `project` is its slug or id.\n\nChanges: `tasks`, `runs`, `inbox`, `automations`. Refetch on `dataChanged` naming: `tasks`, `runs`, `automations`.",
    "tags": [
     "Plan"
    ],
    "x-devdash-capability": "act",
    "x-devdash-project": true,
    "x-devdash-invalidates": [
     "tasks",
     "runs",
     "inbox",
     "automations"
    ],
    "x-devdash-reads": [
     "tasks",
     "runs",
     "automations"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "task": {
          "type": "string"
         },
         "profile": {
          "type": "string",
          "description": "The workflow profile whose planning model writes the new version."
         }
        },
        "required": [
         "profile",
         "project",
         "task"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "type": "boolean"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/plan.answers": {
   "post": {
    "operationId": "plan.answers",
    "summary": "plan.answers",
    "description": "Needs **read** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `tasks`, `runs`, `automations`.",
    "tags": [
     "Plan"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "tasks",
     "runs",
     "automations"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "run": {
          "type": "string",
          "description": "The review run whose questions are being answered."
         }
        },
        "required": [
         "project",
         "run"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "type": [
          "string",
          "null"
         ]
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/plan.answers.save": {
   "post": {
    "operationId": "plan.answers.save",
    "summary": "plan.answers.save",
    "description": "Needs **act** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `tasks`, `runs`, `automations`.",
    "tags": [
     "Plan"
    ],
    "x-devdash-capability": "act",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "tasks",
     "runs",
     "automations"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "run": {
          "type": "string"
         },
         "value": {
          "type": "string",
          "description": "The form's state, opaque to the service. At most 64 KB."
         }
        },
        "required": [
         "project",
         "run",
         "value"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "type": "boolean"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/plan.auto.status": {
   "post": {
    "operationId": "plan.auto.status",
    "summary": "plan.auto.status",
    "description": "Needs **read** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `tasks`, `runs`, `automations`.",
    "tags": [
     "Plan"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "tasks",
     "runs",
     "automations"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "task": {
          "type": "string"
         }
        },
        "required": [
         "project",
         "task"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/PlanTracking"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/plan.auto.toggle": {
   "post": {
    "operationId": "plan.auto.toggle",
    "summary": "plan.auto.toggle",
    "description": "Needs **act** access. About one project: `project` is its slug or id.\n\nChanges: `tasks`, `runs`, `inbox`, `automations`. Refetch on `dataChanged` naming: `tasks`, `runs`, `automations`.",
    "tags": [
     "Plan"
    ],
    "x-devdash-capability": "act",
    "x-devdash-project": true,
    "x-devdash-invalidates": [
     "tasks",
     "runs",
     "inbox",
     "automations"
    ],
    "x-devdash-reads": [
     "tasks",
     "runs",
     "automations"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "task": {
          "type": "string"
         },
         "enabled": {
          "type": "boolean"
         },
         "profile": {
          "type": [
           "string",
           "null"
          ],
          "description": "The workflow profile whose planning model re-plans. Required to enable."
         }
        },
        "required": [
         "enabled",
         "profile",
         "project",
         "task"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/PlanTracking"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/plan.keep": {
   "post": {
    "operationId": "plan.keep",
    "summary": "plan.keep",
    "description": "Needs **act** access. About one project: `project` is its slug or id.\n\nChanges: `tasks`, `runs`, `inbox`, `automations`. Refetch on `dataChanged` naming: `tasks`, `runs`, `automations`.",
    "tags": [
     "Plan"
    ],
    "x-devdash-capability": "act",
    "x-devdash-project": true,
    "x-devdash-invalidates": [
     "tasks",
     "runs",
     "inbox",
     "automations"
    ],
    "x-devdash-reads": [
     "tasks",
     "runs",
     "automations"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "task": {
          "type": "string"
         },
         "review": {
          "type": "string",
          "description": "The informational proposal that found nothing to change."
         }
        },
        "required": [
         "project",
         "review",
         "task"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "type": "boolean"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/plan.proposals": {
   "post": {
    "operationId": "plan.proposals",
    "summary": "plan.proposals",
    "description": "Needs **read** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `tasks`, `runs`, `automations`.",
    "tags": [
     "Plan"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "tasks",
     "runs",
     "automations"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "task": {
          "type": "string"
         }
        },
        "required": [
         "project",
         "task"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "type": "array",
         "items": {
          "$ref": "#/components/schemas/PlanProposal"
         }
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/plan.revise": {
   "post": {
    "operationId": "plan.revise",
    "summary": "plan.revise",
    "description": "Needs **act** access. About one project: `project` is its slug or id.\n\nChanges: `tasks`, `runs`, `inbox`, `automations`. Refetch on `dataChanged` naming: `tasks`, `runs`, `automations`.",
    "tags": [
     "Plan"
    ],
    "x-devdash-capability": "act",
    "x-devdash-project": true,
    "x-devdash-invalidates": [
     "tasks",
     "runs",
     "inbox",
     "automations"
    ],
    "x-devdash-reads": [
     "tasks",
     "runs",
     "automations"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "task": {
          "type": "string"
         },
         "profile": {
          "type": "string",
          "description": "The workflow profile whose planning model writes the plan."
         },
         "review": {
          "type": [
           "string",
           "null"
          ],
          "description": "The proposal being answered. With `answers`, asks for a new version; without both, asks for a first (or fresh) plan."
         },
         "answers": {
          "type": [
           "string",
           "null"
          ]
         }
        },
        "required": [
         "answers",
         "profile",
         "project",
         "review",
         "task"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "type": "boolean"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/presets": {
   "post": {
    "operationId": "presets",
    "summary": "presets",
    "description": "Needs **read** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `presets`.",
    "tags": [
     "Presets"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "presets"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "screen": {
          "type": "string"
         }
        },
        "required": [
         "project",
         "screen"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "type": "array",
         "items": {
          "$ref": "#/components/schemas/Preset"
         }
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/presets.default": {
   "post": {
    "operationId": "presets.default",
    "summary": "presets.default",
    "description": "Needs **act** access. About one project: `project` is its slug or id.\n\nChanges: `presets`. Refetch on `dataChanged` naming: `presets`.",
    "tags": [
     "Presets"
    ],
    "x-devdash-capability": "act",
    "x-devdash-project": true,
    "x-devdash-invalidates": [
     "presets"
    ],
    "x-devdash-reads": [
     "presets"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "screen": {
          "type": "string"
         },
         "id": {
          "type": [
           "string",
           "null"
          ],
          "description": "`null` clears the default."
         }
        },
        "required": [
         "id",
         "project",
         "screen"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "type": "array",
         "items": {
          "$ref": "#/components/schemas/Preset"
         }
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/presets.remove": {
   "post": {
    "operationId": "presets.remove",
    "summary": "presets.remove",
    "description": "Needs **act** access. About one project: `project` is its slug or id.\n\nChanges: `presets`. Refetch on `dataChanged` naming: `presets`.",
    "tags": [
     "Presets"
    ],
    "x-devdash-capability": "act",
    "x-devdash-project": true,
    "x-devdash-invalidates": [
     "presets"
    ],
    "x-devdash-reads": [
     "presets"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "screen": {
          "type": "string"
         },
         "id": {
          "type": "string"
         }
        },
        "required": [
         "id",
         "project",
         "screen"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "type": "array",
         "items": {
          "$ref": "#/components/schemas/Preset"
         }
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/presets.save": {
   "post": {
    "operationId": "presets.save",
    "summary": "presets.save",
    "description": "Needs **act** access. About one project: `project` is its slug or id.\n\nChanges: `presets`. Refetch on `dataChanged` naming: `presets`.",
    "tags": [
     "Presets"
    ],
    "x-devdash-capability": "act",
    "x-devdash-project": true,
    "x-devdash-invalidates": [
     "presets"
    ],
    "x-devdash-reads": [
     "presets"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "screen": {
          "type": "string"
         },
         "id": {
          "type": "string",
          "description": "Absent creates one."
         },
         "name": {
          "type": "string"
         },
         "color": {
          "type": "string"
         },
         "params": {
          "type": "object",
          "additionalProperties": {
           "type": "string"
          }
         }
        },
        "required": [
         "name",
         "params",
         "project",
         "screen"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Preset"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/profiles": {
   "post": {
    "operationId": "profiles",
    "summary": "profiles",
    "description": "Needs **read** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `settings`.",
    "tags": [
     "Profiles"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "settings"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "properties": {
         "project": {
          "type": "string"
         }
        },
        "required": [
         "project"
        ],
        "additionalProperties": false
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "type": "array",
         "items": {
          "$ref": "#/components/schemas/EnabledProfile"
         }
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/project.agents": {
   "post": {
    "operationId": "project.agents",
    "summary": "project.agents",
    "description": "Needs **read** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `settings`.",
    "tags": [
     "Project"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "settings"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "properties": {
         "project": {
          "type": "string"
         }
        },
        "required": [
         "project"
        ],
        "additionalProperties": false
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "type": "array",
         "items": {
          "$ref": "#/components/schemas/JsonValue"
         }
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/project.agents.delete": {
   "post": {
    "operationId": "project.agents.delete",
    "summary": "project.agents.delete",
    "description": "Needs **admin** access. About one project: `project` is its slug or id.\n\nChanges: `settings`, `terminals`. Refetch on `dataChanged` naming: `settings`.",
    "tags": [
     "Project"
    ],
    "x-devdash-capability": "admin",
    "x-devdash-project": true,
    "x-devdash-invalidates": [
     "settings",
     "terminals"
    ],
    "x-devdash-reads": [
     "settings"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "id": {
          "type": "string"
         }
        },
        "required": [
         "id",
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "type": "array",
         "items": {
          "$ref": "#/components/schemas/JsonValue"
         }
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/project.agents.save": {
   "post": {
    "operationId": "project.agents.save",
    "summary": "project.agents.save",
    "description": "Needs **admin** access. About one project: `project` is its slug or id.\n\nChanges: `settings`, `terminals`. Refetch on `dataChanged` naming: `settings`.",
    "tags": [
     "Project"
    ],
    "x-devdash-capability": "admin",
    "x-devdash-project": true,
    "x-devdash-invalidates": [
     "settings",
     "terminals"
    ],
    "x-devdash-reads": [
     "settings"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "profile": {
          "$ref": "#/components/schemas/Record_string_unknown",
          "description": "Core's profile input, validated by core: `id` (absent creates), `name`, `kind` (`claude`, `codex` or `custom`; fixed on a built-in), `executable`, `arguments` (an array, never a command string), `environmentAllowlist` (variable names), `icon`, `enabled`. An update is a patch: a field left out keeps its value."
         }
        },
        "required": [
         "profile",
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "type": "array",
         "items": {
          "$ref": "#/components/schemas/JsonValue"
         }
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/project.chat.rename": {
   "post": {
    "operationId": "project.chat.rename",
    "summary": "project.chat.rename",
    "description": "Needs **act** access. About one project: `project` is its slug or id.\n\nChanges: `tasks`. Refetch on `dataChanged` naming: `projects`.",
    "tags": [
     "Project"
    ],
    "x-devdash-capability": "act",
    "x-devdash-project": true,
    "x-devdash-invalidates": [
     "tasks"
    ],
    "x-devdash-reads": [
     "projects"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "name": {
          "type": "string"
         }
        },
        "required": [
         "name",
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "type": "string"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/project.create": {
   "post": {
    "operationId": "project.create",
    "summary": "project.create",
    "description": "Needs **admin** access. About the installation, not one project.\n\nChanges: `projects`. Refetch on `dataChanged` naming: `projects`.",
    "tags": [
     "Project"
    ],
    "x-devdash-capability": "admin",
    "x-devdash-project": false,
    "x-devdash-invalidates": [
     "projects"
    ],
    "x-devdash-reads": [
     "projects"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/CreateProject"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Created"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/project.data": {
   "post": {
    "operationId": "project.data",
    "summary": "project.data",
    "description": "Needs **admin** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `settings`, `integrations`.",
    "tags": [
     "Project"
    ],
    "x-devdash-capability": "admin",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "settings",
     "integrations"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "properties": {
         "project": {
          "type": "string"
         }
        },
        "required": [
         "project"
        ],
        "additionalProperties": false
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/ProjectData"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/project.export": {
   "post": {
    "operationId": "project.export",
    "summary": "project.export",
    "description": "Needs **admin** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `projects`.",
    "tags": [
     "Project"
    ],
    "x-devdash-capability": "admin",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "projects"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "properties": {
         "project": {
          "type": "string"
         }
        },
        "required": [
         "project"
        ],
        "additionalProperties": false
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Exported"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/project.integrations": {
   "post": {
    "operationId": "project.integrations",
    "summary": "project.integrations",
    "description": "Needs **admin** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `integrations`.",
    "tags": [
     "Project"
    ],
    "x-devdash-capability": "admin",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "integrations"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "properties": {
         "project": {
          "type": "string"
         }
        },
        "required": [
         "project"
        ],
        "additionalProperties": false
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/ProjectIntegrations"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/project.preferences": {
   "post": {
    "operationId": "project.preferences",
    "summary": "project.preferences",
    "description": "Needs **read** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `settings`.",
    "tags": [
     "Project"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "settings"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "properties": {
         "project": {
          "type": "string"
         }
        },
        "required": [
         "project"
        ],
        "additionalProperties": false
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/ProjectPreferences"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/project.preferences.save": {
   "post": {
    "operationId": "project.preferences.save",
    "summary": "project.preferences.save",
    "description": "Needs **admin** access. About one project: `project` is its slug or id.\n\nChanges: `settings`, `tasks`, `inbox`. Refetch on `dataChanged` naming: `settings`.",
    "tags": [
     "Project"
    ],
    "x-devdash-capability": "admin",
    "x-devdash-project": true,
    "x-devdash-invalidates": [
     "settings",
     "tasks",
     "inbox"
    ],
    "x-devdash-reads": [
     "settings"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "dateOrder": {
          "type": "string",
          "description": "`international` (day first), `us` (month first) or `iso`."
         },
         "dateLength": {
          "type": "string",
          "description": "`short`, `medium` or `long`."
         },
         "branchTemplate": {
          "type": [
           "string",
           "null"
          ],
          "description": "How a task's branch is named. `null` reads as the default template."
         },
         "runBudgetCents": {
          "type": "number",
          "description": "What one run may spend, in US cents. Zero is no cap."
         }
        },
        "required": [
         "branchTemplate",
         "dateLength",
         "dateOrder",
         "project",
         "runBudgetCents"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/ProjectPreferences"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/project.reclaim": {
   "post": {
    "operationId": "project.reclaim",
    "summary": "project.reclaim",
    "description": "Needs **admin** access. About one project: `project` is its slug or id.\n\nChanges: `settings`, `search`. Refetch on `dataChanged` naming: `projects`.",
    "tags": [
     "Project"
    ],
    "x-devdash-capability": "admin",
    "x-devdash-project": true,
    "x-devdash-invalidates": [
     "settings",
     "search"
    ],
    "x-devdash-reads": [
     "projects"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "properties": {
         "project": {
          "type": "string"
         }
        },
        "required": [
         "project"
        ],
        "additionalProperties": false
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Reclaimed"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/project.remove": {
   "post": {
    "operationId": "project.remove",
    "summary": "project.remove",
    "description": "Needs **admin** access. About one project: `project` is its slug or id.\n\nChanges: `projects`, `tasks`, `pulls`, `runs`, `inbox`, `releases`, `live`, `services`, `terminals`, `automations`, `settings`, `search`, `favorites`, `notifications`, `repositories`, `integrations`, `mcp`, `followups`, `logs`, `ai`, `tests`, `local`, `reports`, `sentry`, `monitors`, `presets`, `cloudflare`, `kubernetes`. Refetch on `dataChanged` naming: `projects`.",
    "tags": [
     "Project"
    ],
    "x-devdash-capability": "admin",
    "x-devdash-project": true,
    "x-devdash-invalidates": [
     "projects",
     "tasks",
     "pulls",
     "runs",
     "inbox",
     "releases",
     "live",
     "services",
     "terminals",
     "automations",
     "settings",
     "search",
     "favorites",
     "notifications",
     "repositories",
     "integrations",
     "mcp",
     "followups",
     "logs",
     "ai",
     "tests",
     "local",
     "reports",
     "sentry",
     "monitors",
     "presets",
     "cloudflare",
     "kubernetes"
    ],
    "x-devdash-reads": [
     "projects"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "confirm": {
          "type": [
           "string",
           "null"
          ],
          "description": "The token a first call returned. Absent asks for one."
         }
        },
        "required": [
         "confirm",
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/RemoveOutcome"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/project.repositories": {
   "post": {
    "operationId": "project.repositories",
    "summary": "project.repositories",
    "description": "Needs **read** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `repositories`.",
    "tags": [
     "Project"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "repositories"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "archived": {
          "type": "boolean",
          "description": "Include archived repositories."
         }
        },
        "required": [
         "archived",
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/JsonValue"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/project.restore": {
   "post": {
    "operationId": "project.restore",
    "summary": "project.restore",
    "description": "Needs **admin** access. About one project: `project` is its slug or id.\n\nChanges: `projects`, `tasks`, `pulls`, `runs`, `inbox`, `releases`, `live`, `services`, `terminals`, `automations`, `settings`, `search`, `favorites`, `notifications`, `repositories`, `integrations`, `mcp`, `followups`, `logs`, `ai`, `tests`, `local`, `reports`, `sentry`, `monitors`, `presets`, `cloudflare`, `kubernetes`. Refetch on `dataChanged` naming: `projects`.",
    "tags": [
     "Project"
    ],
    "x-devdash-capability": "admin",
    "x-devdash-project": true,
    "x-devdash-invalidates": [
     "projects",
     "tasks",
     "pulls",
     "runs",
     "inbox",
     "releases",
     "live",
     "services",
     "terminals",
     "automations",
     "settings",
     "search",
     "favorites",
     "notifications",
     "repositories",
     "integrations",
     "mcp",
     "followups",
     "logs",
     "ai",
     "tests",
     "local",
     "reports",
     "sentry",
     "monitors",
     "presets",
     "cloudflare",
     "kubernetes"
    ],
    "x-devdash-reads": [
     "projects"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "content": {
          "type": "string"
         },
         "password": {
          "type": "string"
         }
        },
        "required": [
         "content",
         "password",
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/SetupRestored"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/project.restore.describe": {
   "post": {
    "operationId": "project.restore.describe",
    "summary": "project.restore.describe",
    "description": "Needs **admin** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `projects`.",
    "tags": [
     "Project"
    ],
    "x-devdash-capability": "admin",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "projects"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "content": {
          "type": "string",
          "description": "The file's contents, read by the page from the file the person chose."
         }
        },
        "required": [
         "content",
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/SetupFile"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/project.resync": {
   "post": {
    "operationId": "project.resync",
    "summary": "project.resync",
    "description": "Needs **admin** access. About one project: `project` is its slug or id.\n\nChanges: `integrations`, `projects`. Refetch on `dataChanged` naming: `projects`.",
    "tags": [
     "Project"
    ],
    "x-devdash-capability": "admin",
    "x-devdash-project": true,
    "x-devdash-invalidates": [
     "integrations",
     "projects"
    ],
    "x-devdash-reads": [
     "projects"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "provider": {
          "type": "string",
          "description": "The provider id, e.g. `bitbucket`."
         }
        },
        "required": [
         "project",
         "provider"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "type": "boolean"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/project.setup": {
   "post": {
    "operationId": "project.setup",
    "summary": "project.setup",
    "description": "Needs **read** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `projects`, `tasks`, `terminals`, `automations`, `repositories`, `integrations`, `settings`.",
    "tags": [
     "Project"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "projects",
     "tasks",
     "terminals",
     "automations",
     "repositories",
     "integrations",
     "settings"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "properties": {
         "project": {
          "type": "string"
         }
        },
        "required": [
         "project"
        ],
        "additionalProperties": false
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/ProjectSetup"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/project.setup.finish": {
   "post": {
    "operationId": "project.setup.finish",
    "summary": "project.setup.finish",
    "description": "Needs **admin** access. About one project: `project` is its slug or id.\n\nChanges: `projects`, `settings`. Refetch on `dataChanged` naming: `projects`, `tasks`, `terminals`, `automations`, `repositories`, `integrations`, `settings`.",
    "tags": [
     "Project"
    ],
    "x-devdash-capability": "admin",
    "x-devdash-project": true,
    "x-devdash-invalidates": [
     "projects",
     "settings"
    ],
    "x-devdash-reads": [
     "projects",
     "tasks",
     "terminals",
     "automations",
     "repositories",
     "integrations",
     "settings"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "properties": {
         "project": {
          "type": "string"
         }
        },
        "required": [
         "project"
        ],
        "additionalProperties": false
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/ProjectSetup"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/project.tasks.config": {
   "post": {
    "operationId": "project.tasks.config",
    "summary": "project.tasks.config",
    "description": "Needs **read** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `settings`, `integrations`.",
    "tags": [
     "Project"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "settings",
     "integrations"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "properties": {
         "project": {
          "type": "string"
         }
        },
        "required": [
         "project"
        ],
        "additionalProperties": false
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/TasksConfig"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/project.tasks.config.save": {
   "post": {
    "operationId": "project.tasks.config.save",
    "summary": "project.tasks.config.save",
    "description": "Needs **admin** access. About one project: `project` is its slug or id.\n\nChanges: `settings`, `integrations`, `tasks`. Refetch on `dataChanged` naming: `settings`, `integrations`.",
    "tags": [
     "Project"
    ],
    "x-devdash-capability": "admin",
    "x-devdash-project": true,
    "x-devdash-invalidates": [
     "settings",
     "integrations",
     "tasks"
    ],
    "x-devdash-reads": [
     "settings",
     "integrations"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "branchTemplate": {
          "type": [
           "string",
           "null"
          ],
          "description": "Absent keeps the template; a value replaces it."
         },
         "statusThresholds": {
          "anyOf": [
           {
            "$ref": "#/components/schemas/Record_string_number"
           },
           {
            "type": "null"
           }
          ],
          "description": "Absent keeps the thresholds; a value replaces the whole map."
         },
         "jira": {
          "anyOf": [
           {
            "$ref": "#/components/schemas/JiraSyncScope"
           },
           {
            "type": "null"
           }
          ],
          "description": "Absent leaves Jira's scope alone."
         },
         "bitbucket": {
          "anyOf": [
           {
            "$ref": "#/components/schemas/SaveBitbucketScope"
           },
           {
            "type": "null"
           }
          ],
          "description": "Absent leaves Bitbucket's selection alone."
         },
         "github": {
          "anyOf": [
           {
            "$ref": "#/components/schemas/SaveBitbucketScope"
           },
           {
            "type": "null"
           }
          ],
          "description": "Absent leaves GitHub's selection alone."
         }
        },
        "required": [
         "bitbucket",
         "branchTemplate",
         "github",
         "jira",
         "project",
         "statusThresholds"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/TasksConfig"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/project.tasks.scope.test": {
   "post": {
    "operationId": "project.tasks.scope.test",
    "summary": "project.tasks.scope.test",
    "description": "Needs **admin** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `settings`, `integrations`.",
    "tags": [
     "Project"
    ],
    "x-devdash-capability": "admin",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "settings",
     "integrations"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "projectKeys": {
          "type": "array",
          "items": {
           "type": "string"
          },
          "description": "Jira project keys, e.g. `ENGR`. Empty means every project."
         },
         "jql": {
          "type": [
           "string",
           "null"
          ],
          "description": "Extra JQL, AND-ed with the sync window."
         },
         "boardId": {
          "type": [
           "number",
           "null"
          ],
          "description": "A board whose saved filter narrows the sync."
         }
        },
        "required": [
         "boardId",
         "jql",
         "project",
         "projectKeys"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/ScopeTest"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/project.template.apply": {
   "post": {
    "operationId": "project.template.apply",
    "summary": "project.template.apply",
    "description": "Needs **admin** access. About one project: `project` is its slug or id.\n\nChanges: `projects`, `integrations`, `settings`, `automations`, `repositories`. Refetch on `dataChanged` naming: `projects`.",
    "tags": [
     "Project"
    ],
    "x-devdash-capability": "admin",
    "x-devdash-project": true,
    "x-devdash-invalidates": [
     "projects",
     "integrations",
     "settings",
     "automations",
     "repositories"
    ],
    "x-devdash-reads": [
     "projects"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "envelope": {
          "type": "string",
          "description": "The template file's contents, read by the page."
         },
         "key": {
          "type": "string"
         }
        },
        "required": [
         "envelope",
         "key",
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/ImportReport"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/project.template.export": {
   "post": {
    "operationId": "project.template.export",
    "summary": "project.template.export",
    "description": "Needs **admin** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `projects`.",
    "tags": [
     "Project"
    ],
    "x-devdash-capability": "admin",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "projects"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "properties": {
         "project": {
          "type": "string"
         }
        },
        "required": [
         "project"
        ],
        "additionalProperties": false
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/TemplateExport"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/project.update": {
   "post": {
    "operationId": "project.update",
    "summary": "project.update",
    "description": "Needs **admin** access. About one project: `project` is its slug or id.\n\nChanges: `projects`. Refetch on `dataChanged` naming: `projects`.",
    "tags": [
     "Project"
    ],
    "x-devdash-capability": "admin",
    "x-devdash-project": true,
    "x-devdash-invalidates": [
     "projects"
    ],
    "x-devdash-reads": [
     "projects"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "name": {
          "type": [
           "string",
           "null"
          ]
         },
         "slug": {
          "type": [
           "string",
           "null"
          ],
          "description": "A new address. Refused if malformed, reserved or taken; old links stop working."
         },
         "icon": {
          "type": [
           "string",
           "null"
          ],
          "description": "Absent leaves the icon as it is; an empty string clears it."
         },
         "color": {
          "type": [
           "string",
           "null"
          ],
          "description": "Absent leaves the colour as it is; an empty string clears it."
         }
        },
        "required": [
         "color",
         "icon",
         "name",
         "project",
         "slug"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "type": "boolean"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/project.workflow": {
   "post": {
    "operationId": "project.workflow",
    "summary": "project.workflow",
    "description": "Needs **read** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `settings`.",
    "tags": [
     "Project"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "settings"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "properties": {
         "project": {
          "type": "string"
         }
        },
        "required": [
         "project"
        ],
        "additionalProperties": false
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/WorkflowProfiles"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/project.workflow.save": {
   "post": {
    "operationId": "project.workflow.save",
    "summary": "project.workflow.save",
    "description": "Needs **admin** access. About one project: `project` is its slug or id.\n\nChanges: `settings`, `projects`. Refetch on `dataChanged` naming: `settings`.",
    "tags": [
     "Project"
    ],
    "x-devdash-capability": "admin",
    "x-devdash-project": true,
    "x-devdash-invalidates": [
     "settings",
     "projects"
    ],
    "x-devdash-reads": [
     "settings"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "profiles": {
          "type": "array",
          "items": {
           "$ref": "#/components/schemas/WorkflowProfile"
          },
          "description": "The whole list, as `project.workflow` returned it and the editor changed it. Saved as a set, so a removed profile is removed."
         }
        },
        "required": [
         "profiles",
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "type": "boolean"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/project.workflow.steps": {
   "post": {
    "operationId": "project.workflow.steps",
    "summary": "project.workflow.steps",
    "description": "Needs **read** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `settings`.",
    "tags": [
     "Project"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "settings"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "profile": {
          "type": [
           "string",
           "null"
          ],
          "description": "The profile id; absent is the first (the default)."
         }
        },
        "required": [
         "profile",
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/WorkflowSteps"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/projects": {
   "post": {
    "operationId": "projects",
    "summary": "projects",
    "description": "Needs **read** access. About the installation, not one project.\n\nChanges: nothing. Refetch on `dataChanged` naming: `projects`, `integrations`.",
    "tags": [
     "Project"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": false,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "projects",
     "integrations"
    ],
    "requestBody": {
     "required": false,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/NoArgs"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "type": "array",
         "items": {
          "$ref": "#/components/schemas/ProjectSummary"
         }
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/pull": {
   "post": {
    "operationId": "pull",
    "summary": "pull",
    "description": "Needs **read** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `pulls`, `runs`.",
    "tags": [
     "Pull requests"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "pulls",
     "runs"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "id": {
          "type": "string"
         }
        },
        "required": [
         "id",
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/PullDetail"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/pull.approve": {
   "post": {
    "operationId": "pull.approve",
    "summary": "pull.approve",
    "description": "Needs **act** access. About one project: `project` is its slug or id.\n\nChanges: `pulls`, `inbox`. Refetch on `dataChanged` naming: `pulls`, `runs`.",
    "tags": [
     "Pull requests"
    ],
    "x-devdash-capability": "act",
    "x-devdash-project": true,
    "x-devdash-invalidates": [
     "pulls",
     "inbox"
    ],
    "x-devdash-reads": [
     "pulls",
     "runs"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "id": {
          "type": "string"
         },
         "approve": {
          "type": "boolean",
          "description": "True approves; false withdraws your approval."
         }
        },
        "required": [
         "approve",
         "id",
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/PullWritten"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/pull.comment": {
   "post": {
    "operationId": "pull.comment",
    "summary": "pull.comment",
    "description": "Needs **act** access. About one project: `project` is its slug or id.\n\nChanges: `pulls`. Refetch on `dataChanged` naming: `pulls`, `runs`.",
    "tags": [
     "Pull requests"
    ],
    "x-devdash-capability": "act",
    "x-devdash-project": true,
    "x-devdash-invalidates": [
     "pulls"
    ],
    "x-devdash-reads": [
     "pulls",
     "runs"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "id": {
          "type": "string"
         },
         "text": {
          "type": "string"
         },
         "path": {
          "type": [
           "string",
           "null"
          ],
          "description": "A file of the change, for a comment on that file."
         }
        },
        "required": [
         "id",
         "path",
         "project",
         "text"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/PullWritten"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/pull.commit-files": {
   "post": {
    "operationId": "pull.commit-files",
    "summary": "pull.commit-files",
    "description": "Needs **read** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `pulls`, `runs`.",
    "tags": [
     "Pull requests"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "pulls",
     "runs"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "id": {
          "type": "string",
          "description": "The pull request, `acme/repo#42`."
         },
         "sha": {
          "type": "string"
         }
        },
        "required": [
         "id",
         "project",
         "sha"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "type": "array",
         "items": {
          "type": "string"
         }
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/pull.diff": {
   "post": {
    "operationId": "pull.diff",
    "summary": "pull.diff",
    "description": "Needs **read** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `pulls`, `runs`.",
    "tags": [
     "Pull requests"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "pulls",
     "runs"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "id": {
          "type": "string"
         }
        },
        "required": [
         "id",
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/PullChange"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/pull.live": {
   "post": {
    "operationId": "pull.live",
    "summary": "pull.live",
    "description": "Needs **read** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `pulls`, `runs`.",
    "tags": [
     "Pull requests"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "pulls",
     "runs"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "id": {
          "type": "string"
         }
        },
        "required": [
         "id",
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/PullLive"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/pull.merge": {
   "post": {
    "operationId": "pull.merge",
    "summary": "pull.merge",
    "description": "Needs **act** access. About one project: `project` is its slug or id.\n\nChanges: `pulls`, `inbox`, `tasks`, `releases`. Refetch on `dataChanged` naming: `pulls`, `runs`.",
    "tags": [
     "Pull requests"
    ],
    "x-devdash-capability": "act",
    "x-devdash-project": true,
    "x-devdash-invalidates": [
     "pulls",
     "inbox",
     "tasks",
     "releases"
    ],
    "x-devdash-reads": [
     "pulls",
     "runs"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "id": {
          "type": "string"
         },
         "strategy": {
          "type": "string",
          "description": "`merge_commit`, `squash` or `fast_forward`."
         },
         "closeBranch": {
          "type": "boolean"
         },
         "message": {
          "type": [
           "string",
           "null"
          ]
         }
        },
        "required": [
         "closeBranch",
         "id",
         "message",
         "project",
         "strategy"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/PullWritten"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/pull.refresh": {
   "post": {
    "operationId": "pull.refresh",
    "summary": "pull.refresh",
    "description": "Needs **operate** access. About one project: `project` is its slug or id.\n\nChanges: `pulls`. Refetch on `dataChanged` naming: `pulls`, `runs`.",
    "tags": [
     "Pull requests"
    ],
    "x-devdash-capability": "operate",
    "x-devdash-project": true,
    "x-devdash-invalidates": [
     "pulls"
    ],
    "x-devdash-reads": [
     "pulls",
     "runs"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "ids": {
          "type": "array",
          "items": {
           "type": "string"
          },
          "description": "The pull requests to ask the forge about (`acme/repo#42`, or with the forge's prefix); the open ones on the list the person is looking at. Without them, the open ones synced longest ago."
         }
        },
        "required": [
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/PullsRefreshed"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/pull.request-changes": {
   "post": {
    "operationId": "pull.request-changes",
    "summary": "pull.request-changes",
    "description": "Needs **act** access. About one project: `project` is its slug or id.\n\nChanges: `pulls`, `inbox`. Refetch on `dataChanged` naming: `pulls`, `runs`.",
    "tags": [
     "Pull requests"
    ],
    "x-devdash-capability": "act",
    "x-devdash-project": true,
    "x-devdash-invalidates": [
     "pulls",
     "inbox"
    ],
    "x-devdash-reads": [
     "pulls",
     "runs"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "id": {
          "type": "string"
         },
         "on": {
          "type": "boolean",
          "description": "True asks for changes; false withdraws that."
         }
        },
        "required": [
         "id",
         "on",
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/PullWritten"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/pull.review": {
   "post": {
    "operationId": "pull.review",
    "summary": "pull.review",
    "description": "Needs **read** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `pulls`, `runs`.",
    "tags": [
     "Pull requests"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "pulls",
     "runs"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "id": {
          "type": "string"
         }
        },
        "required": [
         "id",
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "anyOf": [
          {
           "$ref": "#/components/schemas/ReviewRun"
          },
          {
           "type": "null"
          }
         ]
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/pull.review.post": {
   "post": {
    "operationId": "pull.review.post",
    "summary": "pull.review.post",
    "description": "Needs **act** access. About one project: `project` is its slug or id.\n\nChanges: `pulls`. Refetch on `dataChanged` naming: `pulls`, `runs`.",
    "tags": [
     "Pull requests"
    ],
    "x-devdash-capability": "act",
    "x-devdash-project": true,
    "x-devdash-invalidates": [
     "pulls"
    ],
    "x-devdash-reads": [
     "pulls",
     "runs"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "id": {
          "type": "string"
         }
        },
        "required": [
         "id",
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/PullWritten"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/pull.review.start": {
   "post": {
    "operationId": "pull.review.start",
    "summary": "pull.review.start",
    "description": "Needs **operate** access. About one project: `project` is its slug or id.\n\nChanges: `pulls`, `runs`. Refetch on `dataChanged` naming: `pulls`, `runs`.",
    "tags": [
     "Pull requests"
    ],
    "x-devdash-capability": "operate",
    "x-devdash-project": true,
    "x-devdash-invalidates": [
     "pulls",
     "runs"
    ],
    "x-devdash-reads": [
     "pulls",
     "runs"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "id": {
          "type": "string"
         }
        },
        "required": [
         "id",
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/ReviewStart"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/pulls": {
   "post": {
    "operationId": "pulls",
    "summary": "pulls",
    "description": "Needs **read** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `pulls`.",
    "tags": [
     "Pull requests"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "pulls"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "filters": {
          "$ref": "#/components/schemas/Record_string_string",
          "description": "Facet groups to their chosen values, e.g. `{ \"owner\": [\"Mine\"] }`. Absent means the section's saved selection."
         },
         "offset": {
          "type": "number"
         },
         "limit": {
          "type": "number",
          "description": "1 to 200; 50 when absent."
         },
         "query": {
          "type": "string"
         },
         "sortBy": {
          "type": "string",
          "description": "A column to order by: `title`, `status`, `priority` (or `extra`), `updatedAt` (or `when`)…"
         },
         "descending": {
          "type": "boolean"
         }
        },
        "required": [
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/WorkList"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/release": {
   "post": {
    "operationId": "release",
    "summary": "release",
    "description": "Needs **read** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `releases`.",
    "tags": [
     "Release"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "releases"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "id": {
          "type": "string"
         }
        },
        "required": [
         "id",
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/JsonValue"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/release.branch.save": {
   "post": {
    "operationId": "release.branch.save",
    "summary": "release.branch.save",
    "description": "Needs **operate** access. About one project: `project` is its slug or id.\n\nChanges: `releases`. Refetch on `dataChanged` naming: `releases`.",
    "tags": [
     "Release"
    ],
    "x-devdash-capability": "operate",
    "x-devdash-project": true,
    "x-devdash-invalidates": [
     "releases"
    ],
    "x-devdash-reads": [
     "releases"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "id": {
          "type": "string",
          "description": "The release's version id."
         },
         "repo": {
          "type": "string"
         },
         "prod_branch": {
          "type": "string"
         },
         "release_branch": {
          "type": "string",
          "description": "Empty forgets the choice for this repository."
         },
         "create": {
          "type": "boolean",
          "description": "Make the release branch (refused when the name is taken) rather than pick an existing one."
         },
         "from_branch": {
          "type": "string",
          "description": "What a new release branch starts from; production by default."
         },
         "mode": {
          "type": "string",
          "description": "`branches` or `commits`; what was chosen before, else `branches`."
         }
        },
        "required": [
         "id",
         "prod_branch",
         "project",
         "release_branch",
         "repo"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/BuildBranch"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/release.build": {
   "post": {
    "operationId": "release.build",
    "summary": "release.build",
    "description": "Needs **read** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `releases`, `pulls`, `repositories`.",
    "tags": [
     "Release"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "releases",
     "pulls",
     "repositories"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "id": {
          "type": "string",
          "description": "The release's version id."
         },
         "repo": {
          "type": "string",
          "description": "The repository to look for branches in before a run has chosen one."
         }
        },
        "required": [
         "id",
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/ReleaseBuild"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/release.build.abort": {
   "post": {
    "operationId": "release.build.abort",
    "summary": "release.build.abort",
    "description": "Needs **operate** access. About one project: `project` is its slug or id.\n\nChanges: `releases`. Refetch on `dataChanged` naming: `releases`, `pulls`, `repositories`.",
    "tags": [
     "Release"
    ],
    "x-devdash-capability": "operate",
    "x-devdash-project": true,
    "x-devdash-invalidates": [
     "releases"
    ],
    "x-devdash-reads": [
     "releases",
     "pulls",
     "repositories"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "run": {
          "type": "string"
         }
        },
        "required": [
         "project",
         "run"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/BuildWritten"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/release.build.advance": {
   "post": {
    "operationId": "release.build.advance",
    "summary": "release.build.advance",
    "description": "Needs **operate** access. About one project: `project` is its slug or id.\n\nChanges: `releases`, `pulls`. Refetch on `dataChanged` naming: `releases`, `pulls`, `repositories`.",
    "tags": [
     "Release"
    ],
    "x-devdash-capability": "operate",
    "x-devdash-project": true,
    "x-devdash-invalidates": [
     "releases",
     "pulls"
    ],
    "x-devdash-reads": [
     "releases",
     "pulls",
     "repositories"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "run": {
          "type": "string"
         }
        },
        "required": [
         "project",
         "run"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/BuildWritten"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/release.build.item": {
   "post": {
    "operationId": "release.build.item",
    "summary": "release.build.item",
    "description": "Needs **operate** access. About one project: `project` is its slug or id.\n\nChanges: `releases`. Refetch on `dataChanged` naming: `releases`, `pulls`, `repositories`.",
    "tags": [
     "Release"
    ],
    "x-devdash-capability": "operate",
    "x-devdash-project": true,
    "x-devdash-invalidates": [
     "releases"
    ],
    "x-devdash-reads": [
     "releases",
     "pulls",
     "repositories"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "run": {
          "type": "string"
         },
         "key": {
          "type": "string"
         },
         "action": {
          "type": "string",
          "description": "`skip`, `retry`, `continue` (conflicts resolved in the work tree) or `set-branch`."
         },
         "branch": {
          "type": "string"
         }
        },
        "required": [
         "action",
         "key",
         "project",
         "run"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/BuildWritten"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/release.build.reviewers": {
   "post": {
    "operationId": "release.build.reviewers",
    "summary": "release.build.reviewers",
    "description": "Needs **operate** access. About one project: `project` is its slug or id.\n\nChanges: `releases`, `pulls`. Refetch on `dataChanged` naming: `releases`, `pulls`, `repositories`.",
    "tags": [
     "Release"
    ],
    "x-devdash-capability": "operate",
    "x-devdash-project": true,
    "x-devdash-invalidates": [
     "releases",
     "pulls"
    ],
    "x-devdash-reads": [
     "releases",
     "pulls",
     "repositories"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "run": {
          "type": "string"
         },
         "key": {
          "type": "string",
          "description": "A task's key, or absent for the release pull request."
         },
         "reviewers": {
          "type": "array",
          "items": {
           "type": "string"
          }
         }
        },
        "required": [
         "project",
         "reviewers",
         "run"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/BuildWritten"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/release.build.select": {
   "post": {
    "operationId": "release.build.select",
    "summary": "release.build.select",
    "description": "Needs **operate** access. About one project: `project` is its slug or id.\n\nChanges: `releases`. Refetch on `dataChanged` naming: `releases`, `pulls`, `repositories`.",
    "tags": [
     "Release"
    ],
    "x-devdash-capability": "operate",
    "x-devdash-project": true,
    "x-devdash-invalidates": [
     "releases"
    ],
    "x-devdash-reads": [
     "releases",
     "pulls",
     "repositories"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "run": {
          "type": "string"
         },
         "items": {
          "type": "array",
          "items": {
           "$ref": "#/components/schemas/BuildPick"
          }
         },
         "required_approvals": {
          "type": "number",
          "description": "Approvals wanted before a pull request counts as reviewed (default 1)."
         },
         "merge_strategy": {
          "type": "string",
          "description": "`merge_commit`, `squash` or `fast_forward`."
         }
        },
        "required": [
         "items",
         "project",
         "run"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/BuildWritten"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/release.build.start": {
   "post": {
    "operationId": "release.build.start",
    "summary": "release.build.start",
    "description": "Needs **operate** access. About one project: `project` is its slug or id.\n\nChanges: `releases`. Refetch on `dataChanged` naming: `releases`, `pulls`, `repositories`.",
    "tags": [
     "Release"
    ],
    "x-devdash-capability": "operate",
    "x-devdash-project": true,
    "x-devdash-invalidates": [
     "releases"
    ],
    "x-devdash-reads": [
     "releases",
     "pulls",
     "repositories"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "id": {
          "type": "string"
         },
         "repo": {
          "type": "string"
         },
         "mode": {
          "type": "string",
          "description": "`branches` or `commits`."
         },
         "prod_branch": {
          "type": "string"
         },
         "release_branch": {
          "type": "string"
         },
         "create": {
          "type": "boolean",
          "description": "A new release branch: made from `from_branch` and refused when the name is taken. Without it, an existing branch of that name is used as it is (and made when there is none)."
         },
         "from_branch": {
          "type": "string",
          "description": "What a new release branch starts from; production by default."
         }
        },
        "required": [
         "id",
         "mode",
         "prod_branch",
         "project",
         "release_branch",
         "repo"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/BuildWritten"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/release.contents": {
   "post": {
    "operationId": "release.contents",
    "summary": "release.contents",
    "description": "Needs **read** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `releases`, `pulls`, `repositories`.",
    "tags": [
     "Release"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "releases",
     "pulls",
     "repositories"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "id": {
          "type": "string",
          "description": "The release (the tracker's version id)."
         },
         "refs": {
          "type": "object",
          "additionalProperties": {
           "$ref": "#/components/schemas/RefChoice"
          },
          "description": "Per repository id, refs a person picked over the detected ones."
         }
        },
        "required": [
         "id",
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/ReleaseContents"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/release.delivery": {
   "post": {
    "operationId": "release.delivery",
    "summary": "release.delivery",
    "description": "Needs **read** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `releases`.",
    "tags": [
     "Release"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "releases"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "id": {
          "type": "string"
         }
        },
        "required": [
         "id",
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/ReleaseDelivery"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/release.fetch": {
   "post": {
    "operationId": "release.fetch",
    "summary": "release.fetch",
    "description": "Needs **operate** access. About one project: `project` is its slug or id.\n\nChanges: `releases`. Refetch on `dataChanged` naming: `releases`.",
    "tags": [
     "Release"
    ],
    "x-devdash-capability": "operate",
    "x-devdash-project": true,
    "x-devdash-invalidates": [
     "releases"
    ],
    "x-devdash-reads": [
     "releases"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "id": {
          "type": "string"
         },
         "repo": {
          "type": "string",
          "description": "Fetch only this repository (the Build tab's branch list reload); otherwise every repository the release is read from."
         }
        },
        "required": [
         "id",
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/ReleaseFetched"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/release.gate": {
   "post": {
    "operationId": "release.gate",
    "summary": "release.gate",
    "description": "Needs **act** access. About one project: `project` is its slug or id.\n\nChanges: `releases`. Refetch on `dataChanged` naming: `releases`.",
    "tags": [
     "Release"
    ],
    "x-devdash-capability": "act",
    "x-devdash-project": true,
    "x-devdash-invalidates": [
     "releases"
    ],
    "x-devdash-reads": [
     "releases"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "id": {
          "type": "string",
          "description": "The release (the tracker's version id)."
         },
         "gate": {
          "type": "string",
          "description": "One of the release's gates."
         },
         "repo": {
          "type": "string",
          "description": "The repository a per-repository gate is ticked for."
         },
         "done": {
          "type": "boolean"
         },
         "note": {
          "type": "string",
          "description": "What the tick rests on: a link, a name."
         }
        },
        "required": [
         "done",
         "gate",
         "id",
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/JsonValue"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/release.gate.def.delete": {
   "post": {
    "operationId": "release.gate.def.delete",
    "summary": "release.gate.def.delete",
    "description": "Needs **act** access. About one project: `project` is its slug or id.\n\nChanges: `releases`. Refetch on `dataChanged` naming: `releases`.",
    "tags": [
     "Release"
    ],
    "x-devdash-capability": "act",
    "x-devdash-project": true,
    "x-devdash-invalidates": [
     "releases"
    ],
    "x-devdash-reads": [
     "releases"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "id": {
          "type": "string"
         },
         "gate": {
          "type": "string"
         },
         "own": {
          "type": "boolean",
          "description": "Delete the release's own gate rather than the project template."
         }
        },
        "required": [
         "gate",
         "id",
         "own",
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/ReleaseGateSettings"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/release.gate.def.save": {
   "post": {
    "operationId": "release.gate.def.save",
    "summary": "release.gate.def.save",
    "description": "Needs **act** access. About one project: `project` is its slug or id.\n\nChanges: `releases`. Refetch on `dataChanged` naming: `releases`.",
    "tags": [
     "Release"
    ],
    "x-devdash-capability": "act",
    "x-devdash-project": true,
    "x-devdash-invalidates": [
     "releases"
    ],
    "x-devdash-reads": [
     "releases"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "id": {
          "type": "string",
          "description": "The release being looked at (used to tell a release's own gate from a template)."
         },
         "def": {
          "$ref": "#/components/schemas/ReleaseGateDef"
         }
        },
        "required": [
         "def",
         "id",
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/ReleaseGateSettings"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/release.gate.off": {
   "post": {
    "operationId": "release.gate.off",
    "summary": "release.gate.off",
    "description": "Needs **act** access. About one project: `project` is its slug or id.\n\nChanges: `releases`. Refetch on `dataChanged` naming: `releases`.",
    "tags": [
     "Release"
    ],
    "x-devdash-capability": "act",
    "x-devdash-project": true,
    "x-devdash-invalidates": [
     "releases"
    ],
    "x-devdash-reads": [
     "releases"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "id": {
          "type": "string"
         },
         "gate": {
          "type": "string"
         },
         "off": {
          "type": "boolean"
         }
        },
        "required": [
         "gate",
         "id",
         "off",
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/ReleaseGateSettings"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/release.gates": {
   "post": {
    "operationId": "release.gates",
    "summary": "release.gates",
    "description": "Needs **read** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `releases`.",
    "tags": [
     "Release"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "releases"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "id": {
          "type": "string"
         }
        },
        "required": [
         "id",
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/ReleaseGateSettings"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/release.review": {
   "post": {
    "operationId": "release.review",
    "summary": "release.review",
    "description": "Needs **read** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `releases`.",
    "tags": [
     "Release"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "releases"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "id": {
          "type": "string"
         }
        },
        "required": [
         "id",
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "anyOf": [
          {
           "$ref": "#/components/schemas/ReleaseReview"
          },
          {
           "type": "null"
          }
         ]
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/release.review.start": {
   "post": {
    "operationId": "release.review.start",
    "summary": "release.review.start",
    "description": "Needs **act** access. About one project: `project` is its slug or id.\n\nChanges: `releases`. Refetch on `dataChanged` naming: `releases`.",
    "tags": [
     "Release"
    ],
    "x-devdash-capability": "act",
    "x-devdash-project": true,
    "x-devdash-invalidates": [
     "releases"
    ],
    "x-devdash-reads": [
     "releases"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "id": {
          "type": "string",
          "description": "The release's version id."
         },
         "release": {
          "type": "string",
          "description": "The release's name, as the reader knows it."
         }
        },
        "required": [
         "id",
         "project",
         "release"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/ReleaseReview"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/release.sprints": {
   "post": {
    "operationId": "release.sprints",
    "summary": "release.sprints",
    "description": "Needs **read** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `releases`.",
    "tags": [
     "Release"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "releases"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "id": {
          "type": "string"
         }
        },
        "required": [
         "id",
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/ReleaseSprints"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/release.timeline": {
   "post": {
    "operationId": "release.timeline",
    "summary": "release.timeline",
    "description": "Needs **read** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `releases`.",
    "tags": [
     "Release"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "releases"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "id": {
          "type": "string"
         }
        },
        "required": [
         "id",
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/JsonValue"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/releases": {
   "post": {
    "operationId": "releases",
    "summary": "releases",
    "description": "Needs **read** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `releases`.",
    "tags": [
     "Release"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "releases"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "properties": {
         "project": {
          "type": "string"
         }
        },
        "required": [
         "project"
        ],
        "additionalProperties": false
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "type": "array",
         "items": {
          "$ref": "#/components/schemas/ReleaseRow"
         }
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/remote.approvals": {
   "post": {
    "operationId": "remote.approvals",
    "summary": "remote.approvals",
    "description": "Needs **read** access. About the installation, not one project.\n\nChanges: nothing. Refetch on `dataChanged` naming: `runs`, `automations`.",
    "tags": [
     "Remote"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": false,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "runs",
     "automations"
    ],
    "requestBody": {
     "required": false,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/NoArgs"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "type": "array",
         "items": {
          "$ref": "#/components/schemas/RemoteApproval"
         }
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/remote.enable": {
   "post": {
    "operationId": "remote.enable",
    "summary": "remote.enable",
    "description": "Needs **admin** access. About the installation, not one project.\n\nChanges: `settings`. Refetch on `dataChanged` naming: nothing.",
    "tags": [
     "Remote"
    ],
    "x-devdash-capability": "admin",
    "x-devdash-project": false,
    "x-devdash-invalidates": [
     "settings"
    ],
    "x-devdash-reads": [],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/RemoteEnable"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "type": "boolean"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/remote.forget": {
   "post": {
    "operationId": "remote.forget",
    "summary": "remote.forget",
    "description": "Needs **admin** access. About the installation, not one project.\n\nChanges: `settings`. Refetch on `dataChanged` naming: nothing.",
    "tags": [
     "Remote"
    ],
    "x-devdash-capability": "admin",
    "x-devdash-project": false,
    "x-devdash-invalidates": [
     "settings"
    ],
    "x-devdash-reads": [],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/RemoteForget"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "type": "boolean"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/remote.pair": {
   "post": {
    "operationId": "remote.pair",
    "summary": "remote.pair",
    "description": "Needs **admin** access. About the installation, not one project.\n\nChanges: `settings`. Refetch on `dataChanged` naming: nothing.",
    "tags": [
     "Remote"
    ],
    "x-devdash-capability": "admin",
    "x-devdash-project": false,
    "x-devdash-invalidates": [
     "settings"
    ],
    "x-devdash-reads": [],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/RemotePairArgs"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/RemotePaired"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/remote.status": {
   "post": {
    "operationId": "remote.status",
    "summary": "remote.status",
    "description": "Needs **read** access. About the installation, not one project.\n\nChanges: nothing. Refetch on `dataChanged` naming: `settings`.",
    "tags": [
     "Remote"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": false,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "settings"
    ],
    "requestBody": {
     "required": false,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/NoArgs"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/RemoteStatus"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/repo.branch.create": {
   "post": {
    "operationId": "repo.branch.create",
    "summary": "repo.branch.create",
    "description": "Needs **operate** access. About one project: `project` is its slug or id.\n\nChanges: `repositories`. Refetch on `dataChanged` naming: `repositories`, `pulls`, `tasks`.",
    "tags": [
     "Repository browser"
    ],
    "x-devdash-capability": "operate",
    "x-devdash-project": true,
    "x-devdash-invalidates": [
     "repositories"
    ],
    "x-devdash-reads": [
     "repositories",
     "pulls",
     "tasks"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "repo": {
          "type": "string"
         },
         "name": {
          "type": "string"
         },
         "from": {
          "type": "string",
          "description": "What to branch from: a branch, remote branch, tag or commit. Absent is the default branch."
         },
         "push": {
          "type": "boolean",
          "description": "Push it to the remote after making it."
         }
        },
        "required": [
         "name",
         "project",
         "push",
         "repo"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/RepoBranchCreated"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/repo.branches": {
   "post": {
    "operationId": "repo.branches",
    "summary": "repo.branches",
    "description": "Needs **read** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `repositories`, `pulls`, `tasks`.",
    "tags": [
     "Repository browser"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "repositories",
     "pulls",
     "tasks"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "repo": {
          "type": "string"
         },
         "remote": {
          "type": "boolean",
          "description": "Remote-tracking branches instead of local ones."
         },
         "query": {
          "type": "string",
          "description": "A substring of the name, any case."
         },
         "page": {
          "type": "number",
          "description": "From 1."
         },
         "size": {
          "type": "number",
          "description": "Branches a page, 10 to 100; 50 when absent."
         }
        },
        "required": [
         "project",
         "repo"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/RepoBranches"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/repo.branches.tree": {
   "post": {
    "operationId": "repo.branches.tree",
    "summary": "repo.branches.tree",
    "description": "Needs **read** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `repositories`, `pulls`, `tasks`.",
    "tags": [
     "Repository browser"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "repositories",
     "pulls",
     "tasks"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "repo": {
          "type": "string"
         },
         "remote": {
          "type": "boolean"
         },
         "prefix": {
          "type": "string",
          "description": "The folder to list: empty for the top, else a path ending in `/` (`feature/`), or in `-` for an issue-key folder (`ENGR-`)."
         },
         "sort": {
          "type": "string",
          "description": "`name` (the default) or `recent`."
         },
         "groupByKey": {
          "type": "boolean",
          "description": "Fold slash-less names that start with an issue key under the key's project."
         },
         "query": {
          "type": "string",
          "description": "A substring of the name, any case: answers a flat list of matches."
         },
         "offset": {
          "type": "number",
          "description": "Branches to skip at this level, for \"show more\"; 200 come at a time."
         }
        },
        "required": [
         "project",
         "repo"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/RepoBranchTree"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/repo.commit": {
   "post": {
    "operationId": "repo.commit",
    "summary": "repo.commit",
    "description": "Needs **read** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `repositories`, `pulls`, `tasks`.",
    "tags": [
     "Repository browser"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "repositories",
     "pulls",
     "tasks"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "repo": {
          "type": "string"
         },
         "sha": {
          "type": "string"
         }
        },
        "required": [
         "project",
         "repo",
         "sha"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/RepoCommitDetail"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/repo.commits": {
   "post": {
    "operationId": "repo.commits",
    "summary": "repo.commits",
    "description": "Needs **read** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `repositories`, `pulls`, `tasks`.",
    "tags": [
     "Repository browser"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "repositories",
     "pulls",
     "tasks"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "repo": {
          "type": "string"
         },
         "ref": {
          "type": "string"
         },
         "page": {
          "type": "number",
          "description": "From 1; 30 commits a page."
         },
         "author": {
          "type": "string",
          "description": "A substring of the author's name or email, any case."
         },
         "path": {
          "type": "string",
          "description": "Only commits touching this path."
         }
        },
        "required": [
         "project",
         "repo"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/RepoCommits"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/repo.deployments": {
   "post": {
    "operationId": "repo.deployments",
    "summary": "repo.deployments",
    "description": "Needs **read** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `repositories`, `pulls`, `tasks`.",
    "tags": [
     "Repository browser"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "repositories",
     "pulls",
     "tasks"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "repo": {
          "type": "string",
          "description": "The repository's id (core's workspace id)."
         }
        },
        "required": [
         "project",
         "repo"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "type": "array",
         "items": {
          "$ref": "#/components/schemas/RepoEnvironment"
         }
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/repo.file": {
   "post": {
    "operationId": "repo.file",
    "summary": "repo.file",
    "description": "Needs **read** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `repositories`, `pulls`, `tasks`.",
    "tags": [
     "Repository browser"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "repositories",
     "pulls",
     "tasks"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "repo": {
          "type": "string"
         },
         "ref": {
          "type": "string"
         },
         "path": {
          "type": "string"
         }
        },
        "required": [
         "path",
         "project",
         "repo"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/RepoFile"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/repo.issues": {
   "post": {
    "operationId": "repo.issues",
    "summary": "repo.issues",
    "description": "Needs **read** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `repositories`, `pulls`, `tasks`.",
    "tags": [
     "Repository browser"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "repositories",
     "pulls",
     "tasks"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "repo": {
          "type": "string",
          "description": "The repository's id (core's workspace id)."
         }
        },
        "required": [
         "project",
         "repo"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/WorkList"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/repo.open": {
   "post": {
    "operationId": "repo.open",
    "summary": "repo.open",
    "description": "Needs **operate** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `repositories`, `pulls`, `tasks`.",
    "tags": [
     "Repository browser"
    ],
    "x-devdash-capability": "operate",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "repositories",
     "pulls",
     "tasks"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "repo": {
          "type": "string"
         },
         "path": {
          "type": "string"
         }
        },
        "required": [
         "path",
         "project",
         "repo"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/RepoOpened"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/repo.pipeline": {
   "post": {
    "operationId": "repo.pipeline",
    "summary": "repo.pipeline",
    "description": "Needs **read** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `repositories`, `pulls`, `tasks`.",
    "tags": [
     "Repository browser"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "repositories",
     "pulls",
     "tasks"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "repo": {
          "type": "string"
         },
         "id": {
          "type": "string",
          "description": "The run's uuid."
         },
         "step": {
          "type": "string",
          "description": "A step whose log to include."
         }
        },
        "required": [
         "id",
         "project",
         "repo"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/RepoPipelineDetail"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/repo.pipelines": {
   "post": {
    "operationId": "repo.pipelines",
    "summary": "repo.pipelines",
    "description": "Needs **read** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `repositories`, `pulls`, `tasks`.",
    "tags": [
     "Repository browser"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "repositories",
     "pulls",
     "tasks"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "repo": {
          "type": "string"
         },
         "page": {
          "type": "number"
         }
        },
        "required": [
         "project",
         "repo"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/RepoPipelines"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/repo.pull.create": {
   "post": {
    "operationId": "repo.pull.create",
    "summary": "repo.pull.create",
    "description": "Needs **operate** access. About one project: `project` is its slug or id.\n\nChanges: `pulls`. Refetch on `dataChanged` naming: `repositories`, `pulls`, `tasks`.",
    "tags": [
     "Repository browser"
    ],
    "x-devdash-capability": "operate",
    "x-devdash-project": true,
    "x-devdash-invalidates": [
     "pulls"
    ],
    "x-devdash-reads": [
     "repositories",
     "pulls",
     "tasks"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "repo": {
          "type": "string"
         },
         "source": {
          "type": "string"
         },
         "target": {
          "type": "string"
         },
         "title": {
          "type": "string"
         },
         "description": {
          "type": "string"
         }
        },
        "required": [
         "description",
         "project",
         "repo",
         "source",
         "target",
         "title"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/RepoPullCreated"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/repo.refs": {
   "post": {
    "operationId": "repo.refs",
    "summary": "repo.refs",
    "description": "Needs **read** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `repositories`, `pulls`, `tasks`.",
    "tags": [
     "Repository browser"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "repositories",
     "pulls",
     "tasks"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "repo": {
          "type": "string",
          "description": "The repository's id (core's workspace id)."
         }
        },
        "required": [
         "project",
         "repo"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/RepoRefs"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/repo.tree": {
   "post": {
    "operationId": "repo.tree",
    "summary": "repo.tree",
    "description": "Needs **read** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `repositories`, `pulls`, `tasks`.",
    "tags": [
     "Repository browser"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "repositories",
     "pulls",
     "tasks"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "repo": {
          "type": "string"
         },
         "ref": {
          "type": "string",
          "description": "A branch, remote branch, tag or commit. Absent is the default branch."
         },
         "path": {
          "type": "string",
          "description": "Repository-relative; absent or empty is the root."
         }
        },
        "required": [
         "project",
         "repo"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/RepoTree"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/report": {
   "post": {
    "operationId": "report",
    "summary": "report",
    "description": "Needs **read** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `reports`.",
    "tags": [
     "Report"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "reports"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "id": {
          "type": "string"
         }
        },
        "required": [
         "id",
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/ReportDetail"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/reports.list": {
   "post": {
    "operationId": "reports.list",
    "summary": "reports.list",
    "description": "Needs **read** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `reports`.",
    "tags": [
     "Report"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "reports"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "automation": {
          "type": "string",
          "description": "Only this automation's reports."
         },
         "unread": {
          "type": "boolean",
          "description": "Only unread ones."
         },
         "page": {
          "type": "number"
         },
         "perPage": {
          "type": "number"
         }
        },
        "required": [
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/ReportsPage"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/reports.read": {
   "post": {
    "operationId": "reports.read",
    "summary": "reports.read",
    "description": "Needs **act** access. About one project: `project` is its slug or id.\n\nChanges: `reports`, `inbox`. Refetch on `dataChanged` naming: `reports`.",
    "tags": [
     "Report"
    ],
    "x-devdash-capability": "act",
    "x-devdash-project": true,
    "x-devdash-invalidates": [
     "reports",
     "inbox"
    ],
    "x-devdash-reads": [
     "reports"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "id": {
          "type": "string"
         },
         "read": {
          "type": "boolean",
          "description": "`false` marks it unread again. Absent is `true`."
         }
        },
        "required": [
         "id",
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "type": "boolean"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/repository.archive": {
   "post": {
    "operationId": "repository.archive",
    "summary": "repository.archive",
    "description": "Needs **admin** access. About one project: `project` is its slug or id.\n\nChanges: `repositories`, `tasks`, `terminals`, `projects`. Refetch on `dataChanged` naming: `repositories`.",
    "tags": [
     "Repository"
    ],
    "x-devdash-capability": "admin",
    "x-devdash-project": true,
    "x-devdash-invalidates": [
     "repositories",
     "tasks",
     "terminals",
     "projects"
    ],
    "x-devdash-reads": [
     "repositories"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "id": {
          "type": "string"
         },
         "archived": {
          "type": "boolean"
         }
        },
        "required": [
         "archived",
         "id",
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/JsonValue"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/repository.branches": {
   "post": {
    "operationId": "repository.branches",
    "summary": "repository.branches",
    "description": "Needs **read** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `repositories`.",
    "tags": [
     "Repository"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "repositories"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "id": {
          "type": "string"
         }
        },
        "required": [
         "id",
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/JsonValue"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/repository.detect": {
   "post": {
    "operationId": "repository.detect",
    "summary": "repository.detect",
    "description": "Needs **admin** access. About one project: `project` is its slug or id.\n\nChanges: `repositories`, `tasks`, `terminals`, `projects`. Refetch on `dataChanged` naming: `repositories`.",
    "tags": [
     "Repository"
    ],
    "x-devdash-capability": "admin",
    "x-devdash-project": true,
    "x-devdash-invalidates": [
     "repositories",
     "tasks",
     "terminals",
     "projects"
    ],
    "x-devdash-reads": [
     "repositories"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "id": {
          "type": "string"
         }
        },
        "required": [
         "id",
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/JsonValue"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/repository.folders": {
   "post": {
    "operationId": "repository.folders",
    "summary": "repository.folders",
    "description": "Needs **admin** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `repositories`.",
    "tags": [
     "Repository"
    ],
    "x-devdash-capability": "admin",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "repositories"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "path": {
          "type": [
           "string",
           "null"
          ],
          "description": "Absent lists the home directory."
         }
        },
        "required": [
         "path",
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Folders"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/repository.register": {
   "post": {
    "operationId": "repository.register",
    "summary": "repository.register",
    "description": "Needs **admin** access. About one project: `project` is its slug or id.\n\nChanges: `repositories`, `tasks`, `terminals`, `projects`. Refetch on `dataChanged` naming: `repositories`.",
    "tags": [
     "Repository"
    ],
    "x-devdash-capability": "admin",
    "x-devdash-project": true,
    "x-devdash-invalidates": [
     "repositories",
     "tasks",
     "terminals",
     "projects"
    ],
    "x-devdash-reads": [
     "repositories"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "path": {
          "type": "string"
         },
         "name": {
          "type": [
           "string",
           "null"
          ],
          "description": "Absent takes the folder's name, which is usually right."
         }
        },
        "required": [
         "name",
         "path",
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/JsonValue"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/repository.remove": {
   "post": {
    "operationId": "repository.remove",
    "summary": "repository.remove",
    "description": "Needs **admin** access. About one project: `project` is its slug or id.\n\nChanges: `repositories`, `tasks`, `terminals`, `projects`. Refetch on `dataChanged` naming: `repositories`.",
    "tags": [
     "Repository"
    ],
    "x-devdash-capability": "admin",
    "x-devdash-project": true,
    "x-devdash-invalidates": [
     "repositories",
     "tasks",
     "terminals",
     "projects"
    ],
    "x-devdash-reads": [
     "repositories"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "id": {
          "type": "string"
         }
        },
        "required": [
         "id",
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/JsonValue"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/repository.update": {
   "post": {
    "operationId": "repository.update",
    "summary": "repository.update",
    "description": "Needs **admin** access. About one project: `project` is its slug or id.\n\nChanges: `repositories`, `tasks`, `terminals`, `projects`. Refetch on `dataChanged` naming: `repositories`.",
    "tags": [
     "Repository"
    ],
    "x-devdash-capability": "admin",
    "x-devdash-project": true,
    "x-devdash-invalidates": [
     "repositories",
     "tasks",
     "terminals",
     "projects"
    ],
    "x-devdash-reads": [
     "repositories"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "id": {
          "type": "string"
         },
         "name": {
          "type": [
           "string",
           "null"
          ],
          "description": "Absent keeps the name."
         },
         "branch": {
          "type": [
           "string",
           "null"
          ],
          "description": "The branch tasks are cut from. Absent keeps it; empty clears it."
         }
        },
        "required": [
         "branch",
         "id",
         "name",
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/JsonValue"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/run": {
   "post": {
    "operationId": "run",
    "summary": "run",
    "description": "Needs **read** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `runs`, `tasks`.",
    "tags": [
     "Run"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "runs",
     "tasks"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "id": {
          "type": "string"
         }
        },
        "required": [
         "id",
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/JsonValue"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/run.action": {
   "post": {
    "operationId": "run.action",
    "summary": "run.action",
    "description": "Needs **act** access. About one project: `project` is its slug or id.\n\nChanges: `runs`, `tasks`, `inbox`. Refetch on `dataChanged` naming: `runs`, `tasks`.",
    "tags": [
     "Run"
    ],
    "x-devdash-capability": "act",
    "x-devdash-project": true,
    "x-devdash-invalidates": [
     "runs",
     "tasks",
     "inbox"
    ],
    "x-devdash-reads": [
     "runs",
     "tasks"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "task": {
          "type": "string",
          "description": "The task the run belongs to. Checked by the scheduler, so an action cannot be aimed at another task's run by id alone."
         },
         "id": {
          "type": "string",
          "description": "The run."
         },
         "action": {
          "type": "string",
          "description": "`approve`, `approve_commit`, `stop`, `resume`, `skip`… — the scheduler's own vocabulary; it refuses what it does not know."
         }
        },
        "required": [
         "action",
         "id",
         "project",
         "task"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/JsonValue"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/run.restart": {
   "post": {
    "operationId": "run.restart",
    "summary": "run.restart",
    "description": "Needs **operate** access. About one project: `project` is its slug or id.\n\nChanges: `runs`, `tasks`, `inbox`. Refetch on `dataChanged` naming: `runs`, `tasks`.",
    "tags": [
     "Run"
    ],
    "x-devdash-capability": "operate",
    "x-devdash-project": true,
    "x-devdash-invalidates": [
     "runs",
     "tasks",
     "inbox"
    ],
    "x-devdash-reads": [
     "runs",
     "tasks"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "task": {
          "type": "string"
         },
         "id": {
          "type": "string"
         }
        },
        "required": [
         "id",
         "project",
         "task"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/JsonValue"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/run.revise": {
   "post": {
    "operationId": "run.revise",
    "summary": "run.revise",
    "description": "Needs **act** access. About one project: `project` is its slug or id.\n\nChanges: `runs`, `tasks`, `inbox`. Refetch on `dataChanged` naming: `runs`, `tasks`.",
    "tags": [
     "Run"
    ],
    "x-devdash-capability": "act",
    "x-devdash-project": true,
    "x-devdash-invalidates": [
     "runs",
     "tasks",
     "inbox"
    ],
    "x-devdash-reads": [
     "runs",
     "tasks"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "task": {
          "type": "string"
         },
         "id": {
          "type": "string"
         },
         "answers": {
          "type": "string",
          "description": "The person's answers to the plan's questions, as prose."
         }
        },
        "required": [
         "answers",
         "id",
         "project",
         "task"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/JsonValue"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/sandbox.build": {
   "post": {
    "operationId": "sandbox.build",
    "summary": "sandbox.build",
    "description": "Needs **admin** access. About the installation, not one project.\n\nChanges: `settings`. Refetch on `dataChanged` naming: nothing.",
    "tags": [
     "Sandbox"
    ],
    "x-devdash-capability": "admin",
    "x-devdash-project": false,
    "x-devdash-invalidates": [
     "settings"
    ],
    "x-devdash-reads": [],
    "requestBody": {
     "required": false,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/NoArgs"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/SandboxBuilt"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/sandbox.status": {
   "post": {
    "operationId": "sandbox.status",
    "summary": "sandbox.status",
    "description": "Needs **read** access. About the installation, not one project.\n\nChanges: nothing. Refetch on `dataChanged` naming: `settings`.",
    "tags": [
     "Sandbox"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": false,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "settings"
    ],
    "requestBody": {
     "required": false,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/NoArgs"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/SandboxStatus"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/sandbox.token.forget": {
   "post": {
    "operationId": "sandbox.token.forget",
    "summary": "sandbox.token.forget",
    "description": "Needs **admin** access. About the installation, not one project.\n\nChanges: `settings`. Refetch on `dataChanged` naming: nothing.",
    "tags": [
     "Sandbox"
    ],
    "x-devdash-capability": "admin",
    "x-devdash-project": false,
    "x-devdash-invalidates": [
     "settings"
    ],
    "x-devdash-reads": [],
    "requestBody": {
     "required": false,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/NoArgs"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "type": "boolean"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/sandbox.token.save": {
   "post": {
    "operationId": "sandbox.token.save",
    "summary": "sandbox.token.save",
    "description": "Needs **admin** access. About the installation, not one project.\n\nChanges: `settings`. Refetch on `dataChanged` naming: nothing.",
    "tags": [
     "Sandbox"
    ],
    "x-devdash-capability": "admin",
    "x-devdash-project": false,
    "x-devdash-invalidates": [
     "settings"
    ],
    "x-devdash-reads": [],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/SandboxToken"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "type": "boolean"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/screen.ai": {
   "post": {
    "operationId": "screen.ai",
    "summary": "screen.ai",
    "description": "Needs **read** access. About the installation, not one project.\n\nChanges: nothing. Refetch on `dataChanged` naming: `ai`, `mcp`.",
    "tags": [
     "Screen"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": false,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "ai",
     "mcp"
    ],
    "requestBody": {
     "required": false,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/NoArgs"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/AiScreen"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/screen.automations": {
   "post": {
    "operationId": "screen.automations",
    "summary": "screen.automations",
    "description": "Needs **read** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `automations`, `runs`.",
    "tags": [
     "Screen"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "automations",
     "runs"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "id": {
          "type": [
           "string",
           "null"
          ],
          "description": "The rule whose runs and decisions to include."
         }
        },
        "required": [
         "id",
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/AutomationsScreen"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/screen.cloudflare": {
   "post": {
    "operationId": "screen.cloudflare",
    "summary": "screen.cloudflare",
    "description": "Needs **read** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `cloudflare`, `integrations`.",
    "tags": [
     "Screen"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "cloudflare",
     "integrations"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "range": {
          "type": "string",
          "description": "`1h`, `6h`, `24h` (default), `7d` or `30d`. Ignored when `from` and `to` are given."
         },
         "from": {
          "type": "number",
          "description": "Seconds since the epoch."
         },
         "to": {
          "type": "number"
         },
         "view": {
          "type": "string",
          "description": "`issues` (default), `urls`, `security` or `traffic`."
         },
         "zones": {
          "type": "array",
          "items": {
           "type": "string"
          },
          "description": "Zone ids; empty reads every zone of the connection."
         },
         "scripts": {
          "type": "array",
          "items": {
           "type": "string"
          },
          "description": "Worker script names; empty reads every Worker (traffic view)."
         },
         "hosts": {
          "type": "array",
          "items": {
           "type": "string"
          },
          "description": "Hostnames."
         },
         "path": {
          "type": "string",
          "description": "A path prefix, `/api`."
         },
         "status": {
          "type": "array",
          "items": {
           "type": "string"
          },
          "description": "Status classes: `2xx` … `5xx`."
         },
         "methods": {
          "type": "array",
          "items": {
           "type": "string"
          }
         },
         "countries": {
          "type": "array",
          "items": {
           "type": "string"
          },
          "description": "Country codes as Cloudflare names them (`US`)."
         },
         "devices": {
          "type": "array",
          "items": {
           "type": "string"
          },
          "description": "`desktop`, `mobile`, `tablet`."
         },
         "cache": {
          "type": "array",
          "items": {
           "type": "string"
          },
          "description": "Cache statuses (`hit`, `miss`, …)."
         },
         "actions": {
          "type": "array",
          "items": {
           "type": "string"
          },
          "description": "Firewall actions (`block`, `managed_challenge`, …)."
         }
        },
        "required": [
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/CloudflareScreen"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/screen.home": {
   "post": {
    "operationId": "screen.home",
    "summary": "screen.home",
    "description": "Needs **read** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `tasks`, `pulls`, `runs`, `releases`, `inbox`, `integrations`, `live`.",
    "tags": [
     "Screen"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "tasks",
     "pulls",
     "runs",
     "releases",
     "inbox",
     "integrations",
     "live"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "properties": {
         "project": {
          "type": "string"
         }
        },
        "required": [
         "project"
        ],
        "additionalProperties": false
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/HomeScreen"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/screen.inbox": {
   "post": {
    "operationId": "screen.inbox",
    "summary": "screen.inbox",
    "description": "Needs **read** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `inbox`, `notifications`, `tasks`, `pulls`, `releases`, `runs`, `followups`, `reports`.",
    "tags": [
     "Screen"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "inbox",
     "notifications",
     "tasks",
     "pulls",
     "releases",
     "runs",
     "followups",
     "reports"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "properties": {
         "project": {
          "type": "string"
         }
        },
        "required": [
         "project"
        ],
        "additionalProperties": false
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/InboxScreen"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/screen.incidents": {
   "post": {
    "operationId": "screen.incidents",
    "summary": "screen.incidents",
    "description": "Needs **read** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `monitors`, `tests`, `logs`, `integrations`.",
    "tags": [
     "Screen"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "monitors",
     "tests",
     "logs",
     "integrations"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "range": {
          "type": "string",
          "description": "`24h`, `7d` (default), `30d` or `90d`. Ignored when `from` and `to` are given."
         },
         "from": {
          "type": "number",
          "description": "Milliseconds since the epoch."
         },
         "to": {
          "type": "number"
         },
         "source": {
          "type": "array",
          "items": {
           "type": "string"
          }
         },
         "severity": {
          "type": "array",
          "items": {
           "type": "string"
          },
          "description": "`critical`, `warning`, `info`."
         },
         "status": {
          "type": "array",
          "items": {
           "type": "string"
          },
          "description": "`open`, `resolved`."
         },
         "monitor": {
          "type": "array",
          "items": {
           "type": "string"
          },
          "description": "Monitor ids."
         },
         "environment": {
          "type": "array",
          "items": {
           "type": "string"
          }
         },
         "app": {
          "type": "array",
          "items": {
           "type": "string"
          }
         },
         "query": {
          "type": "string",
          "description": "Words the monitor's name, its target, the figure or the detail contain."
         },
         "sort": {
          "type": "string",
          "description": "`started`, `duration`, `severity` or `monitor`, then `:asc` or `:desc`."
         },
         "page": {
          "type": "number",
          "description": "1-based."
         },
         "size": {
          "type": "number"
         }
        },
        "required": [
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/IncidentsScreen"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/screen.kubernetes": {
   "post": {
    "operationId": "screen.kubernetes",
    "summary": "screen.kubernetes",
    "description": "Needs **read** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `kubernetes`, `integrations`, `monitors`.",
    "tags": [
     "Screen"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "kubernetes",
     "integrations",
     "monitors"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "context": {
          "type": "string",
          "description": "A context the connection reads; the first by default."
         },
         "view": {
          "type": "string",
          "description": "`workloads` (default), `pods` or `events`."
         }
        },
        "required": [
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/KubernetesScreen"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/screen.live": {
   "post": {
    "operationId": "screen.live",
    "summary": "screen.live",
    "description": "Needs **read** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `live`.",
    "tags": [
     "Screen"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "live"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "properties": {
         "project": {
          "type": "string"
         }
        },
        "required": [
         "project"
        ],
        "additionalProperties": false
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/LiveScreen"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/screen.local": {
   "post": {
    "operationId": "screen.local",
    "summary": "screen.local",
    "description": "Needs **read** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `local`, `tasks`, `tests`.",
    "tags": [
     "Screen"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "local",
     "tasks",
     "tests"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "properties": {
         "project": {
          "type": "string"
         }
        },
        "required": [
         "project"
        ],
        "additionalProperties": false
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/LocalScreen"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/screen.logs": {
   "post": {
    "operationId": "screen.logs",
    "summary": "screen.logs",
    "description": "Needs **read** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `logs`.",
    "tags": [
     "Screen"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "logs"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "properties": {
         "project": {
          "type": "string"
         }
        },
        "required": [
         "project"
        ],
        "additionalProperties": false
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/LogsScreen"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/screen.mcp": {
   "post": {
    "operationId": "screen.mcp",
    "summary": "screen.mcp",
    "description": "Needs **read** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `mcp`, `settings`.",
    "tags": [
     "Screen"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "mcp",
     "settings"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "properties": {
         "project": {
          "type": "string"
         }
        },
        "required": [
         "project"
        ],
        "additionalProperties": false
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/McpScreen"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/screen.monitors": {
   "post": {
    "operationId": "screen.monitors",
    "summary": "screen.monitors",
    "description": "Needs **read** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `monitors`, `tests`, `logs`, `integrations`.",
    "tags": [
     "Screen"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "monitors",
     "tests",
     "logs",
     "integrations"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "source": {
          "type": "array",
          "items": {
           "type": "string"
          },
          "description": "`sentry`, `newrelic`, `devdash-check`, `devdash-alert`, `cloudflare`."
         },
         "kind": {
          "type": "array",
          "items": {
           "type": "string"
          },
          "description": "`error`, `metric`, `uptime`, `cron`, `check`, `log-alert`."
         },
         "status": {
          "type": "array",
          "items": {
           "type": "string"
          },
          "description": "`ok`, `warning`, `critical`, `muted`."
         },
         "app": {
          "type": "array",
          "items": {
           "type": "string"
          }
         },
         "query": {
          "type": "string",
          "description": "Words the name, target or condition contain."
         }
        },
        "required": [
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/MonitorsScreen"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/screen.pull": {
   "post": {
    "operationId": "screen.pull",
    "summary": "screen.pull",
    "description": "Needs **read** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `pulls`, `runs`.",
    "tags": [
     "Screen"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "pulls",
     "runs"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "id": {
          "type": "string"
         }
        },
        "required": [
         "id",
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/PullScreen"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/screen.releases": {
   "post": {
    "operationId": "screen.releases",
    "summary": "screen.releases",
    "description": "Needs **read** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `releases`.",
    "tags": [
     "Screen"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "releases"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "id": {
          "type": [
           "string",
           "null"
          ],
          "description": "The release whose readiness and timeline to include."
         }
        },
        "required": [
         "id",
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/ReleasesScreen"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/screen.repo": {
   "post": {
    "operationId": "screen.repo",
    "summary": "screen.repo",
    "description": "Needs **read** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `repositories`, `pulls`, `tasks`.",
    "tags": [
     "Screen"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "repositories",
     "pulls",
     "tasks"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "repo": {
          "type": "string"
         },
         "ref": {
          "type": "string",
          "description": "A branch, remote branch, tag or commit. Absent is the default branch."
         },
         "path": {
          "type": "string",
          "description": "Repository-relative; absent or empty is the root."
         }
        },
        "required": [
         "project",
         "repo"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/RepoScreen"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/screen.security": {
   "post": {
    "operationId": "screen.security",
    "summary": "screen.security",
    "description": "Needs **read** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `monitors`, `integrations`, `logs`.",
    "tags": [
     "Screen"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "monitors",
     "integrations",
     "logs"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "properties": {
         "project": {
          "type": "string"
         }
        },
        "required": [
         "project"
        ],
        "additionalProperties": false
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/SecurityScreen"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/screen.sentry": {
   "post": {
    "operationId": "screen.sentry",
    "summary": "screen.sentry",
    "description": "Needs **read** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `sentry`, `integrations`.",
    "tags": [
     "Screen"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "sentry",
     "integrations"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "period": {
          "type": "string",
          "description": "`24h` (default), `7d` or `14d`: issues seen in that window."
         },
         "sort": {
          "type": "string",
          "description": "`events` (default), `users`, `newest` or `lastSeen`."
         },
         "environment": {
          "type": "array",
          "items": {
           "type": "string"
          },
          "description": "Environment names: issues with an event in one of them."
         },
         "projects": {
          "type": "array",
          "items": {
           "type": "string"
          },
          "description": "Project slugs."
         },
         "level": {
          "type": "array",
          "items": {
           "type": "string"
          },
          "description": "`fatal`, `error`, `warning`, `info`, `debug`."
         },
         "query": {
          "type": "string",
          "description": "Words the title, culprit or short id contain."
         }
        },
        "required": [
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/SentryScreen"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/screen.services": {
   "post": {
    "operationId": "screen.services",
    "summary": "screen.services",
    "description": "Needs **read** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `services`, `integrations`.",
    "tags": [
     "Screen"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "services",
     "integrations"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "minutes": {
          "type": [
           "number",
           "null"
          ],
          "description": "Minutes back from now. Default 60."
         },
         "from": {
          "type": [
           "number",
           "null"
          ],
          "description": "Epoch seconds. With `to`, replaces `minutes`."
         },
         "to": {
          "type": [
           "number",
           "null"
          ]
         }
        },
        "required": [
         "from",
         "minutes",
         "project",
         "to"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/ServicesScreen"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/screen.shell": {
   "post": {
    "operationId": "screen.shell",
    "summary": "screen.shell",
    "description": "Needs **read** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `projects`, `repositories`, `inbox`, `notifications`, `tasks`, `runs`, `integrations`, `reports`.",
    "tags": [
     "Screen"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "projects",
     "repositories",
     "inbox",
     "notifications",
     "tasks",
     "runs",
     "integrations",
     "reports"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "properties": {
         "project": {
          "type": "string"
         }
        },
        "required": [
         "project"
        ],
        "additionalProperties": false
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/ShellScreen"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/screen.task": {
   "post": {
    "operationId": "screen.task",
    "summary": "screen.task",
    "description": "Needs **read** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `tasks`, `runs`, `terminals`, `automations`.",
    "tags": [
     "Screen"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "tasks",
     "runs",
     "terminals",
     "automations"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "id": {
          "type": "string"
         }
        },
        "required": [
         "id",
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/TaskScreen"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/screen.terminals": {
   "post": {
    "operationId": "screen.terminals",
    "summary": "screen.terminals",
    "description": "Needs **read** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `terminals`, `settings`.",
    "tags": [
     "Screen"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "terminals",
     "settings"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "properties": {
         "project": {
          "type": "string"
         }
        },
        "required": [
         "project"
        ],
        "additionalProperties": false
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/TerminalsScreen"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/screen.tests": {
   "post": {
    "operationId": "screen.tests",
    "summary": "screen.tests",
    "description": "Needs **read** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `tests`.",
    "tags": [
     "Screen"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "tests"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "properties": {
         "project": {
          "type": "string"
         }
        },
        "required": [
         "project"
        ],
        "additionalProperties": false
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/TestsScreen"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/screen.timeline": {
   "post": {
    "operationId": "screen.timeline",
    "summary": "screen.timeline",
    "description": "Needs **read** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `integrations`, `releases`, `live`, `logs`, `runs`, `repositories`, `sentry`, `monitors`, `tests`.",
    "tags": [
     "Screen"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "integrations",
     "releases",
     "live",
     "logs",
     "runs",
     "repositories",
     "sentry",
     "monitors",
     "tests"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "range": {
          "type": "string",
          "description": "A window ending now: `1h`, `6h`, `24h` (default), `7d`, `30d`, or any `<n>m`, `<n>h`, `<n>d`. Ignored when `from` is given."
         },
         "from": {
          "type": "number",
          "description": "Milliseconds since the epoch."
         },
         "to": {
          "type": "number",
          "description": "Milliseconds since the epoch; now when absent."
         },
         "lanes": {
          "type": "array",
          "items": {
           "type": "string"
          },
          "description": "Lane ids to read; absent reads every lane `sources` lists."
         },
         "filters": {
          "$ref": "#/components/schemas/TimelineFilters"
         },
         "buckets": {
          "type": "number",
          "description": "About how many buckets the window is cut into: 20 to 400, default 120."
         }
        },
        "required": [
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/TimelineScreen"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/search": {
   "post": {
    "operationId": "search",
    "summary": "search",
    "description": "Needs **read** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `search`.",
    "tags": [
     "Search"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "search"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "query": {
          "type": "string"
         },
         "kind": {
          "type": "string",
          "description": "A result kind to narrow to (`Issues`, `Pull requests`, …). Absent or `All` searches everything."
         },
         "provider": {
          "type": "string",
          "description": "A provider id to narrow to. Absent searches every provider."
         }
        },
        "required": [
         "project",
         "query"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/SearchResults"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/security.check": {
   "post": {
    "operationId": "security.check",
    "summary": "security.check",
    "description": "Needs **act** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `monitors`, `integrations`, `logs`.",
    "tags": [
     "Security"
    ],
    "x-devdash-capability": "act",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "monitors",
     "integrations",
     "logs"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "properties": {
         "project": {
          "type": "string"
         }
        },
        "required": [
         "project"
        ],
        "additionalProperties": false
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/SecurityCheckStarted"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/security.finding": {
   "post": {
    "operationId": "security.finding",
    "summary": "security.finding",
    "description": "Needs **read** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `monitors`, `integrations`, `logs`.",
    "tags": [
     "Security"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "monitors",
     "integrations",
     "logs"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "id": {
          "type": "string"
         }
        },
        "required": [
         "id",
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/SecurityFindingDetail"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/security.ignore-route": {
   "post": {
    "operationId": "security.ignore-route",
    "summary": "security.ignore-route",
    "description": "Needs **admin** access. About one project: `project` is its slug or id.\n\nChanges: `monitors`. Refetch on `dataChanged` naming: `monitors`, `integrations`, `logs`.",
    "tags": [
     "Security"
    ],
    "x-devdash-capability": "admin",
    "x-devdash-project": true,
    "x-devdash-invalidates": [
     "monitors"
    ],
    "x-devdash-reads": [
     "monitors",
     "integrations",
     "logs"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "route": {
          "type": "string",
          "description": "A route (`/products/:id`), a concrete path (read as its route) or a prefix ending in `*`."
         }
        },
        "required": [
         "project",
         "route"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/IgnoredRoute"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/security.ip": {
   "post": {
    "operationId": "security.ip",
    "summary": "security.ip",
    "description": "Needs **read** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `monitors`, `integrations`, `logs`.",
    "tags": [
     "Security"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "monitors",
     "integrations",
     "logs"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "ip": {
          "type": "string"
         },
         "hours": {
          "type": [
           "number",
           "null"
          ],
          "description": "How far back, 1–168. 24 by default."
         }
        },
        "required": [
         "hours",
         "ip",
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/SecurityIpRequests"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/security.repository": {
   "post": {
    "operationId": "security.repository",
    "summary": "security.repository",
    "description": "Needs **read** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `monitors`, `integrations`, `logs`.",
    "tags": [
     "Security"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "monitors",
     "integrations",
     "logs"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "properties": {
         "project": {
          "type": "string"
         }
        },
        "required": [
         "project"
        ],
        "additionalProperties": false
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/SecurityRepository"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/security.review": {
   "post": {
    "operationId": "security.review",
    "summary": "security.review",
    "description": "Needs **act** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `monitors`, `integrations`, `logs`.",
    "tags": [
     "Security"
    ],
    "x-devdash-capability": "act",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "monitors",
     "integrations",
     "logs"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "id": {
          "type": "string",
          "description": "The finding's id."
         },
         "workspace": {
          "type": "string"
         },
         "agent": {
          "type": "string",
          "description": "`claude` or `codex`."
         },
         "question": {
          "type": "string"
         }
        },
        "required": [
         "agent",
         "id",
         "project",
         "question",
         "workspace"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/InvestigationSnapshot"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/security.rule.delete": {
   "post": {
    "operationId": "security.rule.delete",
    "summary": "security.rule.delete",
    "description": "Needs **admin** access. About one project: `project` is its slug or id.\n\nChanges: `monitors`. Refetch on `dataChanged` naming: `monitors`, `integrations`, `logs`.",
    "tags": [
     "Security"
    ],
    "x-devdash-capability": "admin",
    "x-devdash-project": true,
    "x-devdash-invalidates": [
     "monitors"
    ],
    "x-devdash-reads": [
     "monitors",
     "integrations",
     "logs"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "id": {
          "type": "string"
         }
        },
        "required": [
         "id",
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/SecurityRules"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/security.rule.save": {
   "post": {
    "operationId": "security.rule.save",
    "summary": "security.rule.save",
    "description": "Needs **admin** access. About one project: `project` is its slug or id.\n\nChanges: `monitors`. Refetch on `dataChanged` naming: `monitors`, `integrations`, `logs`.",
    "tags": [
     "Security"
    ],
    "x-devdash-capability": "admin",
    "x-devdash-project": true,
    "x-devdash-invalidates": [
     "monitors"
    ],
    "x-devdash-reads": [
     "monitors",
     "integrations",
     "logs"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "id": {
          "type": "string",
          "description": "Empty on a new rule: the service gives it one."
         },
         "name": {
          "type": "string"
         },
         "kind": {
          "type": "string",
          "description": "`shared_link`, `enumeration`, `burst` or `failures`."
         },
         "enabled": {
          "type": "boolean"
         },
         "routes": {
          "type": "array",
          "items": {
           "type": "string"
          },
          "description": "`/products/:id`, or a prefix ending in `*`; empty reads every route."
         },
         "windowMinutes": {
          "type": "number",
          "description": "Minutes, 1–120."
         },
         "severity": {
          "type": "string",
          "description": "`low`, `medium` or `high`: the least severity its findings have."
         },
         "minIps": {
          "type": "number",
          "description": "`shared_link`: distinct IPs, at least 2."
         },
         "minDevices": {
          "type": "number",
          "description": "`shared_link`: distinct devices, at least 2."
         },
         "ids": {
          "type": "number",
          "description": "`enumeration`: distinct ids from one IP, at least 5."
         },
         "requests": {
          "type": "number",
          "description": "`burst` and `failures`: requests from one IP, at least 5."
         },
         "statuses": {
          "type": "array",
          "items": {
           "type": "number"
          },
          "description": "`failures`: the response statuses that count."
         }
        },
        "required": [
         "enabled",
         "id",
         "ids",
         "kind",
         "minDevices",
         "minIps",
         "name",
         "project",
         "requests",
         "routes",
         "severity",
         "statuses",
         "windowMinutes"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/SecurityRules"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/security.settings.save": {
   "post": {
    "operationId": "security.settings.save",
    "summary": "security.settings.save",
    "description": "Needs **admin** access. About one project: `project` is its slug or id.\n\nChanges: `monitors`. Refetch on `dataChanged` naming: `monitors`, `integrations`, `logs`.",
    "tags": [
     "Security"
    ],
    "x-devdash-capability": "admin",
    "x-devdash-project": true,
    "x-devdash-invalidates": [
     "monitors"
    ],
    "x-devdash-reads": [
     "monitors",
     "integrations",
     "logs"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "enabled": {
          "type": "boolean"
         },
         "excludePrivate": {
          "type": "boolean",
          "description": "Leave out private and internal IP ranges."
         },
         "ignore": {
          "type": "array",
          "items": {
           "type": "string"
          },
          "description": "Routes left out: `/products/:id`, or a prefix ending in `*`."
         }
        },
        "required": [
         "enabled",
         "excludePrivate",
         "ignore",
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/SecuritySettings"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/sentry.assignees": {
   "post": {
    "operationId": "sentry.assignees",
    "summary": "sentry.assignees",
    "description": "Needs **read** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `sentry`, `integrations`.",
    "tags": [
     "Sentry"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "sentry",
     "integrations"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "properties": {
         "project": {
          "type": "string"
         }
        },
        "required": [
         "project"
        ],
        "additionalProperties": false
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/SentryAssignees"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/sentry.event": {
   "post": {
    "operationId": "sentry.event",
    "summary": "sentry.event",
    "description": "Needs **read** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `sentry`, `integrations`.",
    "tags": [
     "Sentry"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "sentry",
     "integrations"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "sentryProject": {
          "type": "string",
          "description": "The Sentry project's slug."
         },
         "id": {
          "type": "string",
          "description": "The event id."
         }
        },
        "required": [
         "id",
         "project",
         "sentryProject"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/SentryEvent"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/sentry.events": {
   "post": {
    "operationId": "sentry.events",
    "summary": "sentry.events",
    "description": "Needs **read** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `sentry`, `integrations`.",
    "tags": [
     "Sentry"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "sentry",
     "integrations"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "period": {
          "type": "string",
          "description": "`24h` (default), `7d` or `14d`."
         },
         "level": {
          "type": "array",
          "items": {
           "type": "string"
          }
         },
         "environment": {
          "type": "array",
          "items": {
           "type": "string"
          }
         },
         "release": {
          "type": "array",
          "items": {
           "type": "string"
          }
         },
         "projects": {
          "type": "array",
          "items": {
           "type": "string"
          },
          "description": "Project slugs."
         },
         "query": {
          "type": "string",
          "description": "The Logs query language: words in the title, `field:value` terms."
         },
         "page": {
          "type": "number",
          "description": "1-based."
         },
         "size": {
          "type": "number",
          "description": "25, 50, 100 or 200."
         }
        },
        "required": [
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/SentryEventsScreen"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/sentry.fix": {
   "post": {
    "operationId": "sentry.fix",
    "summary": "sentry.fix",
    "description": "Needs **operate** access. About one project: `project` is its slug or id.\n\nChanges: `tasks`, `runs`, `inbox`, `terminals`. Refetch on `dataChanged` naming: `sentry`, `integrations`.",
    "tags": [
     "Sentry"
    ],
    "x-devdash-capability": "operate",
    "x-devdash-project": true,
    "x-devdash-invalidates": [
     "tasks",
     "runs",
     "inbox",
     "terminals"
    ],
    "x-devdash-reads": [
     "sentry",
     "integrations"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "id": {
          "type": "string",
          "description": "The Sentry issue."
         },
         "key": {
          "type": "string",
          "description": "The Jira ticket the work is done under (linked to the issue, or just created from it)."
         },
         "workspace": {
          "type": "string",
          "description": "The repository to cut the worktree in."
         },
         "workflow": {
          "type": "string",
          "description": "The AI workflow profile to run."
         }
        },
        "required": [
         "id",
         "key",
         "project",
         "workflow",
         "workspace"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Started"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/sentry.investigate": {
   "post": {
    "operationId": "sentry.investigate",
    "summary": "sentry.investigate",
    "description": "Needs **act** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `sentry`, `integrations`.",
    "tags": [
     "Sentry"
    ],
    "x-devdash-capability": "act",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "sentry",
     "integrations"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "id": {
          "type": "string",
          "description": "The Sentry issue id. The conversation is `investigation` `sentry:<id>`."
         },
         "workspace": {
          "type": "string",
          "description": "The workspace whose repository the agent reads; remembered for the issue's Sentry project."
         },
         "agent": {
          "type": "string",
          "description": "`claude` or `codex`."
         },
         "question": {
          "type": "string"
         }
        },
        "required": [
         "agent",
         "id",
         "project",
         "question",
         "workspace"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/InvestigationSnapshot"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/sentry.issue": {
   "post": {
    "operationId": "sentry.issue",
    "summary": "sentry.issue",
    "description": "Needs **read** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `sentry`, `integrations`.",
    "tags": [
     "Sentry"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "sentry",
     "integrations"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "id": {
          "type": "string"
         }
        },
        "required": [
         "id",
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/SentryIssueDetail"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/sentry.issues.update": {
   "post": {
    "operationId": "sentry.issues.update",
    "summary": "sentry.issues.update",
    "description": "Needs **act** access. About one project: `project` is its slug or id.\n\nChanges: `sentry`. Refetch on `dataChanged` naming: `sentry`, `integrations`.",
    "tags": [
     "Sentry"
    ],
    "x-devdash-capability": "act",
    "x-devdash-project": true,
    "x-devdash-invalidates": [
     "sentry"
    ],
    "x-devdash-reads": [
     "sentry",
     "integrations"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "ids": {
          "type": "array",
          "items": {
           "type": "string"
          },
          "description": "Sentry issue ids, at most 100."
         },
         "action": {
          "type": "string",
          "description": "`resolve`, `unresolve`, `ignore`, `assign`, `bookmark` or `unbookmark`."
         },
         "minutes": {
          "type": "number",
          "description": "For `ignore`: how many minutes it lasts."
         },
         "events": {
          "type": "number",
          "description": "For `ignore`: how many more events end it."
         },
         "assignee": {
          "type": "string",
          "description": "For `assign`: `user:<id>` or `team:<id>` from `sentry.assignees`; absent or empty unassigns."
         },
         "assigneeName": {
          "type": "string",
          "description": "The assignee's name, shown on the stored row until the next sync."
         }
        },
        "required": [
         "action",
         "ids",
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/SentryUpdated"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/sentry.jira.create": {
   "post": {
    "operationId": "sentry.jira.create",
    "summary": "sentry.jira.create",
    "description": "Needs **act** access. About one project: `project` is its slug or id.\n\nChanges: `sentry`. Refetch on `dataChanged` naming: `sentry`, `integrations`.",
    "tags": [
     "Sentry"
    ],
    "x-devdash-capability": "act",
    "x-devdash-project": true,
    "x-devdash-invalidates": [
     "sentry"
    ],
    "x-devdash-reads": [
     "sentry",
     "integrations"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "id": {
          "type": "string",
          "description": "The Sentry issue id."
         },
         "jiraProject": {
          "type": "string"
         },
         "issueType": {
          "type": "string",
          "description": "The issue type's id, from `sentry.jira.options`."
         },
         "summary": {
          "type": "string"
         }
        },
        "required": [
         "id",
         "issueType",
         "jiraProject",
         "project",
         "summary"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/SentryJiraLinked"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/sentry.jira.link": {
   "post": {
    "operationId": "sentry.jira.link",
    "summary": "sentry.jira.link",
    "description": "Needs **act** access. About one project: `project` is its slug or id.\n\nChanges: `sentry`. Refetch on `dataChanged` naming: `sentry`, `integrations`.",
    "tags": [
     "Sentry"
    ],
    "x-devdash-capability": "act",
    "x-devdash-project": true,
    "x-devdash-invalidates": [
     "sentry"
    ],
    "x-devdash-reads": [
     "sentry",
     "integrations"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "id": {
          "type": "string",
          "description": "The Sentry issue id."
         },
         "key": {
          "type": "string",
          "description": "An existing Jira key: `ENGR-12`."
         }
        },
        "required": [
         "id",
         "key",
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/SentryJiraLinked"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/sentry.jira.options": {
   "post": {
    "operationId": "sentry.jira.options",
    "summary": "sentry.jira.options",
    "description": "Needs **read** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `sentry`, `integrations`.",
    "tags": [
     "Sentry"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "sentry",
     "integrations"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "jiraProject": {
          "type": "string",
          "description": "The Jira project whose issue types to list; the default project when absent."
         }
        },
        "required": [
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/SentryJiraOptions"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/sentry.projects": {
   "post": {
    "operationId": "sentry.projects",
    "summary": "sentry.projects",
    "description": "Needs **read** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `sentry`, `integrations`.",
    "tags": [
     "Sentry"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "sentry",
     "integrations"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "properties": {
         "project": {
          "type": "string"
         }
        },
        "required": [
         "project"
        ],
        "additionalProperties": false
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "type": "array",
         "items": {
          "$ref": "#/components/schemas/SentryProject"
         }
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/sentry.repository": {
   "post": {
    "operationId": "sentry.repository",
    "summary": "sentry.repository",
    "description": "Needs **read** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `sentry`, `integrations`.",
    "tags": [
     "Sentry"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "sentry",
     "integrations"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "sentryProject": {
          "type": "string",
          "description": "The Sentry project's slug."
         }
        },
        "required": [
         "project",
         "sentryProject"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/SentryRepository"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/sentry.sync": {
   "post": {
    "operationId": "sentry.sync",
    "summary": "sentry.sync",
    "description": "Needs **act** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `sentry`, `integrations`.",
    "tags": [
     "Sentry"
    ],
    "x-devdash-capability": "act",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "sentry",
     "integrations"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "properties": {
         "project": {
          "type": "string"
         }
        },
        "required": [
         "project"
        ],
        "additionalProperties": false
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/SentrySyncStarted"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/service.config.save": {
   "post": {
    "operationId": "service.config.save",
    "summary": "service.config.save",
    "description": "Needs **admin** access. About the installation, not one project.\n\nChanges: `settings`. Refetch on `dataChanged` naming: `settings`.",
    "tags": [
     "Service"
    ],
    "x-devdash-capability": "admin",
    "x-devdash-project": false,
    "x-devdash-invalidates": [
     "settings"
    ],
    "x-devdash-reads": [
     "settings"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/ServiceConfig"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/ConfigSaved"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/service.logs": {
   "post": {
    "operationId": "service.logs",
    "summary": "service.logs",
    "description": "Needs **admin** access. About the installation, not one project.\n\nChanges: nothing. Refetch on `dataChanged` naming: `settings`.",
    "tags": [
     "Service"
    ],
    "x-devdash-capability": "admin",
    "x-devdash-project": false,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "settings"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/LogArgs"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/LogTail"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/service.restart": {
   "post": {
    "operationId": "service.restart",
    "summary": "service.restart",
    "description": "Needs **admin** access. About the installation, not one project.\n\nChanges: nothing. Refetch on `dataChanged` naming: `settings`.",
    "tags": [
     "Service"
    ],
    "x-devdash-capability": "admin",
    "x-devdash-project": false,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "settings"
    ],
    "requestBody": {
     "required": false,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/NoArgs"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Restarting"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/service.status": {
   "post": {
    "operationId": "service.status",
    "summary": "service.status",
    "description": "Needs **admin** access. About the installation, not one project.\n\nChanges: nothing. Refetch on `dataChanged` naming: `settings`.",
    "tags": [
     "Service"
    ],
    "x-devdash-capability": "admin",
    "x-devdash-project": false,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "settings"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/StatusArgs"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/ServiceStatus"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/service.update": {
   "post": {
    "operationId": "service.update",
    "summary": "service.update",
    "description": "Needs **admin** access. About the installation, not one project.\n\nChanges: `settings`. Refetch on `dataChanged` naming: `settings`.",
    "tags": [
     "Service"
    ],
    "x-devdash-capability": "admin",
    "x-devdash-project": false,
    "x-devdash-invalidates": [
     "settings"
    ],
    "x-devdash-reads": [
     "settings"
    ],
    "requestBody": {
     "required": false,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/NoArgs"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/UpdateOutcome"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/services": {
   "post": {
    "operationId": "services",
    "summary": "services",
    "description": "Needs **read** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `services`.",
    "tags": [
     "Service"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "services"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "minutes": {
          "type": [
           "number",
           "null"
          ],
          "description": "Minutes back from now. Default 60."
         },
         "from": {
          "type": [
           "number",
           "null"
          ],
          "description": "Epoch seconds. With `to`, replaces `minutes`."
         },
         "to": {
          "type": [
           "number",
           "null"
          ]
         }
        },
        "required": [
         "from",
         "minutes",
         "project",
         "to"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Fleet"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/services.host": {
   "post": {
    "operationId": "services.host",
    "summary": "services.host",
    "description": "Needs **read** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `services`.",
    "tags": [
     "Service"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "services"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "id": {
          "type": "string",
          "description": "The host's id from `services`."
         },
         "minutes": {
          "type": [
           "number",
           "null"
          ],
          "description": "Minutes back from now. Default 60."
         },
         "from": {
          "type": [
           "number",
           "null"
          ],
          "description": "Epoch seconds. With `to`, replaces `minutes`."
         },
         "to": {
          "type": [
           "number",
           "null"
          ]
         }
        },
        "required": [
         "from",
         "id",
         "minutes",
         "project",
         "to"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Subject"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/sessions.list": {
   "post": {
    "operationId": "sessions.list",
    "summary": "sessions.list",
    "description": "Needs **admin** access. About the installation, not one project.\n\nChanges: nothing. Refetch on `dataChanged` naming: `settings`.",
    "tags": [
     "Sessions"
    ],
    "x-devdash-capability": "admin",
    "x-devdash-project": false,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "settings"
    ],
    "requestBody": {
     "required": false,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/NoArgs"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "type": "array",
         "items": {
          "$ref": "#/components/schemas/BrowserSession"
         }
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/sessions.revoke": {
   "post": {
    "operationId": "sessions.revoke",
    "summary": "sessions.revoke",
    "description": "Needs **admin** access. About the installation, not one project.\n\nChanges: nothing. Refetch on `dataChanged` naming: `settings`.",
    "tags": [
     "Sessions"
    ],
    "x-devdash-capability": "admin",
    "x-devdash-project": false,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "settings"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/RevokeArgs"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "type": "boolean"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/task": {
   "post": {
    "operationId": "task",
    "summary": "task",
    "description": "Needs **read** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `tasks`, `runs`.",
    "tags": [
     "Task"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "tasks",
     "runs"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "id": {
          "type": "string"
         }
        },
        "required": [
         "id",
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/JsonValue"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/task.archive": {
   "post": {
    "operationId": "task.archive",
    "summary": "task.archive",
    "description": "Needs **act** access. About one project: `project` is its slug or id.\n\nChanges: `tasks`, `inbox`, `terminals`, `favorites`. Refetch on `dataChanged` naming: `tasks`, `runs`.",
    "tags": [
     "Task"
    ],
    "x-devdash-capability": "act",
    "x-devdash-project": true,
    "x-devdash-invalidates": [
     "tasks",
     "inbox",
     "terminals",
     "favorites"
    ],
    "x-devdash-reads": [
     "tasks",
     "runs"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "id": {
          "type": "string"
         }
        },
        "required": [
         "id",
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/JsonValue"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/task.assignees": {
   "post": {
    "operationId": "task.assignees",
    "summary": "task.assignees",
    "description": "Needs **read** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `tasks`, `runs`.",
    "tags": [
     "Task"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "tasks",
     "runs"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "properties": {
         "project": {
          "type": "string"
         }
        },
        "required": [
         "project"
        ],
        "additionalProperties": false
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "type": "array",
         "items": {
          "$ref": "#/components/schemas/Assignee"
         }
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/task.branches": {
   "post": {
    "operationId": "task.branches",
    "summary": "task.branches",
    "description": "Needs **read** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `tasks`, `repositories`.",
    "tags": [
     "Task"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "tasks",
     "repositories"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "key": {
          "type": "string",
          "description": "The tracker key, e.g. `ENGR-9212`."
         }
        },
        "required": [
         "key",
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/RelatedBranches"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/task.changes": {
   "post": {
    "operationId": "task.changes",
    "summary": "task.changes",
    "description": "Needs **read** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `tasks`, `runs`.",
    "tags": [
     "Task"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "tasks",
     "runs"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "id": {
          "type": "string",
          "description": "The task."
         },
         "file": {
          "type": [
           "string",
           "null"
          ],
          "description": "One file of the change, or the whole change when absent."
         }
        },
        "required": [
         "file",
         "id",
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/TaskChanges"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/task.choices": {
   "post": {
    "operationId": "task.choices",
    "summary": "task.choices",
    "description": "Needs **read** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `tasks`, `runs`.",
    "tags": [
     "Task"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "tasks",
     "runs"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "properties": {
         "project": {
          "type": "string"
         }
        },
        "required": [
         "project"
        ],
        "additionalProperties": false
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "type": "array",
         "items": {
          "$ref": "#/components/schemas/TaskParentChoice"
         }
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/task.comment": {
   "post": {
    "operationId": "task.comment",
    "summary": "task.comment",
    "description": "Needs **act** access. About one project: `project` is its slug or id.\n\nChanges: `tasks`. Refetch on `dataChanged` naming: `tasks`, `runs`.",
    "tags": [
     "Task"
    ],
    "x-devdash-capability": "act",
    "x-devdash-project": true,
    "x-devdash-invalidates": [
     "tasks"
    ],
    "x-devdash-reads": [
     "tasks",
     "runs"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "id": {
          "type": "string"
         },
         "body": {
          "type": "string"
         },
         "author_kind": {
          "type": "string",
          "description": "Who is saying it: `me` (the default), `agent` or `chat`."
         },
         "author": {
          "type": "string",
          "description": "For an agent, its profile id; ignored otherwise."
         }
        },
        "required": [
         "body",
         "id",
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Started"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/task.create": {
   "post": {
    "operationId": "task.create",
    "summary": "task.create",
    "description": "Needs **operate** access. About one project: `project` is its slug or id.\n\nChanges: `tasks`, `runs`, `inbox`, `terminals`. Refetch on `dataChanged` naming: `tasks`, `runs`.",
    "tags": [
     "Task"
    ],
    "x-devdash-capability": "operate",
    "x-devdash-project": true,
    "x-devdash-invalidates": [
     "tasks",
     "runs",
     "inbox",
     "terminals"
    ],
    "x-devdash-reads": [
     "tasks",
     "runs"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "workspace": {
          "type": "string",
          "description": "The repository to cut the worktree in."
         },
         "title": {
          "type": "string"
         },
         "branch": {
          "type": "string",
          "description": "A branch name; absent to let the branch template name one."
         },
         "base_branch": {
          "type": "string"
         },
         "status": {
          "type": "string",
          "description": "`backlog`, `todo` (the default), `in_progress`, `in_review`, `done` or `cancelled`."
         },
         "fields": {
          "$ref": "#/components/schemas/Record_string_unknown",
          "description": "Any of the fields `task.update` takes: `kind` (`task` or `epic`), `notes`, `priority`, `assignee`, `labels`, `startDate`, `dueDate`, `estimateHours`, `parentId`."
         },
         "source": {
          "type": "string",
          "description": "Who made it: `local` (the default) or `chat`."
         }
        },
        "required": [
         "project",
         "title",
         "workspace"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Started"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/task.delivery": {
   "post": {
    "operationId": "task.delivery",
    "summary": "task.delivery",
    "description": "Needs **read** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `tasks`, `runs`.",
    "tags": [
     "Task"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "tasks",
     "runs"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "id": {
          "type": "string"
         }
        },
        "required": [
         "id",
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Delivery"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/task.destroy": {
   "post": {
    "operationId": "task.destroy",
    "summary": "task.destroy",
    "description": "Needs **operate** access. About one project: `project` is its slug or id.\n\nChanges: `tasks`, `runs`, `terminals`, `inbox`, `favorites`. Refetch on `dataChanged` naming: `tasks`, `runs`.",
    "tags": [
     "Task"
    ],
    "x-devdash-capability": "operate",
    "x-devdash-project": true,
    "x-devdash-invalidates": [
     "tasks",
     "runs",
     "terminals",
     "inbox",
     "favorites"
    ],
    "x-devdash-reads": [
     "tasks",
     "runs"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "id": {
          "type": "string"
         },
         "discardChanges": {
          "type": "boolean",
          "description": "The explicit confirmation core demands before removing a worktree with changes in it. Send `false` first: the refusal names how many there are, which is what the confirmation should say."
         }
        },
        "required": [
         "discardChanges",
         "id",
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "type": "boolean"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/task.pull-request": {
   "post": {
    "operationId": "task.pull-request",
    "summary": "task.pull-request",
    "description": "Needs **operate** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `tasks`, `runs`.",
    "tags": [
     "Task"
    ],
    "x-devdash-capability": "operate",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "tasks",
     "runs"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "id": {
          "type": "string"
         }
        },
        "required": [
         "id",
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/PullRequestPlan"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/task.push": {
   "post": {
    "operationId": "task.push",
    "summary": "task.push",
    "description": "Needs **operate** access. About one project: `project` is its slug or id.\n\nChanges: `tasks`, `pulls`. Refetch on `dataChanged` naming: `tasks`, `runs`.",
    "tags": [
     "Task"
    ],
    "x-devdash-capability": "operate",
    "x-devdash-project": true,
    "x-devdash-invalidates": [
     "tasks",
     "pulls"
    ],
    "x-devdash-reads": [
     "tasks",
     "runs"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "id": {
          "type": "string"
         }
        },
        "required": [
         "id",
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "type": "boolean"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/task.start": {
   "post": {
    "operationId": "task.start",
    "summary": "task.start",
    "description": "Needs **operate** access. About one project: `project` is its slug or id.\n\nChanges: `tasks`, `runs`, `inbox`, `terminals`. Refetch on `dataChanged` naming: `tasks`, `runs`.",
    "tags": [
     "Task"
    ],
    "x-devdash-capability": "operate",
    "x-devdash-project": true,
    "x-devdash-invalidates": [
     "tasks",
     "runs",
     "inbox",
     "terminals"
    ],
    "x-devdash-reads": [
     "tasks",
     "runs"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "workspace": {
          "type": "string",
          "description": "The repository to cut the worktree in."
         },
         "key": {
          "type": "string",
          "description": "The tracker key, e.g. `ENGR-9212`."
         },
         "title": {
          "type": "string"
         },
         "workflow": {
          "type": "string",
          "description": "The AI workflow profile to run."
         }
        },
        "required": [
         "key",
         "project",
         "title",
         "workflow",
         "workspace"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Started"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/task.status": {
   "post": {
    "operationId": "task.status",
    "summary": "task.status",
    "description": "Needs **act** access. About one project: `project` is its slug or id.\n\nChanges: `tasks`. Refetch on `dataChanged` naming: `tasks`, `runs`.",
    "tags": [
     "Task"
    ],
    "x-devdash-capability": "act",
    "x-devdash-project": true,
    "x-devdash-invalidates": [
     "tasks"
    ],
    "x-devdash-reads": [
     "tasks",
     "runs"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "id": {
          "type": "string"
         },
         "status": {
          "type": "string",
          "description": "`backlog`, `todo`, `in_progress`, `in_review`, `done` or `cancelled`."
         }
        },
        "required": [
         "id",
         "project",
         "status"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "type": "boolean"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/task.tests": {
   "post": {
    "operationId": "task.tests",
    "summary": "task.tests",
    "description": "Needs **read** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `tests`, `tasks`.",
    "tags": [
     "Task"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "tests",
     "tasks"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "task": {
          "type": "string",
          "description": "The task id, or its provider key (`ENGR-1234`)."
         }
        },
        "required": [
         "project",
         "task"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/TaskTests"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/task.update": {
   "post": {
    "operationId": "task.update",
    "summary": "task.update",
    "description": "Needs **act** access. About one project: `project` is its slug or id.\n\nChanges: `tasks`. Refetch on `dataChanged` naming: `tasks`, `runs`.",
    "tags": [
     "Task"
    ],
    "x-devdash-capability": "act",
    "x-devdash-project": true,
    "x-devdash-invalidates": [
     "tasks"
    ],
    "x-devdash-reads": [
     "tasks",
     "runs"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "id": {
          "type": "string"
         },
         "patch": {
          "$ref": "#/components/schemas/Record_string_unknown",
          "description": "The fields to change: `title`, `kind` (`task` or `epic`), `notes`, `priority` (Highest…Lowest), `assignee` (`{ kind: \"me\" | \"person\" | \"agent\", value }`), `labels` (a list), `startDate` and `dueDate` (`YYYY-MM-DD`), `estimateHours`, `parentId`. A field left out is kept; `null` clears it."
         }
        },
        "required": [
         "id",
         "patch",
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/JsonValue"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/task.work": {
   "post": {
    "operationId": "task.work",
    "summary": "task.work",
    "description": "Needs **operate** access. About one project: `project` is its slug or id.\n\nChanges: `tasks`, `runs`, `inbox`, `terminals`. Refetch on `dataChanged` naming: `tasks`, `runs`.",
    "tags": [
     "Task"
    ],
    "x-devdash-capability": "operate",
    "x-devdash-project": true,
    "x-devdash-invalidates": [
     "tasks",
     "runs",
     "inbox",
     "terminals"
    ],
    "x-devdash-reads": [
     "tasks",
     "runs"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "id": {
          "type": "string"
         },
         "workflow": {
          "type": "string",
          "description": "The workflow profile to run; absent when the repository offers only one."
         }
        },
        "required": [
         "id",
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Started"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/tasks": {
   "post": {
    "operationId": "tasks",
    "summary": "tasks",
    "description": "Needs **read** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `tasks`, `runs`.",
    "tags": [
     "Task"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "tasks",
     "runs"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "properties": {
         "project": {
          "type": "string"
         }
        },
        "required": [
         "project"
        ],
        "additionalProperties": false
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/JsonValue"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/template.import": {
   "post": {
    "operationId": "template.import",
    "summary": "template.import",
    "description": "Needs **admin** access. About the installation, not one project.\n\nChanges: `projects`, `integrations`, `settings`, `automations`, `repositories`. Refetch on `dataChanged` naming: `projects`.",
    "tags": [
     "Template"
    ],
    "x-devdash-capability": "admin",
    "x-devdash-project": false,
    "x-devdash-invalidates": [
     "projects",
     "integrations",
     "settings",
     "automations",
     "repositories"
    ],
    "x-devdash-reads": [
     "projects"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/TemplateImport"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/TemplateImported"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/template.link": {
   "post": {
    "operationId": "template.link",
    "summary": "template.link",
    "description": "Needs **admin** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `projects`.",
    "tags": [
     "Template"
    ],
    "x-devdash-capability": "admin",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "projects"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "properties": {
         "project": {
          "type": "string"
         }
        },
        "required": [
         "project"
        ],
        "additionalProperties": false
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/TemplateLink"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/template.preview": {
   "post": {
    "operationId": "template.preview",
    "summary": "template.preview",
    "description": "Needs **read** access. About the installation, not one project.\n\nChanges: nothing. Refetch on `dataChanged` naming: `projects`.",
    "tags": [
     "Template"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": false,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "projects"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/TemplateOpen"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/TemplatePreview"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/template.repositories.apply": {
   "post": {
    "operationId": "template.repositories.apply",
    "summary": "template.repositories.apply",
    "description": "Needs **admin** access. About one project: `project` is its slug or id.\n\nChanges: `repositories`, `automations`, `settings`, `tasks`, `projects`. Refetch on `dataChanged` naming: `repositories`, `projects`.",
    "tags": [
     "Template"
    ],
    "x-devdash-capability": "admin",
    "x-devdash-project": true,
    "x-devdash-invalidates": [
     "repositories",
     "automations",
     "settings",
     "tasks",
     "projects"
    ],
    "x-devdash-reads": [
     "repositories",
     "projects"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "mappings": {
          "type": "array",
          "items": {
           "$ref": "#/components/schemas/RepositoryMapping"
          }
         }
        },
        "required": [
         "mappings",
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/MappingReport"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/template.repositories.match": {
   "post": {
    "operationId": "template.repositories.match",
    "summary": "template.repositories.match",
    "description": "Needs **admin** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `repositories`, `projects`.",
    "tags": [
     "Template"
    ],
    "x-devdash-capability": "admin",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "repositories",
     "projects"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "properties": {
         "project": {
          "type": "string"
         }
        },
        "required": [
         "project"
        ],
        "additionalProperties": false
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "type": "array",
         "items": {
          "$ref": "#/components/schemas/RepositoryProposal"
         }
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/terminal.close": {
   "post": {
    "operationId": "terminal.close",
    "summary": "terminal.close",
    "description": "Needs **operate** access. About one project: `project` is its slug or id.\n\nChanges: `terminals`. Refetch on `dataChanged` naming: `terminals`.",
    "tags": [
     "Terminal"
    ],
    "x-devdash-capability": "operate",
    "x-devdash-project": true,
    "x-devdash-invalidates": [
     "terminals"
    ],
    "x-devdash-reads": [
     "terminals"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "id": {
          "type": "string"
         }
        },
        "required": [
         "id",
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "type": "boolean"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/terminal.group-create": {
   "post": {
    "operationId": "terminal.group-create",
    "summary": "terminal.group-create",
    "description": "Needs **operate** access. About one project: `project` is its slug or id.\n\nChanges: `terminals`. Refetch on `dataChanged` naming: `terminals`.",
    "tags": [
     "Terminal"
    ],
    "x-devdash-capability": "operate",
    "x-devdash-project": true,
    "x-devdash-invalidates": [
     "terminals"
    ],
    "x-devdash-reads": [
     "terminals"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "workspace": {
          "type": "string",
          "description": "The repository the group's terminals open in."
         },
         "name": {
          "type": "string"
         }
        },
        "required": [
         "name",
         "project",
         "workspace"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/CreatedGroup"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/terminal.group-remove": {
   "post": {
    "operationId": "terminal.group-remove",
    "summary": "terminal.group-remove",
    "description": "Needs **operate** access. About one project: `project` is its slug or id.\n\nChanges: `terminals`. Refetch on `dataChanged` naming: `terminals`.",
    "tags": [
     "Terminal"
    ],
    "x-devdash-capability": "operate",
    "x-devdash-project": true,
    "x-devdash-invalidates": [
     "terminals"
    ],
    "x-devdash-reads": [
     "terminals"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "id": {
          "type": "string"
         }
        },
        "required": [
         "id",
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "type": "boolean"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/terminal.group-rename": {
   "post": {
    "operationId": "terminal.group-rename",
    "summary": "terminal.group-rename",
    "description": "Needs **act** access. About one project: `project` is its slug or id.\n\nChanges: `terminals`. Refetch on `dataChanged` naming: `terminals`.",
    "tags": [
     "Terminal"
    ],
    "x-devdash-capability": "act",
    "x-devdash-project": true,
    "x-devdash-invalidates": [
     "terminals"
    ],
    "x-devdash-reads": [
     "terminals"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "id": {
          "type": "string"
         },
         "name": {
          "type": "string"
         }
        },
        "required": [
         "id",
         "name",
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "type": "boolean"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/terminal.group-restore": {
   "post": {
    "operationId": "terminal.group-restore",
    "summary": "terminal.group-restore",
    "description": "Needs **operate** access. About one project: `project` is its slug or id.\n\nChanges: `terminals`. Refetch on `dataChanged` naming: `terminals`.",
    "tags": [
     "Terminal"
    ],
    "x-devdash-capability": "operate",
    "x-devdash-project": true,
    "x-devdash-invalidates": [
     "terminals"
    ],
    "x-devdash-reads": [
     "terminals"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "id": {
          "type": "string"
         }
        },
        "required": [
         "id",
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/TerminalsRestored"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/terminal.group-sessions": {
   "post": {
    "operationId": "terminal.group-sessions",
    "summary": "terminal.group-sessions",
    "description": "Needs **read** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `terminals`.",
    "tags": [
     "Terminal"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "terminals"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "id": {
          "type": "string"
         }
        },
        "required": [
         "id",
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "type": "array",
         "items": {
          "$ref": "#/components/schemas/TerminalSession"
         }
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/terminal.group-start": {
   "post": {
    "operationId": "terminal.group-start",
    "summary": "terminal.group-start",
    "description": "Needs **operate** access. About one project: `project` is its slug or id.\n\nChanges: `terminals`. Refetch on `dataChanged` naming: `terminals`.",
    "tags": [
     "Terminal"
    ],
    "x-devdash-capability": "operate",
    "x-devdash-project": true,
    "x-devdash-invalidates": [
     "terminals"
    ],
    "x-devdash-reads": [
     "terminals"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "id": {
          "type": "string",
          "description": "The group."
         },
         "profile": {
          "type": "string"
         }
        },
        "required": [
         "id",
         "profile",
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/TerminalSession"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/terminal.groups": {
   "post": {
    "operationId": "terminal.groups",
    "summary": "terminal.groups",
    "description": "Needs **read** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `terminals`.",
    "tags": [
     "Terminal"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "terminals"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "properties": {
         "project": {
          "type": "string"
         }
        },
        "required": [
         "project"
        ],
        "additionalProperties": false
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "type": "array",
         "items": {
          "$ref": "#/components/schemas/TerminalGroup"
         }
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/terminal.layout.save": {
   "post": {
    "operationId": "terminal.layout.save",
    "summary": "terminal.layout.save",
    "description": "Needs **act** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `terminals`.",
    "tags": [
     "Terminal"
    ],
    "x-devdash-capability": "act",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "terminals"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "id": {
          "type": "string",
          "description": "The group."
         },
         "layout": {
          "type": [
           "string",
           "null"
          ],
          "description": "The pane tree as the site writes it, or `null` for a group nobody has split."
         }
        },
        "required": [
         "id",
         "layout",
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "type": "boolean"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/terminal.start": {
   "post": {
    "operationId": "terminal.start",
    "summary": "terminal.start",
    "description": "Needs **operate** access. About one project: `project` is its slug or id.\n\nChanges: `terminals`. Refetch on `dataChanged` naming: `terminals`.",
    "tags": [
     "Terminal"
    ],
    "x-devdash-capability": "operate",
    "x-devdash-project": true,
    "x-devdash-invalidates": [
     "terminals"
    ],
    "x-devdash-reads": [
     "terminals"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "id": {
          "type": "string",
          "description": "The task."
         },
         "profile": {
          "type": "string",
          "description": "The launch profile: a shell, Claude Code, Codex…"
         }
        },
        "required": [
         "id",
         "profile",
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/TerminalSession"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/terminal.suggest": {
   "post": {
    "operationId": "terminal.suggest",
    "summary": "terminal.suggest",
    "description": "Needs **operate** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `terminals`.",
    "tags": [
     "Terminal"
    ],
    "x-devdash-capability": "operate",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "terminals"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "session": {
          "type": [
           "string",
           "null"
          ],
          "description": "The terminal the command is for: its directory and shell go into the prompt."
         },
         "request": {
          "type": "string"
         }
        },
        "required": [
         "project",
         "request",
         "session"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/TerminalSuggestion"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/terminals": {
   "post": {
    "operationId": "terminals",
    "summary": "terminals",
    "description": "Needs **read** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `terminals`.",
    "tags": [
     "Terminal"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "terminals"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "id": {
          "type": "string"
         }
        },
        "required": [
         "id",
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "type": "array",
         "items": {
          "$ref": "#/components/schemas/TerminalSession"
         }
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/tests.attachment": {
   "post": {
    "operationId": "tests.attachment",
    "summary": "tests.attachment",
    "description": "Needs **read** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `tests`.",
    "tags": [
     "Tests"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "tests"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "run": {
          "type": "string"
         },
         "path": {
          "type": "string"
         }
        },
        "required": [
         "path",
         "project",
         "run"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/TestAttachment"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/tests.check": {
   "post": {
    "operationId": "tests.check",
    "summary": "tests.check",
    "description": "Needs **read** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `tests`.",
    "tags": [
     "Tests"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "tests"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "id": {
          "type": "string"
         }
        },
        "required": [
         "id",
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/MonitorDetail"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/tests.check.dryrun": {
   "post": {
    "operationId": "tests.check.dryrun",
    "summary": "tests.check.dryrun",
    "description": "Needs **act** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `tests`.",
    "tags": [
     "Tests"
    ],
    "x-devdash-capability": "act",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "tests"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "id": {
          "type": "string"
         },
         "name": {
          "type": "string"
         },
         "kind": {
          "type": "string",
          "description": "ping | tcp | http | dns | spec"
         },
         "target": {
          "type": "string"
         },
         "config": {
          "$ref": "#/components/schemas/JsonValue",
          "description": "http: `{ method, headers, body, expectStatus, keyword, keywordAbsent, jsonPath, jsonValue, maxLatencyMs, followRedirects, certWarnDays }`; dns: `{ type, expected, server }`."
         },
         "env": {
          "type": "string"
         },
         "intervalSecs": {
          "type": "number"
         },
         "timeoutSecs": {
          "type": "number"
         },
         "retries": {
          "type": "number"
         },
         "downAfter": {
          "type": "number"
         },
         "upAfter": {
          "type": "number"
         },
         "runner": {
          "type": "string",
          "description": "`local` (the cloud runner is not available yet)."
         },
         "tags": {
          "type": "array",
          "items": {
           "type": "string"
          }
         },
         "enabled": {
          "type": "boolean"
         }
        },
        "required": [
         "config",
         "downAfter",
         "enabled",
         "intervalSecs",
         "kind",
         "name",
         "project",
         "retries",
         "runner",
         "tags",
         "target",
         "timeoutSecs",
         "upAfter"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/DryRunResult"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/tests.check.pause": {
   "post": {
    "operationId": "tests.check.pause",
    "summary": "tests.check.pause",
    "description": "Needs **act** access. About one project: `project` is its slug or id.\n\nChanges: `tests`. Refetch on `dataChanged` naming: `tests`.",
    "tags": [
     "Tests"
    ],
    "x-devdash-capability": "act",
    "x-devdash-project": true,
    "x-devdash-invalidates": [
     "tests"
    ],
    "x-devdash-reads": [
     "tests"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "id": {
          "type": "string"
         },
         "paused": {
          "type": "boolean"
         }
        },
        "required": [
         "id",
         "paused",
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "type": "boolean"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/tests.check.remove": {
   "post": {
    "operationId": "tests.check.remove",
    "summary": "tests.check.remove",
    "description": "Needs **act** access. About one project: `project` is its slug or id.\n\nChanges: `tests`. Refetch on `dataChanged` naming: `tests`.",
    "tags": [
     "Tests"
    ],
    "x-devdash-capability": "act",
    "x-devdash-project": true,
    "x-devdash-invalidates": [
     "tests"
    ],
    "x-devdash-reads": [
     "tests"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "id": {
          "type": "string"
         }
        },
        "required": [
         "id",
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "type": "boolean"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/tests.check.run": {
   "post": {
    "operationId": "tests.check.run",
    "summary": "tests.check.run",
    "description": "Needs **act** access. About one project: `project` is its slug or id.\n\nChanges: `tests`. Refetch on `dataChanged` naming: `tests`.",
    "tags": [
     "Tests"
    ],
    "x-devdash-capability": "act",
    "x-devdash-project": true,
    "x-devdash-invalidates": [
     "tests"
    ],
    "x-devdash-reads": [
     "tests"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "id": {
          "type": "string"
         }
        },
        "required": [
         "id",
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/TestRunRow"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/tests.check.save": {
   "post": {
    "operationId": "tests.check.save",
    "summary": "tests.check.save",
    "description": "Needs **act** access. About one project: `project` is its slug or id.\n\nChanges: `tests`. Refetch on `dataChanged` naming: `tests`.",
    "tags": [
     "Tests"
    ],
    "x-devdash-capability": "act",
    "x-devdash-project": true,
    "x-devdash-invalidates": [
     "tests"
    ],
    "x-devdash-reads": [
     "tests"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "id": {
          "type": "string"
         },
         "name": {
          "type": "string"
         },
         "kind": {
          "type": "string",
          "description": "ping | tcp | http | dns | spec"
         },
         "target": {
          "type": "string"
         },
         "config": {
          "$ref": "#/components/schemas/JsonValue",
          "description": "http: `{ method, headers, body, expectStatus, keyword, keywordAbsent, jsonPath, jsonValue, maxLatencyMs, followRedirects, certWarnDays }`; dns: `{ type, expected, server }`."
         },
         "env": {
          "type": "string"
         },
         "intervalSecs": {
          "type": "number"
         },
         "timeoutSecs": {
          "type": "number"
         },
         "retries": {
          "type": "number"
         },
         "downAfter": {
          "type": "number"
         },
         "upAfter": {
          "type": "number"
         },
         "runner": {
          "type": "string",
          "description": "`local` (the cloud runner is not available yet)."
         },
         "tags": {
          "type": "array",
          "items": {
           "type": "string"
          }
         },
         "enabled": {
          "type": "boolean"
         }
        },
        "required": [
         "config",
         "downAfter",
         "enabled",
         "intervalSecs",
         "kind",
         "name",
         "project",
         "retries",
         "runner",
         "tags",
         "target",
         "timeoutSecs",
         "upAfter"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/MonitorRow"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/tests.codegen": {
   "post": {
    "operationId": "tests.codegen",
    "summary": "tests.codegen",
    "description": "Needs **operate** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `tests`.",
    "tags": [
     "Tests"
    ],
    "x-devdash-capability": "operate",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "tests"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "env": {
          "type": "string"
         },
         "file": {
          "type": "string",
          "description": "The new spec's file name in the DevDash tests folder."
         }
        },
        "required": [
         "env",
         "file",
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/SpecSource"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/tests.envs": {
   "post": {
    "operationId": "tests.envs",
    "summary": "tests.envs",
    "description": "Needs **read** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `tests`.",
    "tags": [
     "Tests"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "tests"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "properties": {
         "project": {
          "type": "string"
         }
        },
        "required": [
         "project"
        ],
        "additionalProperties": false
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "type": "array",
         "items": {
          "$ref": "#/components/schemas/TestEnvRow"
         }
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/tests.envs.remove": {
   "post": {
    "operationId": "tests.envs.remove",
    "summary": "tests.envs.remove",
    "description": "Needs **admin** access. About one project: `project` is its slug or id.\n\nChanges: `tests`. Refetch on `dataChanged` naming: `tests`.",
    "tags": [
     "Tests"
    ],
    "x-devdash-capability": "admin",
    "x-devdash-project": true,
    "x-devdash-invalidates": [
     "tests"
    ],
    "x-devdash-reads": [
     "tests"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "id": {
          "type": "string"
         }
        },
        "required": [
         "id",
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "type": "boolean"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/tests.envs.save": {
   "post": {
    "operationId": "tests.envs.save",
    "summary": "tests.envs.save",
    "description": "Needs **admin** access. About one project: `project` is its slug or id.\n\nChanges: `tests`. Refetch on `dataChanged` naming: `tests`.",
    "tags": [
     "Tests"
    ],
    "x-devdash-capability": "admin",
    "x-devdash-project": true,
    "x-devdash-invalidates": [
     "tests"
    ],
    "x-devdash-reads": [
     "tests"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "name": {
          "type": "string"
         },
         "label": {
          "type": "string"
         },
         "baseUrl": {
          "type": "string"
         },
         "authKind": {
          "type": "string"
         },
         "authConfig": {
          "$ref": "#/components/schemas/JsonValue"
         },
         "secrets": {
          "type": "array",
          "items": {
           "type": "string"
          }
         },
         "values": {
          "type": "object",
          "additionalProperties": {
           "type": "string"
          },
          "description": "New secret values by name; stored in the keychain, never returned."
         }
        },
        "required": [
         "authConfig",
         "authKind",
         "baseUrl",
         "label",
         "name",
         "project",
         "secrets",
         "values"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "type": "boolean"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/tests.incident": {
   "post": {
    "operationId": "tests.incident",
    "summary": "tests.incident",
    "description": "Needs **read** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `tests`.",
    "tags": [
     "Tests"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "tests"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "id": {
          "type": "string"
         }
        },
        "required": [
         "id",
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/IncidentDetail"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/tests.incidents": {
   "post": {
    "operationId": "tests.incidents",
    "summary": "tests.incidents",
    "description": "Needs **read** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `tests`.",
    "tags": [
     "Tests"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "tests"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "check": {
          "type": "string"
         }
        },
        "required": [
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "type": "array",
         "items": {
          "$ref": "#/components/schemas/IncidentRow"
         }
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/tests.list": {
   "post": {
    "operationId": "tests.list",
    "summary": "tests.list",
    "description": "Needs **read** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `tests`.",
    "tags": [
     "Tests"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "tests"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "refresh": {
          "type": "boolean",
          "description": "List again even if no spec file changed."
         }
        },
        "required": [
         "project",
         "refresh"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/TestsList"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/tests.monitors": {
   "post": {
    "operationId": "tests.monitors",
    "summary": "tests.monitors",
    "description": "Needs **read** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `tests`.",
    "tags": [
     "Tests"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "tests"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "properties": {
         "project": {
          "type": "string"
         }
        },
        "required": [
         "project"
        ],
        "additionalProperties": false
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "type": "array",
         "items": {
          "$ref": "#/components/schemas/MonitorRow"
         }
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/tests.run": {
   "post": {
    "operationId": "tests.run",
    "summary": "tests.run",
    "description": "Needs **operate** access. About one project: `project` is its slug or id.\n\nChanges: `tests`. Refetch on `dataChanged` naming: `tests`.",
    "tags": [
     "Tests"
    ],
    "x-devdash-capability": "operate",
    "x-devdash-project": true,
    "x-devdash-invalidates": [
     "tests"
    ],
    "x-devdash-reads": [
     "tests"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "files": {
          "type": "array",
          "items": {
           "type": "string"
          },
          "description": "Spec files relative to the root."
         },
         "grep": {
          "type": "string",
          "description": "A title filter: `@task:ENGR-1`, `@smoke`, part of a title."
         },
         "env": {
          "type": "string"
         },
         "root": {
          "type": "string",
          "description": "`managed` or a repository id; default `managed`."
         },
         "task": {
          "type": "string"
         }
        },
        "required": [
         "env",
         "files",
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/TestRunRow"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/tests.run.detail": {
   "post": {
    "operationId": "tests.run.detail",
    "summary": "tests.run.detail",
    "description": "Needs **read** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `tests`.",
    "tags": [
     "Tests"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "tests"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "id": {
          "type": "string"
         }
        },
        "required": [
         "id",
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/TestRunDetail"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/tests.runners": {
   "post": {
    "operationId": "tests.runners",
    "summary": "tests.runners",
    "description": "Needs **read** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `tests`.",
    "tags": [
     "Tests"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "tests"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "properties": {
         "project": {
          "type": "string"
         }
        },
        "required": [
         "project"
        ],
        "additionalProperties": false
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "type": "array",
         "items": {
          "$ref": "#/components/schemas/TestRunner"
         }
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/tests.runs": {
   "post": {
    "operationId": "tests.runs",
    "summary": "tests.runs",
    "description": "Needs **read** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `tests`.",
    "tags": [
     "Tests"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "tests"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "page": {
          "type": "number"
         },
         "size": {
          "type": "number"
         },
         "kind": {
          "type": "string",
          "description": "`playwright`, `check` or `setup`."
         },
         "status": {
          "type": "string"
         },
         "env": {
          "type": "string"
         },
         "task": {
          "type": "string"
         },
         "check": {
          "type": "string"
         }
        },
        "required": [
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/TestRunsPage"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/tests.runs.import": {
   "post": {
    "operationId": "tests.runs.import",
    "summary": "tests.runs.import",
    "description": "Needs **act** access. About one project: `project` is its slug or id.\n\nChanges: `tests`. Refetch on `dataChanged` naming: `tests`.",
    "tags": [
     "Tests"
    ],
    "x-devdash-capability": "act",
    "x-devdash-project": true,
    "x-devdash-invalidates": [
     "tests"
    ],
    "x-devdash-reads": [
     "tests"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "env": {
          "type": "string"
         },
         "report": {
          "$ref": "#/components/schemas/JsonValue",
          "description": "Playwright's JSON report, as produced by `--reporter=json`."
         },
         "task": {
          "type": "string"
         }
        },
        "required": [
         "env",
         "project",
         "report"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/TestRunRow"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/tests.setup": {
   "post": {
    "operationId": "tests.setup",
    "summary": "tests.setup",
    "description": "Needs **admin** access. About one project: `project` is its slug or id.\n\nChanges: `tests`. Refetch on `dataChanged` naming: `tests`.",
    "tags": [
     "Tests"
    ],
    "x-devdash-capability": "admin",
    "x-devdash-project": true,
    "x-devdash-invalidates": [
     "tests"
    ],
    "x-devdash-reads": [
     "tests"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "properties": {
         "project": {
          "type": "string"
         }
        },
        "required": [
         "project"
        ],
        "additionalProperties": false
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/TestRunRow"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/tests.setup.status": {
   "post": {
    "operationId": "tests.setup.status",
    "summary": "tests.setup.status",
    "description": "Needs **read** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `tests`.",
    "tags": [
     "Tests"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "tests"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "properties": {
         "project": {
          "type": "string"
         }
        },
        "required": [
         "project"
        ],
        "additionalProperties": false
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/TestsSetup"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/tests.spec.create": {
   "post": {
    "operationId": "tests.spec.create",
    "summary": "tests.spec.create",
    "description": "Needs **operate** access. About one project: `project` is its slug or id.\n\nChanges: `tests`. Refetch on `dataChanged` naming: `tests`.",
    "tags": [
     "Tests"
    ],
    "x-devdash-capability": "operate",
    "x-devdash-project": true,
    "x-devdash-invalidates": [
     "tests"
    ],
    "x-devdash-reads": [
     "tests"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "root": {
          "type": "string"
         },
         "template": {
          "type": "string"
         },
         "title": {
          "type": "string"
         },
         "task": {
          "type": "string"
         },
         "file": {
          "type": "string",
          "description": "Defaults to a name from the title."
         }
        },
        "required": [
         "project",
         "root",
         "template",
         "title"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/SpecSource"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/tests.spec.read": {
   "post": {
    "operationId": "tests.spec.read",
    "summary": "tests.spec.read",
    "description": "Needs **read** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `tests`.",
    "tags": [
     "Tests"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "tests"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "root": {
          "type": "string"
         },
         "file": {
          "type": "string"
         }
        },
        "required": [
         "file",
         "project",
         "root"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/SpecSource"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/tests.spec.save": {
   "post": {
    "operationId": "tests.spec.save",
    "summary": "tests.spec.save",
    "description": "Needs **operate** access. About one project: `project` is its slug or id.\n\nChanges: `tests`. Refetch on `dataChanged` naming: `tests`.",
    "tags": [
     "Tests"
    ],
    "x-devdash-capability": "operate",
    "x-devdash-project": true,
    "x-devdash-invalidates": [
     "tests"
    ],
    "x-devdash-reads": [
     "tests"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "root": {
          "type": "string"
         },
         "file": {
          "type": "string"
         },
         "source": {
          "type": "string"
         }
        },
        "required": [
         "file",
         "project",
         "root",
         "source"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "type": "boolean"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/tests.templates": {
   "post": {
    "operationId": "tests.templates",
    "summary": "tests.templates",
    "description": "Needs **read** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `tests`.",
    "tags": [
     "Tests"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "tests"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "properties": {
         "project": {
          "type": "string"
         }
        },
        "required": [
         "project"
        ],
        "additionalProperties": false
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "type": "array",
         "items": {
          "$ref": "#/components/schemas/TestTemplate"
         }
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/tests.trace.open": {
   "post": {
    "operationId": "tests.trace.open",
    "summary": "tests.trace.open",
    "description": "Needs **operate** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `tests`.",
    "tags": [
     "Tests"
    ],
    "x-devdash-capability": "operate",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "tests"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "run": {
          "type": "string"
         },
         "path": {
          "type": "string"
         }
        },
        "required": [
         "path",
         "project",
         "run"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "type": "boolean"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/timeline.digest": {
   "post": {
    "operationId": "timeline.digest",
    "summary": "timeline.digest",
    "description": "Needs **read** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `integrations`, `releases`, `live`, `logs`, `runs`, `repositories`, `sentry`, `monitors`, `tests`.",
    "tags": [
     "Timeline"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "integrations",
     "releases",
     "live",
     "logs",
     "runs",
     "repositories",
     "sentry",
     "monitors",
     "tests"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "range": {
          "type": "string",
          "description": "A window ending now (`1h`, `24h`, `7d`, any `<n>m|h|d`); ignored when `from` is given."
         },
         "from": {
          "type": "number",
          "description": "Milliseconds since the epoch."
         },
         "to": {
          "type": "number"
         },
         "lanes": {
          "type": "array",
          "items": {
           "type": "string"
          },
          "description": "Lane ids, as `screen.timeline` takes them; absent reads every offered lane."
         },
         "filters": {
          "$ref": "#/components/schemas/TimelineFilters"
         },
         "regenerate": {
          "type": "boolean",
          "description": "`timeline.explain` only: ask again although an answer is kept."
         },
         "incident": {
          "type": "string",
          "description": "An incident to centre on (an id `incident` answers): the digest is anchored on it and lists its top-ranked related items."
         }
        },
        "required": [
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/TimelineExplainState"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/timeline.explain": {
   "post": {
    "operationId": "timeline.explain",
    "summary": "timeline.explain",
    "description": "Needs **act** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `integrations`, `releases`, `live`, `logs`, `runs`, `repositories`, `sentry`, `monitors`, `tests`.",
    "tags": [
     "Timeline"
    ],
    "x-devdash-capability": "act",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "integrations",
     "releases",
     "live",
     "logs",
     "runs",
     "repositories",
     "sentry",
     "monitors",
     "tests"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "range": {
          "type": "string",
          "description": "A window ending now (`1h`, `24h`, `7d`, any `<n>m|h|d`); ignored when `from` is given."
         },
         "from": {
          "type": "number",
          "description": "Milliseconds since the epoch."
         },
         "to": {
          "type": "number"
         },
         "lanes": {
          "type": "array",
          "items": {
           "type": "string"
          },
          "description": "Lane ids, as `screen.timeline` takes them; absent reads every offered lane."
         },
         "filters": {
          "$ref": "#/components/schemas/TimelineFilters"
         },
         "regenerate": {
          "type": "boolean",
          "description": "`timeline.explain` only: ask again although an answer is kept."
         },
         "incident": {
          "type": "string",
          "description": "An incident to centre on (an id `incident` answers): the digest is anchored on it and lists its top-ranked related items."
         }
        },
        "required": [
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/TimelineExplainState"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/webhook.create": {
   "post": {
    "operationId": "webhook.create",
    "summary": "webhook.create",
    "description": "Needs **admin** access. About one project: `project` is its slug or id.\n\nChanges: `automations`. Refetch on `dataChanged` naming: nothing.",
    "tags": [
     "Webhook"
    ],
    "x-devdash-capability": "admin",
    "x-devdash-project": true,
    "x-devdash-invalidates": [
     "automations"
    ],
    "x-devdash-reads": [],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "name": {
          "type": "string",
          "description": "Letters, digits, `-` and `_`."
         }
        },
        "required": [
         "name",
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/WebhookCreated"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/webhook.delete": {
   "post": {
    "operationId": "webhook.delete",
    "summary": "webhook.delete",
    "description": "Needs **admin** access. About one project: `project` is its slug or id.\n\nChanges: `automations`. Refetch on `dataChanged` naming: nothing.",
    "tags": [
     "Webhook"
    ],
    "x-devdash-capability": "admin",
    "x-devdash-project": true,
    "x-devdash-invalidates": [
     "automations"
    ],
    "x-devdash-reads": [],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "name": {
          "type": "string",
          "description": "Letters, digits, `-` and `_`."
         }
        },
        "required": [
         "name",
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "type": "boolean"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/webhook.rotate": {
   "post": {
    "operationId": "webhook.rotate",
    "summary": "webhook.rotate",
    "description": "Needs **admin** access. About one project: `project` is its slug or id.\n\nChanges: `automations`. Refetch on `dataChanged` naming: nothing.",
    "tags": [
     "Webhook"
    ],
    "x-devdash-capability": "admin",
    "x-devdash-project": true,
    "x-devdash-invalidates": [
     "automations"
    ],
    "x-devdash-reads": [],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "name": {
          "type": "string",
          "description": "Letters, digits, `-` and `_`."
         }
        },
        "required": [
         "name",
         "project"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/WebhookCreated"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/webhooks": {
   "post": {
    "operationId": "webhooks",
    "summary": "webhooks",
    "description": "Needs **read** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `automations`.",
    "tags": [
     "Webhooks"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "automations"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "properties": {
         "project": {
          "type": "string"
         }
        },
        "required": [
         "project"
        ],
        "additionalProperties": false
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Webhooks"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/work.selection": {
   "post": {
    "operationId": "work.selection",
    "summary": "work.selection",
    "description": "Needs **read** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `tasks`, `pulls`.",
    "tags": [
     "Work"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "tasks",
     "pulls"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "section": {
          "$ref": "#/components/schemas/Section"
         }
        },
        "required": [
         "project",
         "section"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Selection"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/work.selection.save": {
   "post": {
    "operationId": "work.selection.save",
    "summary": "work.selection.save",
    "description": "Needs **act** access. About one project: `project` is its slug or id.\n\nChanges: `tasks`, `pulls`. Refetch on `dataChanged` naming: `tasks`, `pulls`.",
    "tags": [
     "Work"
    ],
    "x-devdash-capability": "act",
    "x-devdash-project": true,
    "x-devdash-invalidates": [
     "tasks",
     "pulls"
    ],
    "x-devdash-reads": [
     "tasks",
     "pulls"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
         "project": {
          "type": "string"
         },
         "section": {
          "$ref": "#/components/schemas/Section"
         },
         "selection": {
          "$ref": "#/components/schemas/Record_string_string"
         }
        },
        "required": [
         "project",
         "section",
         "selection"
        ]
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "type": "boolean"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/call/work.statuses": {
   "post": {
    "operationId": "work.statuses",
    "summary": "work.statuses",
    "description": "Needs **read** access. About one project: `project` is its slug or id.\n\nChanges: nothing. Refetch on `dataChanged` naming: `integrations`.",
    "tags": [
     "Work"
    ],
    "x-devdash-capability": "read",
    "x-devdash-project": true,
    "x-devdash-invalidates": [],
    "x-devdash-reads": [
     "integrations"
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "properties": {
         "project": {
          "type": "string"
         }
        },
        "required": [
         "project"
        ],
        "additionalProperties": false
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "The result.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/WorkStatuses"
        }
       }
      }
     },
     "400": {
      "description": "The operation failed or its arguments are invalid.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No valid session or pairing key.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The session may not do this (capability), or the origin or host is not allowed.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "Too many requests at once; retry shortly.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  }
 },
 "components": {
  "securitySchemes": {
   "session": {
    "type": "http",
    "scheme": "bearer",
    "description": "A browser session token from `/pair`, sent from the origin that paired it. Lasts 8 hours."
   },
   "pairingKey": {
    "type": "http",
    "scheme": "bearer",
    "description": "The pairing key (`devdash pair`), from a process on this Mac: accepted only on requests without an `Origin` header. `devdash call` sends it."
   }
  },
  "schemas": {
   "Error": {
    "type": "object",
    "properties": {
     "error": {
      "type": "string"
     }
    },
    "required": [
     "error"
    ]
   },
   "Health": {
    "type": "object",
    "properties": {
     "service": {
      "const": "devdash"
     },
     "version": {
      "type": "string"
     },
     "apiVersion": {
      "type": "number"
     },
     "paired": {
      "type": "boolean"
     },
     "setup": {
      "type": "object",
      "properties": {
       "projects": {
        "type": "number"
       },
       "hasLegacyData": {
        "type": "boolean"
       }
      }
     }
    },
    "required": [
     "service",
     "apiVersion",
     "paired"
    ]
   },
   "Paired": {
    "type": "object",
    "properties": {
     "token": {
      "type": "string"
     },
     "expiresIn": {
      "type": "number"
     },
     "version": {
      "type": "number"
     }
    },
    "required": [
     "token",
     "expiresIn",
     "version"
    ]
   },
   "Advice": {
    "type": "object",
    "properties": {
     "text": {
      "type": "string"
     },
     "action": {
      "type": "string",
      "description": "`ignore-route`, `open-finding`, `open-cloudflare`, `open-sentry`, `open-pods`, `open-monitor`, `open-tool`, `open-checks`, `open-logs` or `tune`."
     },
     "label": {
      "type": "string",
      "description": "The action's button text."
     },
     "arg": {
      "type": "string",
      "description": "What the action works on: the route to ignore, the finding or the issue id."
     }
    },
    "required": [
     "text"
    ],
    "additionalProperties": false
   },
   "AgentOutcomes": {
    "type": "object",
    "properties": {
     "days": {
      "type": "number"
     },
     "runs": {
      "$ref": "#/components/schemas/RunOutcomes"
     },
     "pulls": {
      "$ref": "#/components/schemas/PullOutcomes"
     },
     "cost": {
      "$ref": "#/components/schemas/CostOutcomes"
     },
     "reviews": {
      "$ref": "#/components/schemas/ReviewOutcomes"
     },
     "plans": {
      "$ref": "#/components/schemas/PlanOutcomes"
     },
     "automations": {
      "$ref": "#/components/schemas/AutomationOutcomes"
     },
     "byModel": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/ModelOutcome"
      },
      "description": "Most expensive first."
     },
     "tasks": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/TaskOutcome"
      },
      "description": "The 10 tasks whose runs cost most."
     }
    },
    "required": [
     "days",
     "runs",
     "pulls",
     "cost",
     "reviews",
     "plans",
     "automations",
     "byModel",
     "tasks"
    ],
    "additionalProperties": false
   },
   "AiAccount": {
    "type": "object",
    "properties": {
     "email": {
      "type": [
       "string",
       "null"
      ]
     },
     "organization": {
      "type": [
       "string",
       "null"
      ]
     },
     "plan": {
      "type": [
       "string",
       "null"
      ]
     }
    },
    "required": [
     "email",
     "organization",
     "plan"
    ],
    "additionalProperties": false
   },
   "AiChoice": {
    "type": "object",
    "properties": {
     "backend": {
      "type": "string"
     },
     "model": {
      "type": "string"
     },
     "speedModel": {
      "type": [
       "string",
       "null"
      ]
     },
     "key": {
      "type": [
       "string",
       "null"
      ],
      "description": "A new API key. Absent or blank keeps the stored one."
     }
    },
    "required": [
     "backend",
     "model",
     "speedModel",
     "key"
    ],
    "additionalProperties": false
   },
   "AiConnectors": {
    "type": "object",
    "properties": {
     "profile": {
      "type": "string",
      "description": "The profile asked about."
     },
     "servers": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/AiConnectorServer"
      }
     },
     "checkedAt": {
      "type": "number",
      "description": "When the CLI was asked, Unix seconds."
     }
    },
    "required": [
     "profile",
     "servers",
     "checkedAt"
    ],
    "additionalProperties": false
   },
   "AiConnectorServer": {
    "type": "object",
    "properties": {
     "name": {
      "type": "string"
     },
     "status": {
      "type": "string",
      "description": "`connected`, `needs-auth`, `failed`, `pending`."
     },
     "tools": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/AiConnectorTool"
      }
     }
    },
    "required": [
     "name",
     "status",
     "tools"
    ],
    "additionalProperties": false
   },
   "AiConnectorTool": {
    "type": "object",
    "properties": {
     "name": {
      "type": "string",
      "description": "The exact name a Prompt action allows: `mcp__claude_ai_Sentry__search_issues`."
     },
     "label": {
      "type": "string"
     },
     "write": {
      "type": "boolean",
      "description": "A guess from the tool's verb; a read-only automation cannot use it."
     }
    },
    "required": [
     "name",
     "label",
     "write"
    ],
    "additionalProperties": false
   },
   "AiCount": {
    "type": "object",
    "properties": {
     "name": {
      "type": "string"
     },
     "count": {
      "type": "number"
     },
     "tokens": {
      "type": "number"
     }
    },
    "required": [
     "name",
     "count",
     "tokens"
    ],
    "additionalProperties": false
   },
   "AiDayUsage": {
    "type": "object",
    "properties": {
     "day": {
      "type": "string"
     },
     "usage": {
      "$ref": "#/components/schemas/AiUsage"
     },
     "messages": {
      "type": "number"
     },
     "sessions": {
      "type": "number"
     },
     "cost": {
      "type": "number"
     },
     "cachedTokens": {
      "type": "number",
      "description": "Tokens Claude Code's own cache remembers for a day whose logs are gone."
     }
    },
    "required": [
     "day",
     "usage",
     "messages",
     "sessions",
     "cost",
     "cachedTokens"
    ],
    "additionalProperties": false
   },
   "AiEntry": {
    "type": "object",
    "properties": {
     "name": {
      "type": "string"
     },
     "description": {
      "type": [
       "string",
       "null"
      ]
     },
     "source": {
      "type": "string",
      "description": "`user`, `plugin:<name>`, `project:<folder>`."
     },
     "path": {
      "type": "string"
     },
     "model": {
      "type": [
       "string",
       "null"
      ]
     },
     "tools": {
      "type": "array",
      "items": {
       "type": "string"
      }
     }
    },
    "required": [
     "name",
     "description",
     "source",
     "path",
     "model",
     "tools"
    ],
    "additionalProperties": false
   },
   "AiFacet": {
    "type": "object",
    "properties": {
     "value": {
      "type": "string"
     },
     "count": {
      "type": "number"
     }
    },
    "required": [
     "value",
     "count"
    ],
    "additionalProperties": false
   },
   "AiHook": {
    "type": "object",
    "properties": {
     "event": {
      "type": "string"
     },
     "matcher": {
      "type": [
       "string",
       "null"
      ]
     },
     "kind": {
      "type": "string"
     },
     "command": {
      "type": [
       "string",
       "null"
      ],
      "description": "Redacted and cut."
     },
     "source": {
      "type": "string"
     }
    },
    "required": [
     "event",
     "matcher",
     "kind",
     "command",
     "source"
    ],
    "additionalProperties": false
   },
   "AiIndexStatus": {
    "type": "object",
    "properties": {
     "running": {
      "type": "boolean"
     },
     "lastRunAt": {
      "type": [
       "number",
       "null"
      ]
     },
     "files": {
      "type": [
       "number",
       "null"
      ]
     },
     "error": {
      "type": [
       "string",
       "null"
      ]
     }
    },
    "required": [
     "running",
     "lastRunAt",
     "files",
     "error"
    ],
    "additionalProperties": false
   },
   "AiInstruction": {
    "type": "object",
    "properties": {
     "name": {
      "type": "string"
     },
     "path": {
      "type": "string"
     },
     "bytes": {
      "type": "number"
     }
    },
    "required": [
     "name",
     "path",
     "bytes"
    ],
    "additionalProperties": false
   },
   "AiInstructionText": {
    "type": "object",
    "properties": {
     "name": {
      "type": "string"
     },
     "text": {
      "type": "string",
      "description": "Redacted, at most 64,000 characters."
     }
    },
    "required": [
     "name",
     "text"
    ],
    "additionalProperties": false
   },
   "AiInventory": {
    "type": "object",
    "properties": {
     "skills": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/AiEntry"
      }
     },
     "agents": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/AiEntry"
      }
     },
     "commands": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/AiEntry"
      }
     },
     "hooks": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/AiHook"
      }
     },
     "plugins": {
      "type": "array",
      "items": {
       "type": "string"
      }
     }
    },
    "required": [
     "skills",
     "agents",
     "commands",
     "hooks",
     "plugins"
    ],
    "additionalProperties": false
   },
   "AiMcpServer": {
    "type": "object",
    "properties": {
     "id": {
      "type": "string",
      "description": "The MCP page's id for it."
     },
     "name": {
      "type": "string"
     },
     "transport": {
      "type": "string"
     },
     "projects": {
      "type": "array",
      "items": {
       "type": "string"
      },
      "description": "Project folders it is configured for; empty for user-wide."
     },
     "disabled": {
      "type": "boolean"
     },
     "state": {
      "type": "string"
     }
    },
    "required": [
     "id",
     "name",
     "transport",
     "projects",
     "disabled",
     "state"
    ],
    "additionalProperties": false
   },
   "AiModelUsage": {
    "type": "object",
    "properties": {
     "model": {
      "type": "string"
     },
     "usage": {
      "$ref": "#/components/schemas/AiUsage"
     },
     "messages": {
      "type": "number"
     },
     "cost": {
      "type": [
       "number",
       "null"
      ]
     }
    },
    "required": [
     "model",
     "usage",
     "messages",
     "cost"
    ],
    "additionalProperties": false
   },
   "AiScreen": {
    "type": "object",
    "properties": {
     "systems": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/AiSystemCard"
      }
     },
     "stats": {
      "$ref": "#/components/schemas/AiStats"
     },
     "index": {
      "$ref": "#/components/schemas/AiIndexStatus"
     }
    },
    "required": [
     "systems",
     "stats",
     "index"
    ],
    "additionalProperties": false
   },
   "AiSearchArgs": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string"
     },
     "system": {
      "type": "string"
     },
     "page": {
      "type": "number"
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "AiSession": {
    "type": "object",
    "properties": {
     "id": {
      "type": "string"
     },
     "system": {
      "type": "string"
     },
     "project": {
      "type": [
       "string",
       "null"
      ]
     },
     "title": {
      "type": [
       "string",
       "null"
      ],
      "description": "The tool's own title, else the first prompt, cut and redacted."
     },
     "startedAt": {
      "type": [
       "number",
       "null"
      ]
     },
     "endedAt": {
      "type": [
       "number",
       "null"
      ]
     },
     "durationSeconds": {
      "type": [
       "number",
       "null"
      ]
     },
     "messages": {
      "type": "number"
     },
     "tokens": {
      "type": "number"
     },
     "model": {
      "type": [
       "string",
       "null"
      ]
     },
     "gitBranch": {
      "type": [
       "string",
       "null"
      ]
     },
     "snippet": {
      "type": [
       "string",
       "null"
      ],
      "description": "A search hit's surrounding text, the match between « and »."
     }
    },
    "required": [
     "id",
     "system",
     "project",
     "title",
     "startedAt",
     "endedAt",
     "durationSeconds",
     "messages",
     "tokens",
     "model",
     "gitBranch",
     "snippet"
    ],
    "additionalProperties": false
   },
   "AiSessionDetail": {
    "type": "object",
    "properties": {
     "session": {
      "$ref": "#/components/schemas/AiSession"
     },
     "entries": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/AiTranscriptEntry"
      }
     },
     "page": {
      "type": "number"
     },
     "pages": {
      "type": "number"
     },
     "total": {
      "type": "number"
     },
     "resume": {
      "type": [
       "string",
       "null"
      ],
      "description": "The command that resumes it, as you would type it."
     }
    },
    "required": [
     "session",
     "entries",
     "page",
     "pages",
     "total",
     "resume"
    ],
    "additionalProperties": false
   },
   "AiSessionPage": {
    "type": "object",
    "properties": {
     "sessions": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/AiSession"
      }
     },
     "total": {
      "type": "number"
     },
     "page": {
      "type": "number"
     },
     "pages": {
      "type": "number"
     },
     "facets": {
      "type": "object",
      "additionalProperties": {
       "type": "array",
       "items": {
        "$ref": "#/components/schemas/AiFacet"
       }
      },
      "description": "`system`, `project`, `model`."
     }
    },
    "required": [
     "sessions",
     "total",
     "page",
     "pages",
     "facets"
    ],
    "additionalProperties": false
   },
   "AiSkillDetail": {
    "type": "object",
    "properties": {
     "system": {
      "type": "string",
      "description": "The system (profile) whose skills list it."
     },
     "entry": {
      "$ref": "#/components/schemas/AiEntry"
     },
     "description": {
      "type": "string"
     },
     "body": {
      "type": "string",
      "description": "The instructions: the file after its front matter."
     },
     "editable": {
      "type": "boolean",
      "description": "A skill in a Claude Code profile's own `skills` folder can be changed here."
     }
    },
    "required": [
     "system",
     "entry",
     "description",
     "body",
     "editable"
    ],
    "additionalProperties": false
   },
   "AiState": {
    "type": "object",
    "properties": {
     "status": {
      "$ref": "#/components/schemas/JsonValue",
      "description": "Core's status: backend, label, model, whether a key is stored, ready."
     },
     "catalog": {
      "$ref": "#/components/schemas/JsonValue",
      "description": "Every backend core supports, with its models."
     }
    },
    "required": [
     "status",
     "catalog"
    ],
    "additionalProperties": false
   },
   "AiStats": {
    "type": "object",
    "properties": {
     "days": {
      "type": "number"
     },
     "sessions": {
      "type": "number"
     },
     "messages": {
      "type": "number"
     },
     "activeDays": {
      "type": "number"
     },
     "usage": {
      "$ref": "#/components/schemas/AiUsage"
     },
     "byModel": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/AiModelUsage"
      }
     },
     "byDay": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/AiDayUsage"
      }
     },
     "topProjects": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/AiCount"
      },
      "description": "The facets, each counted without its own narrowing: projects (sessions, tokens), models (messages, tokens) and tools (calls)."
     },
     "topModels": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/AiCount"
      }
     },
     "topTools": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/AiCount"
      }
     },
     "cost": {
      "type": "number",
      "description": "An estimate, from the price table, of the models it knows."
     },
     "unpriced": {
      "type": "array",
      "items": {
       "type": "string"
      }
     }
    },
    "required": [
     "days",
     "sessions",
     "messages",
     "activeDays",
     "usage",
     "byModel",
     "byDay",
     "topProjects",
     "topModels",
     "topTools",
     "cost",
     "unpriced"
    ],
    "additionalProperties": false
   },
   "AiSystemCard": {
    "type": "object",
    "properties": {
     "system": {
      "$ref": "#/components/schemas/AiSystemInfo"
     },
     "sessionsThisWeek": {
      "type": "number"
     },
     "tokensThisMonth": {
      "type": "number"
     },
     "costThisMonth": {
      "type": "number",
      "description": "Estimated, US dollars."
     },
     "mcpServers": {
      "type": "number"
     },
     "skills": {
      "type": "number"
     }
    },
    "required": [
     "system",
     "sessionsThisWeek",
     "tokensThisMonth",
     "costThisMonth",
     "mcpServers",
     "skills"
    ],
    "additionalProperties": false
   },
   "AiSystemDetail": {
    "type": "object",
    "properties": {
     "card": {
      "$ref": "#/components/schemas/AiSystemCard"
     },
     "instructions": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/AiInstructionText"
      }
     },
     "mcp": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/AiMcpServer"
      }
     },
     "inventory": {
      "$ref": "#/components/schemas/AiInventory"
     },
     "resume": {
      "type": [
       "string",
       "null"
      ],
      "description": "What resumes a session, with `<id>` for the session."
     }
    },
    "required": [
     "card",
     "instructions",
     "mcp",
     "inventory",
     "resume"
    ],
    "additionalProperties": false
   },
   "AiSystemEntries": {
    "type": "object",
    "properties": {
     "system": {
      "type": "string"
     },
     "entries": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/AiEntry"
      }
     }
    },
    "required": [
     "system",
     "entries"
    ],
    "additionalProperties": false
   },
   "AiSystemInfo": {
    "type": "object",
    "properties": {
     "id": {
      "type": "string",
      "description": "`claude-code.default`, `claude-code.claude-personal`, `codex`…"
     },
     "kind": {
      "type": "string"
     },
     "name": {
      "type": "string"
     },
     "profile": {
      "type": [
       "string",
       "null"
      ]
     },
     "configDir": {
      "type": [
       "string",
       "null"
      ]
     },
     "binary": {
      "type": [
       "string",
       "null"
      ]
     },
     "version": {
      "type": [
       "string",
       "null"
      ]
     },
     "signedIn": {
      "type": [
       "boolean",
       "null"
      ]
     },
     "account": {
      "anyOf": [
       {
        "$ref": "#/components/schemas/AiAccount"
       },
       {
        "type": "null"
       }
      ]
     },
     "defaultModel": {
      "type": [
       "string",
       "null"
      ]
     },
     "instructions": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/AiInstruction"
      }
     },
     "launcher": {
      "type": [
       "string",
       "null"
      ],
      "description": "The alias or command that starts it."
     },
     "sessions": {
      "type": "boolean",
      "description": "Whether its sessions are indexed."
     },
     "mcpApp": {
      "type": [
       "string",
       "null"
      ]
     }
    },
    "required": [
     "id",
     "kind",
     "name",
     "profile",
     "configDir",
     "binary",
     "version",
     "signedIn",
     "account",
     "defaultModel",
     "instructions",
     "launcher",
     "sessions",
     "mcpApp"
    ],
    "additionalProperties": false
   },
   "AiTested": {
    "type": "object",
    "properties": {
     "answered": {
      "type": "string",
      "description": "What answered, in the backend's own words (usually the model id)."
     }
    },
    "required": [
     "answered"
    ],
    "additionalProperties": false
   },
   "AiTranscriptEntry": {
    "type": "object",
    "properties": {
     "at": {
      "type": [
       "number",
       "null"
      ]
     },
     "role": {
      "type": "string",
      "description": "`user`, `assistant`."
     },
     "kind": {
      "type": "string",
      "description": "`text`, `tool_call`, `tool_result`; the last two are shown collapsed."
     },
     "text": {
      "type": "string",
      "description": "Redacted and cut."
     },
     "tool": {
      "type": [
       "string",
       "null"
      ]
     },
     "sidechain": {
      "type": "boolean"
     }
    },
    "required": [
     "at",
     "role",
     "kind",
     "text",
     "tool",
     "sidechain"
    ],
    "additionalProperties": false
   },
   "AiTurn": {
    "type": "object",
    "properties": {
     "role": {
      "type": "string",
      "description": "`user`, or `assistant` (`ai` in older rows)."
     },
     "text": {
      "type": "string"
     },
     "bullets": {
      "type": "array",
      "items": {
       "type": "string"
      },
      "description": "The model's own summary lines, where it produced any."
     },
     "evidence": {
      "type": "array",
      "items": {
       "type": "string"
      },
      "description": "Every source it named, as written."
     },
     "cited": {
      "type": "array",
      "items": {
       "type": "string"
      },
      "description": "The sources folded for display: comments collapse to one count, repeats are dropped. See `cited`."
     },
     "brief": {
      "anyOf": [
       {
        "$ref": "#/components/schemas/BriefRows"
       },
       {
        "type": "null"
       }
      ],
      "description": "The three labelled rows, when the model answered in them."
     }
    },
    "required": [
     "role",
     "text",
     "bullets",
     "evidence",
     "cited",
     "brief"
    ],
    "additionalProperties": false
   },
   "AiUsage": {
    "type": "object",
    "properties": {
     "input": {
      "type": "number"
     },
     "output": {
      "type": "number"
     },
     "cacheWrite": {
      "type": "number"
     },
     "cacheRead": {
      "type": "number"
     }
    },
    "required": [
     "input",
     "output",
     "cacheWrite",
     "cacheRead"
    ],
    "additionalProperties": false
   },
   "AllRunRow": {
    "type": "object",
    "properties": {
     "id": {
      "type": "string"
     },
     "taskId": {
      "type": [
       "string",
       "null"
      ]
     },
     "taskKey": {
      "type": [
       "string",
       "null"
      ],
      "description": "The tracker key (`ENGR-12`) when the task has one."
     },
     "taskTitle": {
      "type": [
       "string",
       "null"
      ]
     },
     "purpose": {
      "type": "string",
      "description": "`task` or `review`."
     },
     "subject": {
      "type": [
       "string",
       "null"
      ],
      "description": "The pull request a review ran against."
     },
     "state": {
      "type": "string",
      "description": "`running`, `queued`, `awaiting`, `done`, `failed` or `stopped`."
     },
     "queueState": {
      "type": "string"
     },
     "step": {
      "type": [
       "string",
       "null"
      ],
      "description": "The step the run is on, or ended on."
     },
     "stepLabel": {
      "type": [
       "string",
       "null"
      ]
     },
     "blockedOn": {
      "type": [
       "string",
       "null"
      ],
      "description": "What a queued run waits for, in the screen's words."
     },
     "attempt": {
      "type": "number"
     },
     "startedAt": {
      "type": "string",
      "description": "RFC 3339."
     },
     "updatedAt": {
      "type": "string"
     },
     "endedAt": {
      "type": [
       "string",
       "null"
      ]
     },
     "automation": {
      "anyOf": [
       {
        "$ref": "#/components/schemas/RunAutomation"
       },
       {
        "type": "null"
       }
      ]
     }
    },
    "required": [
     "id",
     "taskId",
     "taskKey",
     "taskTitle",
     "purpose",
     "subject",
     "state",
     "queueState",
     "step",
     "stepLabel",
     "blockedOn",
     "attempt",
     "startedAt",
     "updatedAt",
     "endedAt",
     "automation"
    ],
    "additionalProperties": false
   },
   "AllRunsFacets": {
    "type": "object",
    "properties": {
     "state": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/RunFacetValue"
      }
     },
     "task": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/RunFacetValue"
      }
     },
     "step": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/RunFacetValue"
      }
     }
    },
    "required": [
     "state",
     "task",
     "step"
    ],
    "additionalProperties": false
   },
   "AllRunsPage": {
    "type": "object",
    "properties": {
     "runs": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/AllRunRow"
      }
     },
     "total": {
      "type": "number",
      "description": "Rows matching the filters, across pages."
     },
     "facets": {
      "$ref": "#/components/schemas/AllRunsFacets"
     }
    },
    "required": [
     "runs",
     "total",
     "facets"
    ],
    "additionalProperties": false
   },
   "ApmCall": {
    "type": "object",
    "properties": {
     "name": {
      "type": "string"
     },
     "totalMs": {
      "type": [
       "number",
       "null"
      ]
     },
     "averageMs": {
      "type": [
       "number",
       "null"
      ]
     },
     "calls": {
      "type": [
       "number",
       "null"
      ]
     },
     "sample": {
      "type": [
       "string",
       "null"
      ],
      "description": "A statement seen in the window, obfuscated by the agent."
     }
    },
    "required": [
     "name",
     "totalMs",
     "averageMs",
     "calls",
     "sample"
    ],
    "additionalProperties": false
   },
   "ApmCalls": {
    "type": "object",
    "properties": {
     "start": {
      "type": "number"
     },
     "end": {
      "type": "number"
     },
     "rows": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/ApmCall"
      },
      "description": "The most time first, at most ten."
     },
     "note": {
      "type": [
       "string",
       "null"
      ],
      "description": "Why the window is narrower than asked, when it is."
     }
    },
    "required": [
     "start",
     "end",
     "rows",
     "note"
    ],
    "additionalProperties": false
   },
   "ApmKind": {
    "type": "string",
    "enum": [
     "transactions",
     "databases",
     "external"
    ]
   },
   "ApmListing": {
    "type": "object",
    "properties": {
     "start": {
      "type": "number"
     },
     "end": {
      "type": "number"
     },
     "dimensions": {
      "type": "array",
      "items": {
       "type": "string"
      },
      "description": "The kind's dimension names, in the order `dimensions` holds values."
     },
     "rows": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/ApmRow"
      }
     },
     "facets": {
      "type": "array",
      "items": {
       "type": "array",
       "minItems": 2,
       "prefixItems": [
        {
         "type": "string"
        },
        {
         "type": "array",
         "items": {
          "type": "string"
         }
        }
       ],
       "maxItems": 2
      },
      "description": "Values offered per dimension, for the filter menus."
     },
     "facetError": {
      "type": [
       "string",
       "null"
      ],
      "description": "Why the facet values could not be read; the rows still are."
     }
    },
    "required": [
     "start",
     "end",
     "dimensions",
     "rows",
     "facets",
     "facetError"
    ],
    "additionalProperties": false
   },
   "ApmOverview": {
    "type": "object",
    "properties": {
     "start": {
      "type": "number"
     },
     "end": {
      "type": "number"
     },
     "step": {
      "type": "number",
      "description": "Bucket width in seconds."
     },
     "metrics": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/ApmSeries"
      },
      "description": "Response time, Apdex, throughput, errors."
     },
     "previous": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/ApmSeries"
      },
      "description": "The same, for the previous period, when `compare` was asked."
     },
     "segments": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/ApmSeries"
      },
      "description": "Response time broken down by segment."
     },
     "percentiles": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/ApmSeries"
      },
      "description": "Response-time percentiles in ms (`p50`, `p95`): a transaction's detail only, empty elsewhere."
     },
     "hosts": {
      "type": "array",
      "items": {
       "type": "string"
      }
     },
     "errors": {
      "type": "array",
      "items": {
       "type": "string"
      },
      "description": "Panels that failed, each in a sentence. The others still render."
     }
    },
    "required": [
     "start",
     "end",
     "step",
     "metrics",
     "previous",
     "segments",
     "percentiles",
     "hosts",
     "errors"
    ],
    "additionalProperties": false
   },
   "ApmRow": {
    "type": "object",
    "properties": {
     "dimensions": {
      "type": "array",
      "items": {
       "type": [
        "string",
        "null"
       ]
      },
      "description": "One value per dimension of the kind; `null` where New Relic had none."
     },
     "name": {
      "type": "string",
      "description": "The dimensions joined for display, \"Unknown\" for a missing one."
     },
     "totalMs": {
      "type": [
       "number",
       "null"
      ]
     },
     "meanMs": {
      "type": [
       "number",
       "null"
      ]
     },
     "rpm": {
      "type": [
       "number",
       "null"
      ]
     },
     "calls": {
      "type": [
       "number",
       "null"
      ]
     },
     "errorPct": {
      "type": [
       "number",
       "null"
      ]
     }
    },
    "required": [
     "dimensions",
     "name",
     "totalMs",
     "meanMs",
     "rpm",
     "calls",
     "errorPct"
    ],
    "additionalProperties": false
   },
   "ApmSeries": {
    "type": "object",
    "properties": {
     "name": {
      "type": "string"
     },
     "points": {
      "type": "array",
      "items": {
       "type": "array",
       "items": {
        "type": "number"
       },
       "minItems": 2,
       "maxItems": 2
      },
      "description": "`[epoch seconds, value]` pairs, the shape uPlot takes."
     }
    },
    "required": [
     "name",
     "points"
    ],
    "additionalProperties": false
   },
   "AppLocale": {
    "type": "object",
    "properties": {
     "region": {
      "type": [
       "string",
       "null"
      ],
      "description": "The region formats follow, `ES` from `en_US@rg=eszzzz` or `es_ES`; none when unknown."
     },
     "language": {
      "type": [
       "string",
       "null"
      ],
      "description": "The language, `en`."
     },
     "raw": {
      "type": [
       "string",
       "null"
      ],
      "description": "As macOS stores it."
     }
    },
    "required": [
     "region",
     "language",
     "raw"
    ],
    "additionalProperties": false
   },
   "AppPreferences": {
    "type": "object",
    "properties": {
     "appearance": {
      "type": "string",
      "description": "`light`, `dark` or `system`."
     },
     "desktopNotifications": {
      "type": "boolean"
     },
     "doNotDisturb": {
      "type": "boolean"
     },
     "maxConcurrentRuns": {
      "type": "number",
      "description": "1 to 16, per project."
     },
     "notifyKinds": {
      "type": "object",
      "additionalProperties": {
       "type": "boolean"
      },
      "description": "Which notifications are on, by catalog id (`app.notification_kinds`); a kind not listed follows its default."
     }
    },
    "required": [
     "appearance",
     "desktopNotifications",
     "doNotDisturb",
     "maxConcurrentRuns",
     "notifyKinds"
    ],
    "additionalProperties": false
   },
   "Assignee": {
    "type": "object",
    "properties": {
     "kind": {
      "type": "string",
      "description": "`me`, `person` or `agent`."
     },
     "value": {
      "type": "string",
      "description": "What to send back: `me`, a person's name, or an agent profile's id."
     },
     "label": {
      "type": "string"
     }
    },
    "required": [
     "kind",
     "value",
     "label"
    ],
    "additionalProperties": false
   },
   "AuthStarted": {
    "type": "object",
    "properties": {
     "url": {
      "type": "string",
      "description": "Open in the browser. The service listens on `redirectUri` and finishes by itself; `mcp.auth.finish` reports how it went."
     },
     "redirectUri": {
      "type": "string"
     }
    },
    "required": [
     "url",
     "redirectUri"
    ],
    "additionalProperties": false
   },
   "AuthStatus": {
    "type": "object",
    "properties": {
     "state": {
      "type": "string",
      "description": "`idle`, `pending`, `done`, `failed`."
     },
     "error": {
      "type": [
       "string",
       "null"
      ]
     },
     "signedIn": {
      "type": "boolean"
     }
    },
    "required": [
     "state",
     "error",
     "signedIn"
    ],
    "additionalProperties": false
   },
   "AutomatedReview": {
    "type": "object",
    "properties": {
     "run": {
      "type": "string"
     },
     "rule": {
      "type": "string",
      "description": "The rule that started it."
     },
     "state": {
      "type": "string",
      "description": "\"Agent working\", \"Completed\", \"Failed\"…"
     },
     "running": {
      "type": "boolean",
      "description": "Still on its way: the screen keeps asking."
     },
     "at": {
      "type": "number"
     },
     "report": {
      "type": [
       "string",
       "null"
      ],
      "description": "What the run wrote, as Markdown, once it has."
     },
     "error": {
      "type": [
       "string",
       "null"
      ]
     }
    },
    "required": [
     "run",
     "rule",
     "state",
     "running",
     "at",
     "report",
     "error"
    ],
    "additionalProperties": false
   },
   "AutomationMark": {
    "type": "object",
    "properties": {
     "subject": {
      "type": "string"
     },
     "state": {
      "type": "string",
      "description": "The latest run's state in words."
     },
     "running": {
      "type": "boolean"
     },
     "failed": {
      "type": "boolean"
     },
     "rule": {
      "type": "string",
      "description": "The rule of the latest run."
     },
     "runs": {
      "type": "number",
      "description": "How many runs automations made for it."
     },
     "at": {
      "type": "number"
     }
    },
    "required": [
     "subject",
     "state",
     "running",
     "failed",
     "rule",
     "runs",
     "at"
    ],
    "additionalProperties": false
   },
   "AutomationMarks": {
    "type": "object",
    "properties": {
     "listening": {
      "type": "boolean",
      "description": "An enabled rule listens for one of these kinds, so a list has reason to show the column."
     },
     "marks": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/AutomationMark"
      }
     }
    },
    "required": [
     "listening",
     "marks"
    ],
    "additionalProperties": false
   },
   "AutomationOutcome": {
    "type": "object",
    "properties": {
     "id": {
      "type": [
       "string",
       "null"
      ],
      "description": "The rule the command touched, where there is one; empty after archive."
     }
    },
    "required": [
     "id"
    ],
    "additionalProperties": false
   },
   "AutomationOutcomes": {
    "type": "object",
    "properties": {
     "runs": {
      "type": "number"
     },
     "succeeded": {
      "type": "number"
     },
     "failed": {
      "type": "number"
     },
     "cancelled": {
      "type": "number"
     },
     "waiting": {
      "type": "number"
     }
    },
    "required": [
     "runs",
     "succeeded",
     "failed",
     "cancelled",
     "waiting"
    ],
    "additionalProperties": false
   },
   "AutomationRun": {
    "type": "object",
    "properties": {
     "run": {
      "$ref": "#/components/schemas/JsonValue",
      "description": "Core's run record."
     },
     "state": {
      "type": "string",
      "description": "A sentence for the person: \"Agent working\", \"Proposal ready\"…"
     },
     "task": {
      "type": [
       "string",
       "null"
      ],
      "description": "The task the run worked on, when there is one."
     },
     "proposal": {
      "anyOf": [
       {
        "$ref": "#/components/schemas/ProposalText"
       },
       {
        "type": "null"
       }
      ],
      "description": "A plan proposal's version and text, once its review finished."
     },
     "output": {
      "type": [
       "string",
       "null"
      ],
      "description": "Each step's result, readable."
     },
     "progress": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/StepProgress"
      },
      "description": "Each step's label and state, in order."
     }
    },
    "required": [
     "run",
     "state",
     "task",
     "proposal",
     "output",
     "progress"
    ],
    "additionalProperties": false
   },
   "AutomationsScreen": {
    "type": "object",
    "properties": {
     "paused": {
      "type": "boolean",
      "description": "Every automation is held, not only one."
     },
     "rules": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/JsonValue"
      },
      "description": "Core's `Automation` records."
     },
     "runs": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/AutomationRun"
      },
      "description": "Runs of the selected rule, newest first."
     },
     "decisions": {
      "type": "array",
      "items": {
       "type": "string"
      },
      "description": "The selected rule's recent decisions, as sentences."
     },
     "draft": {
      "anyOf": [
       {
        "$ref": "#/components/schemas/JsonValue"
       },
       {
        "type": "null"
       }
      ],
      "description": "An unsaved edit of the selected rule (or of a new one), to recover."
     },
     "tasks": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/TaskChoice"
      },
      "description": "Jira tasks assigned to me, for a plan-watching rule."
     },
     "workspaces": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/WorkspaceChoice"
      }
     },
     "profiles": {
      "$ref": "#/components/schemas/JsonValue",
      "description": "Core's workflow profiles."
     },
     "catalog": {
      "$ref": "#/components/schemas/Catalog",
      "description": "Every event, condition field and action a rule can be made of (`automations::catalog`)."
     },
     "jiraProjects": {
      "type": "array",
      "items": {
       "type": "string"
      }
     },
     "repositories": {
      "type": "array",
      "items": {
       "type": "string"
      }
     },
     "intake": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/IntakeItem"
      }
     },
     "templates": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/JsonValue"
      },
      "description": "Built-in rules to start from: core's `automations::templates`, `{id, name, description, definition, servers}`. The editor sets the cron timezone and ticks the read tools of `servers`."
     }
    },
    "required": [
     "paused",
     "rules",
     "runs",
     "decisions",
     "draft",
     "tasks",
     "workspaces",
     "profiles",
     "catalog",
     "jiraProjects",
     "repositories",
     "intake",
     "templates"
    ],
    "additionalProperties": false
   },
   "BackfillResult": {
    "type": "object",
    "properties": {
     "matching": {
      "type": "number",
      "description": "Events in the period the rule's triggers and conditions match."
     },
     "alreadyRan": {
      "type": "number",
      "description": "Of those, ones it already made a run for."
     },
     "queued": {
      "type": "number"
     },
     "skipped": {
      "type": "number"
     }
    },
    "required": [
     "matching",
     "alreadyRan",
     "queued",
     "skipped"
    ],
    "additionalProperties": false
   },
   "BitbucketTasksConfig": {
    "type": "object",
    "properties": {
     "connected": {
      "type": "boolean"
     },
     "repositories": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/RepositoryScope"
      },
      "description": "The repositories synced. Empty syncs every repository."
     },
     "environments": {
      "$ref": "#/components/schemas/DeployLanes",
      "description": "Lanes for repositories that have none of their own."
     }
    },
    "required": [
     "connected",
     "repositories",
     "environments"
    ],
    "additionalProperties": false
   },
   "BranchFolder": {
    "type": "object",
    "properties": {
     "name": {
      "type": "string",
      "description": "The folder's own name: `feature`, `origin`, `ENGR`."
     },
     "path": {
      "type": "string",
      "description": "What to pass as `prefix` to open it: `feature/`, `origin/ENGR-`."
     },
     "count": {
      "type": "number",
      "description": "Branches anywhere under it."
     },
     "latestAt": {
      "type": "string",
      "description": "The newest commit date among them, RFC 3339."
     }
    },
    "required": [
     "name",
     "path",
     "count",
     "latestAt"
    ],
    "additionalProperties": false
   },
   "BranchPull": {
    "type": "object",
    "properties": {
     "id": {
      "type": "string",
      "description": "`workspace/repo#42`, what the pull request drawer opens."
     },
     "number": {
      "type": "string"
     },
     "title": {
      "type": "string"
     },
     "state": {
      "type": "string"
     },
     "url": {
      "type": [
       "string",
       "null"
      ]
     }
    },
    "required": [
     "id",
     "number",
     "title",
     "state",
     "url"
    ],
    "additionalProperties": false
   },
   "BranchTask": {
    "type": "object",
    "properties": {
     "id": {
      "type": "string"
     },
     "title": {
      "type": "string"
     },
     "issue": {
      "type": [
       "string",
       "null"
      ],
      "description": "The issue it works, where it has one."
     }
    },
    "required": [
     "id",
     "title",
     "issue"
    ],
    "additionalProperties": false
   },
   "BriefRows": {
    "type": "object",
    "properties": {
     "problem": {
      "type": [
       "string",
       "null"
      ]
     },
     "cause": {
      "type": [
       "string",
       "null"
      ]
     },
     "latest": {
      "type": [
       "string",
       "null"
      ]
     }
    },
    "required": [
     "problem",
     "cause",
     "latest"
    ],
    "additionalProperties": false
   },
   "BrowserSession": {
    "type": "object",
    "properties": {
     "id": {
      "type": "string"
     },
     "origin": {
      "type": "string"
     },
     "current": {
      "type": "boolean",
      "description": "Whether this is the browser asking."
     },
     "expiresIn": {
      "type": "number"
     }
    },
    "required": [
     "id",
     "origin",
     "current",
     "expiresIn"
    ],
    "additionalProperties": false
   },
   "BuildBranch": {
    "type": "object",
    "properties": {
     "repo": {
      "type": "string"
     },
     "prodBranch": {
      "type": "string"
     },
     "releaseBranch": {
      "type": "string"
     },
     "mode": {
      "type": "string",
      "description": "How the tasks reach the release branch: `branches` (a pull request per task) or `commits` (squash or cherry-pick)."
     }
    },
    "required": [
     "repo",
     "prodBranch",
     "releaseBranch",
     "mode"
    ],
    "additionalProperties": false
   },
   "BuildItem": {
    "type": "object",
    "properties": {
     "key": {
      "type": "string"
     },
     "title": {
      "type": "string"
     },
     "taskBranch": {
      "type": [
       "string",
       "null"
      ]
     },
     "prRef": {
      "type": [
       "string",
       "null"
      ]
     },
     "prUrl": {
      "type": [
       "string",
       "null"
      ]
     },
     "strategy": {
      "type": "string"
     },
     "reviewers": {
      "type": "array",
      "items": {
       "type": "string"
      }
     },
     "state": {
      "type": "string"
     },
     "note": {
      "type": "string"
     }
    },
    "required": [
     "key",
     "title",
     "taskBranch",
     "prRef",
     "prUrl",
     "strategy",
     "reviewers",
     "state",
     "note"
    ],
    "additionalProperties": false
   },
   "BuildPick": {
    "type": "object",
    "properties": {
     "key": {
      "type": "string"
     },
     "title": {
      "type": "string"
     },
     "branch": {
      "type": "string",
      "description": "The task's branch (without `origin/`), when it has no pull request."
     },
     "pr": {
      "type": "string",
      "description": "The pull request to use, `<repository>#<number>`."
     },
     "strategy": {
      "type": "string",
      "description": "`squash` or `cherry-pick` (commit mode); ignored in branch mode."
     },
     "reviewers": {
      "type": "array",
      "items": {
       "type": "string"
      }
     }
    },
    "required": [
     "key",
     "reviewers"
    ],
    "additionalProperties": false
   },
   "BuildPull": {
    "type": "object",
    "properties": {
     "reference": {
      "type": "string"
     },
     "repository": {
      "type": "string"
     },
     "number": {
      "type": "number"
     },
     "state": {
      "type": "string"
     },
     "branch": {
      "type": [
       "string",
       "null"
      ]
     },
     "target": {
      "type": [
       "string",
       "null"
      ]
     },
     "url": {
      "type": [
       "string",
       "null"
      ]
     },
     "reviewers": {
      "type": "array",
      "items": {
       "type": "string"
      }
     },
     "approvedBy": {
      "type": "array",
      "items": {
       "type": "string"
      }
     }
    },
    "required": [
     "reference",
     "repository",
     "number",
     "state",
     "branch",
     "target",
     "url",
     "reviewers",
     "approvedBy"
    ],
    "additionalProperties": false
   },
   "BuildRelease": {
    "type": "object",
    "properties": {
     "id": {
      "type": "string"
     },
     "name": {
      "type": "string"
     },
     "project": {
      "type": "string"
     },
     "date": {
      "type": [
       "string",
       "null"
      ]
     },
     "released": {
      "type": "boolean"
     },
     "canStart": {
      "type": "boolean",
      "description": "Whether a run can be started today."
     },
     "reason": {
      "type": [
       "string",
       "null"
      ],
      "description": "Why not, when it cannot."
     }
    },
    "required": [
     "id",
     "name",
     "project",
     "date",
     "released",
     "canStart",
     "reason"
    ],
    "additionalProperties": false
   },
   "BuildRepo": {
    "type": "object",
    "properties": {
     "id": {
      "type": "string"
     },
     "name": {
      "type": "string"
     },
     "provider": {
      "type": [
       "string",
       "null"
      ]
     },
     "slug": {
      "type": [
       "string",
       "null"
      ]
     },
     "local": {
      "type": "boolean"
     },
     "prodBranch": {
      "type": [
       "string",
       "null"
      ],
      "description": "The branch production is deployed from, from deploy lanes or by name."
     },
     "branches": {
      "type": "array",
      "items": {
       "type": "string"
      },
      "description": "Remote branches (without `origin/`), newest first."
     },
     "suggested": {
      "type": "boolean",
      "description": "The release's pull requests are in this repository."
     }
    },
    "required": [
     "id",
     "name",
     "provider",
     "slug",
     "local",
     "prodBranch",
     "branches",
     "suggested"
    ],
    "additionalProperties": false
   },
   "BuildRun": {
    "type": "object",
    "properties": {
     "id": {
      "type": "string"
     },
     "repo": {
      "type": "string"
     },
     "repoName": {
      "type": "string"
     },
     "mode": {
      "type": "string"
     },
     "prodBranch": {
      "type": "string"
     },
     "releaseBranch": {
      "type": "string"
     },
     "step": {
      "type": "string"
     },
     "state": {
      "type": "string"
     },
     "note": {
      "type": "string"
     },
     "releasePr": {
      "type": [
       "string",
       "null"
      ]
     },
     "releasePrUrl": {
      "type": [
       "string",
       "null"
      ]
     },
     "requiredApprovals": {
      "type": "number"
     },
     "mergeStrategy": {
      "type": "string"
     },
     "worktree": {
      "type": [
       "string",
       "null"
      ]
     },
     "steps": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/BuildStep"
      }
     },
     "items": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/BuildItem"
      }
     },
     "updatedAt": {
      "type": "string"
     }
    },
    "required": [
     "id",
     "repo",
     "repoName",
     "mode",
     "prodBranch",
     "releaseBranch",
     "step",
     "state",
     "note",
     "releasePr",
     "releasePrUrl",
     "requiredApprovals",
     "mergeStrategy",
     "worktree",
     "steps",
     "items",
     "updatedAt"
    ],
    "additionalProperties": false
   },
   "BuildRunBrief": {
    "type": "object",
    "properties": {
     "repo": {
      "type": "string"
     },
     "step": {
      "type": "string"
     },
     "state": {
      "type": "string",
      "description": "`running`, `awaiting`, `done`, `failed` or `aborted`."
     },
     "releaseBranch": {
      "type": "string"
     }
    },
    "required": [
     "repo",
     "step",
     "state",
     "releaseBranch"
    ],
    "additionalProperties": false
   },
   "BuildStep": {
    "type": "object",
    "properties": {
     "id": {
      "type": "string"
     },
     "label": {
      "type": "string"
     },
     "state": {
      "type": "string",
      "description": "`done`, `current` or `todo`."
     }
    },
    "required": [
     "id",
     "label",
     "state"
    ],
    "additionalProperties": false
   },
   "BuildTask": {
    "type": "object",
    "properties": {
     "key": {
      "type": "string"
     },
     "title": {
      "type": "string"
     },
     "status": {
      "type": "string"
     },
     "category": {
      "type": "string"
     },
     "assignee": {
      "type": [
       "string",
       "null"
      ]
     },
     "url": {
      "type": [
       "string",
       "null"
      ]
     },
     "pulls": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/BuildPull"
      }
     },
     "branches": {
      "type": "array",
      "items": {
       "type": "string"
      },
      "description": "Remote branches of the chosen repository that name this task."
     }
    },
    "required": [
     "key",
     "title",
     "status",
     "category",
     "assignee",
     "url",
     "pulls",
     "branches"
    ],
    "additionalProperties": false
   },
   "BuildWritten": {
    "type": "object",
    "properties": {
     "message": {
      "type": "string"
     },
     "run": {
      "type": "string"
     }
    },
    "required": [
     "message",
     "run"
    ],
    "additionalProperties": false
   },
   "BuiltInSkill": {
    "type": "object",
    "properties": {
     "name": {
      "type": "string"
     },
     "description": {
      "type": "string"
     },
     "body": {
      "type": "string",
      "description": "`SKILL.md` without its front matter."
     },
     "files": {
      "type": "array",
      "items": {
       "type": "string"
      },
      "description": "Every file the skill is made of."
     },
     "installedIn": {
      "type": "array",
      "items": {
       "type": "string"
      },
      "description": "The Claude Code profiles (system ids) that already have a skill of this name."
     }
    },
    "required": [
     "name",
     "description",
     "body",
     "files",
     "installedIn"
    ],
    "additionalProperties": false
   },
   "Catalog": {
    "type": "object",
    "properties": {
     "events": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/CatalogEvent"
      }
     },
     "actions": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/CatalogAction"
      }
     }
    },
    "required": [
     "events",
     "actions"
    ],
    "additionalProperties": false
   },
   "CatalogAction": {
    "type": "object",
    "properties": {
     "id": {
      "type": "string"
     },
     "label": {
      "type": "string"
     },
     "hint": {
      "type": "string"
     },
     "needsRepository": {
      "type": "boolean",
      "description": "Runs in a repository, so the rule needs an execution workspace."
     },
     "readsEvent": {
      "type": "boolean",
      "description": "Branches on a field of the event that started the run, so a schedule cannot start it."
     }
    },
    "required": [
     "id",
     "label",
     "hint",
     "needsRepository",
     "readsEvent"
    ],
    "additionalProperties": false
   },
   "CatalogEvent": {
    "type": "object",
    "properties": {
     "id": {
      "type": "string",
      "description": "The event's id (`pull_opened`)."
     },
     "label": {
      "type": "string"
     },
     "group": {
      "type": "string",
      "description": "The heading the picker files it under."
     },
     "noun": {
      "type": "string",
      "description": "What one is: \"pull request\"."
     },
     "scopeLabel": {
      "type": "string",
      "description": "What a trigger's scope names: \"Repository\"."
     },
     "anyScope": {
      "type": "boolean",
      "description": "The trigger may listen to every scope (`*`)."
     },
     "fields": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/CatalogField"
      }
     },
     "actions": {
      "type": "array",
      "items": {
       "type": "string"
      },
      "description": "The ids of the actions that can answer it."
     }
    },
    "required": [
     "id",
     "label",
     "group",
     "noun",
     "scopeLabel",
     "anyScope",
     "fields",
     "actions"
    ],
    "additionalProperties": false
   },
   "CatalogField": {
    "type": "object",
    "properties": {
     "key": {
      "type": "string"
     },
     "label": {
      "type": "string"
     },
     "values": {
      "type": "array",
      "items": {
       "type": "string"
      },
      "description": "The values it takes, when they are known; empty for free text."
     }
    },
    "required": [
     "key",
     "label",
     "values"
    ],
    "additionalProperties": false
   },
   "ChatApproval": {
    "type": "object",
    "properties": {
     "id": {
      "type": "string"
     },
     "tool": {
      "type": "string"
     },
     "summary": {
      "type": "string"
     },
     "rule": {
      "type": "string",
      "description": "What \"always allow for this epic\" would remember."
     },
     "input": {
      "$ref": "#/components/schemas/JsonValue"
     },
     "createdAt": {
      "type": "string"
     }
    },
    "required": [
     "id",
     "tool",
     "summary",
     "rule",
     "input",
     "createdAt"
    ],
    "additionalProperties": false
   },
   "ChatEvent": {
    "type": "object",
    "properties": {
     "id": {
      "type": "number"
     },
     "at": {
      "type": "string"
     },
     "kind": {
      "type": "string",
      "description": "`user`, `text`, `tool`, `tool_result`, `approval`, `decision`, `note` or `error`."
     },
     "body": {
      "$ref": "#/components/schemas/JsonValue"
     }
    },
    "required": [
     "id",
     "at",
     "kind",
     "body"
    ],
    "additionalProperties": false
   },
   "ChatSnapshot": {
    "type": "object",
    "properties": {
     "thread": {
      "type": "string"
     },
     "turns": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/AiTurn"
      }
     },
     "running": {
      "type": "boolean",
      "description": "Whether an answer is being written now."
     },
     "preview": {
      "type": [
       "string",
       "null"
      ],
      "description": "The answer so far, while it is being written."
     },
     "error": {
      "type": [
       "string",
       "null"
      ],
      "description": "Why the last question got no answer."
     }
    },
    "required": [
     "thread",
     "turns",
     "running",
     "preview",
     "error"
    ],
    "additionalProperties": false
   },
   "ChatThread": {
    "type": "object",
    "properties": {
     "thread": {
      "type": "string"
     },
     "title": {
      "type": "string",
      "description": "The opening question, shortened to fit a row."
     },
     "turns": {
      "type": "number"
     },
     "last": {
      "type": "string",
      "description": "RFC 3339."
     }
    },
    "required": [
     "thread",
     "title",
     "turns",
     "last"
    ],
    "additionalProperties": false
   },
   "CheckRan": {
    "type": "object",
    "properties": {
     "appeared": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/FollowupFound"
      }
     },
     "kept": {
      "type": "number"
     },
     "resolved": {
      "type": "number"
     },
     "heldBack": {
      "type": "number"
     },
     "error": {
      "type": [
       "string",
       "null"
      ]
     }
    },
    "required": [
     "appeared",
     "kept",
     "resolved",
     "heldBack",
     "error"
    ],
    "additionalProperties": false
   },
   "CheckRow": {
    "type": "object",
    "properties": {
     "check": {
      "$ref": "#/components/schemas/FollowupCheck"
     },
     "lastRunAt": {
      "type": [
       "number",
       "null"
      ]
     },
     "nextRunAt": {
      "type": [
       "number",
       "null"
      ]
     },
     "lastError": {
      "type": [
       "string",
       "null"
      ]
     },
     "open": {
      "type": "number"
     }
    },
    "required": [
     "check",
     "lastRunAt",
     "nextRunAt",
     "lastError",
     "open"
    ],
    "additionalProperties": false
   },
   "Checks": {
    "type": "object",
    "properties": {
     "checks": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/CheckRow"
      }
     },
     "recipes": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/RecipeInfo"
      }
     }
    },
    "required": [
     "checks",
     "recipes"
    ],
    "additionalProperties": false
   },
   "CheckTest": {
    "type": "object",
    "properties": {
     "raw": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/RecipeCall"
      },
      "description": "Every call made and what it answered."
     },
     "mapped": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/FollowupFound"
      },
      "description": "Every item the answers held, mapped."
     },
     "kept": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/FollowupFound"
      },
      "description": "Still waiting on you (before the grace period)."
     },
     "dropped": {
      "type": "array",
      "items": {
       "type": "array",
       "items": {
        "type": "string"
       },
       "minItems": 2,
       "maxItems": 2
      },
      "description": "Key and reason: `mine`, `filtered`, `answered`, `reacted`."
     },
     "error": {
      "type": [
       "string",
       "null"
      ]
     }
    },
    "required": [
     "raw",
     "mapped",
     "kept",
     "dropped",
     "error"
    ],
    "additionalProperties": false
   },
   "CloneCandidate": {
    "type": "object",
    "properties": {
     "path": {
      "type": "string"
     },
     "workspaceId": {
      "type": [
       "string",
       "null"
      ],
      "description": "Set when the folder is already one of this project's repositories."
     }
    },
    "required": [
     "path",
     "workspaceId"
    ],
    "additionalProperties": false
   },
   "CloudflareBandwidth": {
    "type": "object",
    "properties": {
     "bytes": {
      "type": "number"
     },
     "cachedBytes": {
      "type": "number"
     },
     "series": {
      "type": "array",
      "items": {
       "type": "number"
      }
     },
     "cachedSeries": {
      "type": "array",
      "items": {
       "type": "number"
      }
     }
    },
    "required": [
     "bytes",
     "cachedBytes",
     "series",
     "cachedSeries"
    ],
    "additionalProperties": false
   },
   "CloudflareBreakdown": {
    "type": "object",
    "properties": {
     "id": {
      "type": "string"
     },
     "label": {
      "type": "string"
     },
     "values": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/CloudflareCount"
      }
     }
    },
    "required": [
     "id",
     "label",
     "values"
    ],
    "additionalProperties": false
   },
   "CloudflareCheck": {
    "type": "object",
    "properties": {
     "checkedAt": {
      "type": [
       "number",
       "null"
      ],
      "description": "Seconds; null before the first check."
     },
     "running": {
      "type": "boolean"
     },
     "errors": {
      "type": "array",
      "items": {
       "type": "string"
      }
     },
     "notes": {
      "type": "array",
      "items": {
       "type": "string"
      }
     }
    },
    "required": [
     "checkedAt",
     "running",
     "errors",
     "notes"
    ],
    "additionalProperties": false
   },
   "CloudflareCheckStarted": {
    "type": "object",
    "properties": {
     "started": {
      "type": "boolean",
      "description": "False when a check was already running; it announces when done too."
     }
    },
    "required": [
     "started"
    ],
    "additionalProperties": false
   },
   "CloudflareCount": {
    "type": "object",
    "properties": {
     "value": {
      "type": "string"
     },
     "count": {
      "type": "number"
     }
    },
    "required": [
     "value",
     "count"
    ],
    "additionalProperties": false
   },
   "CloudflareDeployment": {
    "type": "object",
    "properties": {
     "kind": {
      "type": "string",
      "description": "`pages` or `workers`."
     },
     "id": {
      "type": "string"
     },
     "at": {
      "type": "string",
      "description": "RFC 3339."
     },
     "project": {
      "type": "string",
      "description": "The Pages project or the Worker."
     },
     "environment": {
      "type": "string",
      "description": "`production` or `preview`."
     },
     "branch": {
      "type": [
       "string",
       "null"
      ]
     },
     "commit": {
      "type": [
       "string",
       "null"
      ]
     },
     "message": {
      "type": [
       "string",
       "null"
      ]
     },
     "author": {
      "type": [
       "string",
       "null"
      ]
     },
     "status": {
      "type": "string",
      "description": "`success`, `failure`, `canceled` or `building`."
     },
     "url": {
      "type": [
       "string",
       "null"
      ]
     },
     "repository": {
      "type": [
       "string",
       "null"
      ]
     },
     "versions": {
      "type": "array",
      "items": {
       "type": "string"
      },
      "description": "A Workers rollout's versions: `1a2b3c4d 100%`."
     }
    },
    "required": [
     "kind",
     "id",
     "at",
     "project",
     "environment",
     "branch",
     "commit",
     "message",
     "author",
     "status",
     "url",
     "repository",
     "versions"
    ],
    "additionalProperties": false
   },
   "CloudflareFacet": {
    "type": "object",
    "properties": {
     "id": {
      "type": "string",
      "description": "The argument it narrows: `zones`, `hosts`, `status`, `methods`, `countries`, `devices`, `cache`, `actions` or `scripts`."
     },
     "label": {
      "type": "string"
     },
     "values": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/CloudflareFacetValue"
      }
     }
    },
    "required": [
     "id",
     "label",
     "values"
    ],
    "additionalProperties": false
   },
   "CloudflareFacetValue": {
    "type": "object",
    "properties": {
     "value": {
      "type": "string"
     },
     "label": {
      "type": [
       "string",
       "null"
      ]
     },
     "count": {
      "type": [
       "number",
       "null"
      ],
      "description": "Requests (or events) in the window, where they were read."
     },
     "selected": {
      "type": "boolean"
     }
    },
    "required": [
     "value",
     "label",
     "count",
     "selected"
    ],
    "additionalProperties": false
   },
   "CloudflareFigure": {
    "type": "object",
    "properties": {
     "label": {
      "type": "string"
     },
     "current": {
      "type": "number"
     },
     "baseline": {
      "type": [
       "number",
       "null"
      ]
     },
     "unit": {
      "type": "string",
      "description": "\"\", \"%\" or \"ms\"."
     }
    },
    "required": [
     "label",
     "current",
     "baseline",
     "unit"
    ],
    "additionalProperties": false
   },
   "CloudflareFirewallEvent": {
    "type": "object",
    "properties": {
     "at": {
      "type": "string",
      "description": "RFC 3339."
     },
     "rayId": {
      "type": [
       "string",
       "null"
      ]
     },
     "action": {
      "type": "string"
     },
     "source": {
      "type": "string"
     },
     "ruleId": {
      "type": [
       "string",
       "null"
      ]
     },
     "ip": {
      "type": [
       "string",
       "null"
      ]
     },
     "country": {
      "type": [
       "string",
       "null"
      ]
     },
     "asn": {
      "type": [
       "string",
       "null"
      ]
     },
     "host": {
      "type": [
       "string",
       "null"
      ]
     },
     "path": {
      "type": [
       "string",
       "null"
      ]
     },
     "method": {
      "type": [
       "string",
       "null"
      ]
     },
     "userAgent": {
      "type": [
       "string",
       "null"
      ]
     }
    },
    "required": [
     "at",
     "rayId",
     "action",
     "source",
     "ruleId",
     "ip",
     "country",
     "asn",
     "host",
     "path",
     "method",
     "userAgent"
    ],
    "additionalProperties": false
   },
   "CloudflareIssue": {
    "type": "object",
    "properties": {
     "id": {
      "type": "string"
     },
     "kind": {
      "type": "string",
      "description": "`failing`, `client_errors`, `origin`, `slow`, `cache`, `cache_zone`, `firewall`, `hammer`, `bots`, `traffic_drop`, `traffic_spike`."
     },
     "kindLabel": {
      "type": "string"
     },
     "family": {
      "type": "string",
      "description": "`errors`, `latency`, `cache`, `security` or `traffic`."
     },
     "zoneId": {
      "type": "string"
     },
     "zone": {
      "type": "string"
     },
     "host": {
      "type": [
       "string",
       "null"
      ]
     },
     "path": {
      "type": [
       "string",
       "null"
      ]
     },
     "title": {
      "type": "string"
     },
     "severity": {
      "type": "string",
      "description": "`low`, `medium`, `high` or `critical`."
     },
     "status": {
      "type": "string",
      "description": "`open` or `resolved`."
     },
     "requests": {
      "type": "number",
      "description": "Requests (or firewall events) affected in the last check's window."
     },
     "share": {
      "type": "number",
      "description": "Of the zone's requests, 0–1."
     },
     "countries": {
      "type": "array",
      "items": {
       "type": "string"
      }
     },
     "startedAt": {
      "type": "number",
      "description": "Seconds."
     },
     "lastSeen": {
      "type": "number"
     },
     "resolvedAt": {
      "type": [
       "number",
       "null"
      ]
     },
     "figures": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/CloudflareFigure"
      }
     },
     "spark": {
      "type": "array",
      "items": {
       "type": "number"
      }
     },
     "sparkBaseline": {
      "type": "array",
      "items": {
       "type": "number"
      }
     },
     "why": {
      "type": "string"
     },
     "examples": {
      "type": "array",
      "items": {
       "type": "string"
      }
     },
     "incidentId": {
      "type": "string",
      "description": "The Incident view of the issue's current (or latest) episode: `cloudflare:issue:<id>:<start>`."
     }
    },
    "required": [
     "id",
     "kind",
     "kindLabel",
     "family",
     "zoneId",
     "zone",
     "host",
     "path",
     "title",
     "severity",
     "status",
     "requests",
     "share",
     "countries",
     "startedAt",
     "lastSeen",
     "resolvedAt",
     "figures",
     "spark",
     "sparkBaseline",
     "why",
     "examples",
     "incidentId"
    ],
    "additionalProperties": false
   },
   "CloudflareIssueDetail": {
    "type": "object",
    "properties": {
     "issue": {
      "$ref": "#/components/schemas/CloudflareIssue"
     },
     "from": {
      "type": "number",
      "description": "The window read, seconds, and its buckets."
     },
     "to": {
      "type": "number"
     },
     "xs": {
      "type": "array",
      "items": {
       "type": "number"
      }
     },
     "breakdowns": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/CloudflareBreakdown"
      }
     },
     "timing": {
      "anyOf": [
       {
        "$ref": "#/components/schemas/CloudflareTiming"
       },
       {
        "type": "null"
       }
      ],
      "description": "Null for a firewall issue, or where the plan has no timing."
     },
     "samples": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/CloudflareSample"
      },
      "description": "Sampled requests (a request issue)."
     },
     "firewall": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/CloudflareFirewallEvent"
      },
      "description": "Firewall events: the issue's own, or those on its route."
     },
     "links": {
      "$ref": "#/components/schemas/CloudflareLinks"
     },
     "notes": {
      "type": "array",
      "items": {
       "type": "string"
      }
     },
     "errors": {
      "type": "array",
      "items": {
       "type": "string"
      }
     }
    },
    "required": [
     "issue",
     "from",
     "to",
     "xs",
     "breakdowns",
     "timing",
     "samples",
     "firewall",
     "links",
     "notes",
     "errors"
    ],
    "additionalProperties": false
   },
   "CloudflareLinks": {
    "type": "object",
    "properties": {
     "logsQuery": {
      "type": [
       "string",
       "null"
      ],
      "description": "The Logs query for the issue's request lines; null without a Cloudflare log source that reads HTTP requests."
     },
     "logsFrom": {
      "type": "number",
      "description": "The window for Logs, milliseconds."
     },
     "logsTo": {
      "type": "number"
     },
     "dashboard": {
      "type": [
       "string",
       "null"
      ],
      "description": "The zone's traffic and security analytics in the Cloudflare dashboard."
     },
     "security": {
      "type": [
       "string",
       "null"
      ]
     }
    },
    "required": [
     "logsQuery",
     "logsFrom",
     "logsTo",
     "dashboard",
     "security"
    ],
    "additionalProperties": false
   },
   "CloudflareOptions": {
    "type": "object",
    "properties": {
     "connected": {
      "type": "boolean"
     },
     "zones": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/CloudflareZoneOption"
      }
     },
     "scripts": {
      "type": "array",
      "items": {
       "type": "string"
      }
     },
     "products": {
      "$ref": "#/components/schemas/CloudflareProducts",
      "description": "The products read: the log form offers only the streams that are on."
     },
     "errors": {
      "type": "array",
      "items": {
       "type": "string"
      }
     }
    },
    "required": [
     "connected",
     "zones",
     "scripts",
     "products",
     "errors"
    ],
    "additionalProperties": false
   },
   "CloudflarePlan": {
    "type": "object",
    "properties": {
     "zoneId": {
      "type": "string"
     },
     "zone": {
      "type": "string"
     },
     "plan": {
      "type": [
       "string",
       "null"
      ]
     },
     "retentionDays": {
      "type": "number"
     },
     "firewallRetentionDays": {
      "type": "number"
     },
     "paths": {
      "type": "boolean"
     },
     "edgeQuantiles": {
      "type": "boolean"
     },
     "originQuantiles": {
      "type": "boolean"
     },
     "bots": {
      "type": "boolean"
     },
     "samples": {
      "type": "boolean"
     },
     "firewall": {
      "type": "boolean"
     },
     "firewallSamples": {
      "type": "boolean"
     },
     "loadBalancing": {
      "type": "boolean"
     },
     "healthChecks": {
      "type": "boolean"
     },
     "detected": {
      "type": "boolean",
      "description": "False before detection: the flags are what is assumed."
     },
     "summary": {
      "type": "string",
      "description": "\"Enterprise · 30 days · paths, edge and origin timing, …\"."
     }
    },
    "required": [
     "zoneId",
     "zone",
     "plan",
     "retentionDays",
     "firewallRetentionDays",
     "paths",
     "edgeQuantiles",
     "originQuantiles",
     "bots",
     "samples",
     "firewall",
     "firewallSamples",
     "loadBalancing",
     "healthChecks",
     "detected",
     "summary"
    ],
    "additionalProperties": false
   },
   "CloudflareProbe": {
    "type": "object",
    "properties": {
     "connected": {
      "type": "boolean"
     },
     "zones": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/CloudflareProbeZone"
      }
     }
    },
    "required": [
     "connected",
     "zones"
    ],
    "additionalProperties": false
   },
   "CloudflareProbeAnswer": {
    "type": "object",
    "properties": {
     "key": {
      "type": "string"
     },
     "dataset": {
      "type": "string"
     },
     "fields": {
      "type": "string"
     },
     "ok": {
      "type": "boolean"
     },
     "rows": {
      "type": "number",
      "description": "Rows in the last hour, at most 1: whether there was any, never what."
     },
     "error": {
      "type": [
       "string",
       "null"
      ]
     }
    },
    "required": [
     "key",
     "dataset",
     "fields",
     "ok",
     "rows",
     "error"
    ],
    "additionalProperties": false
   },
   "CloudflareProbeLimit": {
    "type": "object",
    "properties": {
     "dataset": {
      "type": "string"
     },
     "enabled": {
      "type": [
       "boolean",
       "null"
      ]
     },
     "maxDurationSecs": {
      "type": [
       "number",
       "null"
      ]
     },
     "notOlderThanSecs": {
      "type": [
       "number",
       "null"
      ]
     }
    },
    "required": [
     "dataset",
     "enabled",
     "maxDurationSecs",
     "notOlderThanSecs"
    ],
    "additionalProperties": false
   },
   "CloudflareProbeZone": {
    "type": "object",
    "properties": {
     "id": {
      "type": "string"
     },
     "name": {
      "type": "string"
     },
     "plan": {
      "type": [
       "string",
       "null"
      ]
     },
     "planId": {
      "type": [
       "string",
       "null"
      ]
     },
     "planError": {
      "type": [
       "string",
       "null"
      ]
     },
     "limits": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/CloudflareProbeLimit"
      }
     },
     "limitsError": {
      "type": [
       "string",
       "null"
      ]
     },
     "probes": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/CloudflareProbeAnswer"
      }
     },
     "offers": {
      "$ref": "#/components/schemas/CloudflarePlan",
      "description": "What the detection makes of it."
     }
    },
    "required": [
     "id",
     "name",
     "plan",
     "planId",
     "planError",
     "limits",
     "limitsError",
     "probes",
     "offers"
    ],
    "additionalProperties": false
   },
   "CloudflareProducts": {
    "type": "object",
    "properties": {
     "zones": {
      "type": "boolean"
     },
     "httpLogs": {
      "type": "boolean"
     },
     "pages": {
      "type": "boolean"
     },
     "workers": {
      "type": "boolean"
     },
     "workersLogs": {
      "type": "boolean"
     },
     "workerAnalytics": {
      "type": "boolean"
     }
    },
    "required": [
     "zones",
     "httpLogs",
     "pages",
     "workers",
     "workersLogs",
     "workerAnalytics"
    ],
    "additionalProperties": false
   },
   "CloudflareSample": {
    "type": "object",
    "properties": {
     "at": {
      "type": "string",
      "description": "RFC 3339."
     },
     "rayId": {
      "type": "string"
     },
     "host": {
      "type": "string"
     },
     "path": {
      "type": "string"
     },
     "method": {
      "type": "string"
     },
     "status": {
      "type": "number"
     },
     "originStatus": {
      "type": [
       "number",
       "null"
      ]
     },
     "cache": {
      "type": [
       "string",
       "null"
      ]
     },
     "country": {
      "type": [
       "string",
       "null"
      ]
     },
     "colo": {
      "type": [
       "string",
       "null"
      ]
     },
     "ttfbMs": {
      "type": [
       "number",
       "null"
      ]
     },
     "originMs": {
      "type": [
       "number",
       "null"
      ]
     },
     "userAgent": {
      "type": [
       "string",
       "null"
      ]
     }
    },
    "required": [
     "at",
     "rayId",
     "host",
     "path",
     "method",
     "status",
     "originStatus",
     "cache",
     "country",
     "colo",
     "ttfbMs",
     "originMs",
     "userAgent"
    ],
    "additionalProperties": false
   },
   "CloudflareScreen": {
    "type": "object",
    "properties": {
     "connected": {
      "type": "boolean",
      "description": "False when the project has not connected Cloudflare; nothing else is read."
     },
     "account": {
      "type": [
       "string",
       "null"
      ]
     },
     "range": {
      "type": "string",
      "description": "The preset read, or `custom`."
     },
     "view": {
      "type": "string",
      "description": "The view read."
     },
     "from": {
      "type": "number",
      "description": "The window and its bucket width, seconds."
     },
     "to": {
      "type": "number"
     },
     "step": {
      "type": "number"
     },
     "xs": {
      "type": "array",
      "items": {
       "type": "number"
      },
      "description": "Bucket starts, seconds."
     },
     "baselineFrom": {
      "type": [
       "number",
       "null"
      ],
      "description": "The baseline window, seconds, and what it is (\"the same time yesterday\"); null without one."
     },
     "baselineTo": {
      "type": [
       "number",
       "null"
      ]
     },
     "baselineLabel": {
      "type": [
       "string",
       "null"
      ]
     },
     "header": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/CloudflareStat"
      }
     },
     "issues": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/CloudflareIssue"
      },
      "description": "Issues view: open first, then resolved in the window."
     },
     "check": {
      "$ref": "#/components/schemas/CloudflareCheck"
     },
     "urls": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/CloudflareUrl"
      },
      "description": "URLs view: busiest first."
     },
     "urlsTruncated": {
      "type": "boolean",
      "description": "A path read came back full, so quiet paths may be missing."
     },
     "security": {
      "anyOf": [
       {
        "$ref": "#/components/schemas/CloudflareSecurity"
       },
       {
        "type": "null"
       }
      ],
      "description": "Security view."
     },
     "plans": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/CloudflarePlan"
      }
     },
     "traffic": {
      "$ref": "#/components/schemas/CloudflareTraffic",
      "description": "Traffic view."
     },
     "workersSeries": {
      "$ref": "#/components/schemas/CloudflareWorkerSeries"
     },
     "totals": {
      "$ref": "#/components/schemas/CloudflareTotals"
     },
     "zones": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/CloudflareZone"
      },
      "description": "The zones read, busiest first."
     },
     "workers": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/CloudflareWorker"
      },
      "description": "The Workers that ran, busiest first."
     },
     "deployments": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/CloudflareDeployment"
      },
      "description": "Pages and Workers deployments in the window, newest first."
     },
     "breakdowns": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/CloudflareTrafficBreakdown"
      },
      "description": "Traffic view: the requests by host, country, status code, cache status, device, protocol, content type and path, with the page's filters; empty where the plans offer none."
     },
     "bandwidth": {
      "$ref": "#/components/schemas/CloudflareBandwidth",
      "description": "Traffic view: the bandwidth; null where the plans do not sum response bytes."
     },
     "facets": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/CloudflareFacet"
      }
     },
     "products": {
      "$ref": "#/components/schemas/CloudflareProducts",
      "description": "The products read; a section whose product is off is not shown."
     },
     "notes": {
      "type": "array",
      "items": {
       "type": "string"
      },
      "description": "What a plan or retention left out, in sentences."
     },
     "errors": {
      "type": "array",
      "items": {
       "type": "string"
      },
      "description": "Parts that failed, each a sentence naming what to fix."
     },
     "readAt": {
      "type": "number",
      "description": "When the figures were read from Cloudflare, seconds: the local copy's time when the page came from it (`copy.rs`)."
     }
    },
    "required": [
     "connected",
     "account",
     "range",
     "view",
     "from",
     "to",
     "step",
     "xs",
     "baselineFrom",
     "baselineTo",
     "baselineLabel",
     "header",
     "issues",
     "check",
     "urls",
     "urlsTruncated",
     "security",
     "plans",
     "traffic",
     "workersSeries",
     "totals",
     "zones",
     "workers",
     "deployments",
     "facets",
     "products",
     "notes",
     "errors"
    ],
    "additionalProperties": false
   },
   "CloudflareSecurity": {
    "type": "object",
    "properties": {
     "total": {
      "type": "number"
     },
     "baselineTotal": {
      "type": [
       "number",
       "null"
      ]
     },
     "stopped": {
      "type": "number"
     },
     "actions": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/CloudflareSecurityRow"
      }
     },
     "rules": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/CloudflareSecurityRow"
      }
     },
     "countries": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/CloudflareSecurityRow"
      }
     },
     "ips": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/CloudflareSecurityRow"
      }
     },
     "paths": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/CloudflareSecurityRow"
      }
     },
     "networks": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/CloudflareSecurityRow"
      }
     }
    },
    "required": [
     "total",
     "baselineTotal",
     "stopped",
     "actions",
     "rules",
     "countries",
     "ips",
     "paths",
     "networks"
    ],
    "additionalProperties": false
   },
   "CloudflareSecurityRow": {
    "type": "object",
    "properties": {
     "key": {
      "type": "string"
     },
     "label": {
      "type": [
       "string",
       "null"
      ]
     },
     "count": {
      "type": "number"
     },
     "baseline": {
      "type": [
       "number",
       "null"
      ]
     },
     "stopped": {
      "type": "number",
      "description": "Of `count`, events that stopped the request."
     }
    },
    "required": [
     "key",
     "label",
     "count",
     "baseline",
     "stopped"
    ],
    "additionalProperties": false
   },
   "CloudflareStat": {
    "type": "object",
    "properties": {
     "id": {
      "type": "string",
      "description": "`requests`, `errors`, `origin`, `ttfb`, `cache` or `blocked`."
     },
     "label": {
      "type": "string"
     },
     "value": {
      "type": [
       "number",
       "null"
      ]
     },
     "baseline": {
      "type": [
       "number",
       "null"
      ]
     },
     "unit": {
      "type": "string",
      "description": "`count`, `share` (0–1) or `ms`."
     },
     "better": {
      "type": "string",
      "description": "Whether a rise is good (`up`), bad (`down`) or neither (`none`)."
     },
     "spark": {
      "type": "array",
      "items": {
       "type": [
        "number",
        "null"
       ]
      }
     },
     "sparkBaseline": {
      "type": "array",
      "items": {
       "type": [
        "number",
        "null"
       ]
      }
     }
    },
    "required": [
     "id",
     "label",
     "value",
     "baseline",
     "unit",
     "better",
     "spark",
     "sparkBaseline"
    ],
    "additionalProperties": false
   },
   "CloudflareTiming": {
    "type": "object",
    "properties": {
     "requests": {
      "type": "array",
      "items": {
       "type": "number"
      }
     },
     "edgeP50": {
      "type": "array",
      "items": {
       "type": [
        "number",
        "null"
       ]
      }
     },
     "edgeP95": {
      "type": "array",
      "items": {
       "type": [
        "number",
        "null"
       ]
      }
     },
     "originP50": {
      "type": "array",
      "items": {
       "type": [
        "number",
        "null"
       ]
      }
     },
     "originP95": {
      "type": "array",
      "items": {
       "type": [
        "number",
        "null"
       ]
      }
     }
    },
    "required": [
     "requests",
     "edgeP50",
     "edgeP95",
     "originP50",
     "originP95"
    ],
    "additionalProperties": false
   },
   "CloudflareTotals": {
    "type": "object",
    "properties": {
     "requests": {
      "type": "number"
     },
     "clientErrors": {
      "type": "number"
     },
     "serverErrors": {
      "type": "number"
     },
     "cached": {
      "type": "number"
     },
     "workerRequests": {
      "type": "number"
     },
     "workerErrors": {
      "type": "number"
     }
    },
    "required": [
     "requests",
     "clientErrors",
     "serverErrors",
     "cached",
     "workerRequests",
     "workerErrors"
    ],
    "additionalProperties": false
   },
   "CloudflareTraffic": {
    "type": "object",
    "properties": {
     "requests": {
      "type": "array",
      "items": {
       "type": "number"
      }
     },
     "clientErrors": {
      "type": "array",
      "items": {
       "type": "number"
      }
     },
     "serverErrors": {
      "type": "array",
      "items": {
       "type": "number"
      }
     },
     "cached": {
      "type": "array",
      "items": {
       "type": "number"
      }
     },
     "ttfbP50": {
      "type": "array",
      "items": {
       "type": [
        "number",
        "null"
       ]
      },
      "description": "Edge TTFB, ms, request-weighted across zones; null where nothing was measured."
     },
     "ttfbP95": {
      "type": "array",
      "items": {
       "type": [
        "number",
        "null"
       ]
      }
     }
    },
    "required": [
     "requests",
     "clientErrors",
     "serverErrors",
     "cached",
     "ttfbP50",
     "ttfbP95"
    ],
    "additionalProperties": false
   },
   "CloudflareTrafficBreakdown": {
    "type": "object",
    "properties": {
     "id": {
      "type": "string",
      "description": "`hosts`, `countries`, `statuses`, `cache`, `devices`, `protocols`, `contentTypes` or `paths`."
     },
     "label": {
      "type": "string"
     },
     "filter": {
      "type": [
       "string",
       "null"
      ],
      "description": "The page filter a row sets (`hosts`, `countries`, `status`, `cache`, `devices`); null where there is none."
     },
     "rows": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/CloudflareTrafficRow"
      }
     }
    },
    "required": [
     "id",
     "label",
     "filter",
     "rows"
    ],
    "additionalProperties": false
   },
   "CloudflareTrafficRow": {
    "type": "object",
    "properties": {
     "key": {
      "type": "string",
      "description": "`api.example.com`, `US`, `503`, `hit`, `HTTP/2`, `html`, `example.com/orders/:id`."
     },
     "requests": {
      "type": "number"
     },
     "share": {
      "type": [
       "number",
       "null"
      ],
      "description": "Of the requests the breakdowns read (the page's filters applied), 0–1."
     },
     "bytes": {
      "type": [
       "number",
       "null"
      ],
      "description": "Edge response bytes, where the plan sums them."
     },
     "value": {
      "type": [
       "string",
       "null"
      ],
      "description": "The value its `filter` takes: the status class (`5xx`) for a status code."
     }
    },
    "required": [
     "key",
     "requests",
     "share",
     "bytes",
     "value"
    ],
    "additionalProperties": false
   },
   "CloudflareUrl": {
    "type": "object",
    "properties": {
     "zone": {
      "type": "string"
     },
     "host": {
      "type": "string"
     },
     "path": {
      "type": "string"
     },
     "requests": {
      "type": "number"
     },
     "baselineRequests": {
      "type": [
       "number",
       "null"
      ]
     },
     "errorRate": {
      "type": [
       "number",
       "null"
      ],
      "description": "5xx share, 0–1."
     },
     "baselineErrorRate": {
      "type": [
       "number",
       "null"
      ]
     },
     "clientErrorRate": {
      "type": [
       "number",
       "null"
      ]
     },
     "originErrors": {
      "type": "number",
      "description": "520–526 and 530."
     },
     "p95": {
      "type": [
       "number",
       "null"
      ],
      "description": "Edge TTFB p95, ms."
     },
     "baselineP95": {
      "type": [
       "number",
       "null"
      ]
     },
     "originP95": {
      "type": [
       "number",
       "null"
      ]
     },
     "cacheHit": {
      "type": [
       "number",
       "null"
      ],
      "description": "Cache hit ratio of cacheable requests, 0–1."
     },
     "baselineCacheHit": {
      "type": [
       "number",
       "null"
      ]
     },
     "examples": {
      "type": "array",
      "items": {
       "type": "string"
      }
     },
     "issue": {
      "type": [
       "string",
       "null"
      ],
      "description": "The open issue on this path, if any."
     }
    },
    "required": [
     "zone",
     "host",
     "path",
     "requests",
     "baselineRequests",
     "errorRate",
     "baselineErrorRate",
     "clientErrorRate",
     "originErrors",
     "p95",
     "baselineP95",
     "originP95",
     "cacheHit",
     "baselineCacheHit",
     "examples",
     "issue"
    ],
    "additionalProperties": false
   },
   "CloudflareUrlDetail": {
    "type": "object",
    "properties": {
     "zone": {
      "type": "string"
     },
     "host": {
      "type": "string"
     },
     "path": {
      "type": "string"
     },
     "from": {
      "type": "number",
      "description": "The window read, seconds, and its buckets."
     },
     "to": {
      "type": "number"
     },
     "xs": {
      "type": "array",
      "items": {
       "type": "number"
      }
     },
     "baselineLabel": {
      "type": [
       "string",
       "null"
      ],
      "description": "What the figures are compared with (\"the same time yesterday\"); null without a baseline."
     },
     "figures": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/CloudflareStat"
      },
      "description": "The path's requests, 5xx rate, origin errors, p95 TTFB, cache hit and firewall stops, against the baseline."
     },
     "issue": {
      "anyOf": [
       {
        "$ref": "#/components/schemas/CloudflareIssue"
       },
       {
        "type": "null"
       }
      ],
      "description": "The open issue on this path, if any."
     },
     "breakdowns": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/CloudflareBreakdown"
      }
     },
     "timing": {
      "anyOf": [
       {
        "$ref": "#/components/schemas/CloudflareTiming"
       },
       {
        "type": "null"
       }
      ]
     },
     "samples": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/CloudflareSample"
      }
     },
     "firewall": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/CloudflareFirewallEvent"
      },
      "description": "Firewall events on the path."
     },
     "links": {
      "$ref": "#/components/schemas/CloudflareLinks"
     },
     "notes": {
      "type": "array",
      "items": {
       "type": "string"
      }
     },
     "errors": {
      "type": "array",
      "items": {
       "type": "string"
      }
     }
    },
    "required": [
     "zone",
     "host",
     "path",
     "from",
     "to",
     "xs",
     "baselineLabel",
     "figures",
     "issue",
     "breakdowns",
     "timing",
     "samples",
     "firewall",
     "links",
     "notes",
     "errors"
    ],
    "additionalProperties": false
   },
   "CloudflareWorker": {
    "type": "object",
    "properties": {
     "script": {
      "type": "string"
     },
     "requests": {
      "type": "number"
     },
     "errors": {
      "type": "number"
     },
     "errorRate": {
      "type": [
       "number",
       "null"
      ]
     },
     "cpuP50": {
      "type": [
       "number",
       "null"
      ],
      "description": "CPU time per invocation, ms."
     },
     "cpuP99": {
      "type": [
       "number",
       "null"
      ]
     },
     "trend": {
      "type": "array",
      "items": {
       "type": "number"
      }
     }
    },
    "required": [
     "script",
     "requests",
     "errors",
     "errorRate",
     "cpuP50",
     "cpuP99",
     "trend"
    ],
    "additionalProperties": false
   },
   "CloudflareWorkerSeries": {
    "type": "object",
    "properties": {
     "requests": {
      "type": "array",
      "items": {
       "type": "number"
      }
     },
     "errors": {
      "type": "array",
      "items": {
       "type": "number"
      }
     },
     "cpuP50": {
      "type": "array",
      "items": {
       "type": [
        "number",
        "null"
       ]
      },
      "description": "CPU time p50, ms, request-weighted across scripts."
     }
    },
    "required": [
     "requests",
     "errors",
     "cpuP50"
    ],
    "additionalProperties": false
   },
   "CloudflareZone": {
    "type": "object",
    "properties": {
     "id": {
      "type": "string"
     },
     "name": {
      "type": "string"
     },
     "requests": {
      "type": "number"
     },
     "clientErrorRate": {
      "type": [
       "number",
       "null"
      ],
      "description": "Shares of requests, 0–1; null without requests."
     },
     "serverErrorRate": {
      "type": [
       "number",
       "null"
      ]
     },
     "cacheHitRatio": {
      "type": [
       "number",
       "null"
      ]
     },
     "ttfbP50": {
      "type": [
       "number",
       "null"
      ],
      "description": "Edge TTFB over the window, ms."
     },
     "ttfbP95": {
      "type": [
       "number",
       "null"
      ]
     },
     "trend": {
      "type": "array",
      "items": {
       "type": "number"
      },
      "description": "Requests per bucket."
     }
    },
    "required": [
     "id",
     "name",
     "requests",
     "clientErrorRate",
     "serverErrorRate",
     "cacheHitRatio",
     "ttfbP50",
     "ttfbP95",
     "trend"
    ],
    "additionalProperties": false
   },
   "CloudflareZoneOption": {
    "type": "object",
    "properties": {
     "id": {
      "type": "string"
     },
     "name": {
      "type": "string"
     }
    },
    "required": [
     "id",
     "name"
    ],
    "additionalProperties": false
   },
   "ConfigSaved": {
    "type": "object",
    "properties": {
     "restartRequired": {
      "type": "boolean"
     }
    },
    "required": [
     "restartRequired"
    ],
    "additionalProperties": false
   },
   "Connected": {
    "type": "object",
    "properties": {
     "label": {
      "type": "string",
      "description": "Whose account it connected as."
     }
    },
    "required": [
     "label"
    ],
    "additionalProperties": false
   },
   "ConnectedIntegration": {
    "type": "object",
    "properties": {
     "id": {
      "type": "string"
     },
     "name": {
      "type": "string"
     },
     "health": {
      "type": "string"
     },
     "syncStatus": {
      "type": [
       "string",
       "null"
      ]
     },
     "lastSync": {
      "type": [
       "string",
       "null"
      ]
     },
     "lastError": {
      "type": [
       "string",
       "null"
      ]
     }
    },
    "required": [
     "id",
     "name",
     "health",
     "syncStatus",
     "lastSync",
     "lastError"
    ],
    "additionalProperties": false
   },
   "ConnectorsArgs": {
    "type": "object",
    "properties": {
     "system": {
      "type": "string",
      "description": "A Claude Code system id (`claude-code.claude-seq`) or profile (`claude-seq`); empty or `default` for the service's own."
     },
     "refresh": {
      "type": "boolean",
      "description": "Ask the CLI again rather than answer from the ten-minute cache."
     }
    },
    "required": [
     "system"
    ],
    "additionalProperties": false
   },
   "ContainerAction": {
    "type": "object",
    "properties": {
     "done": {
      "type": "boolean"
     },
     "needsConfirmation": {
      "type": "boolean",
      "description": "Nothing was done: the container is not DevDash's, so send `confirm: true`."
     },
     "name": {
      "type": "string"
     }
    },
    "required": [
     "done",
     "needsConfirmation",
     "name"
    ],
    "additionalProperties": false
   },
   "ContentCommit": {
    "type": "object",
    "properties": {
     "sha": {
      "type": "string"
     },
     "shortSha": {
      "type": "string"
     },
     "subject": {
      "type": "string"
     },
     "author": {
      "type": "string"
     },
     "at": {
      "type": "string",
      "description": "RFC 3339."
     },
     "merge": {
      "type": "boolean"
     },
     "pull": {
      "anyOf": [
       {
        "$ref": "#/components/schemas/BranchPull"
       },
       {
        "type": "null"
       }
      ],
      "description": "The pull request it landed through, where one is stored."
     }
    },
    "required": [
     "sha",
     "shortSha",
     "subject",
     "author",
     "at",
     "merge",
     "pull"
    ],
    "additionalProperties": false
   },
   "ContentIssue": {
    "type": "object",
    "properties": {
     "key": {
      "type": "string"
     },
     "title": {
      "type": [
       "string",
       "null"
      ],
      "description": "From the release's scope, or from the stored issue when it is outside it."
     },
     "status": {
      "type": [
       "string",
       "null"
      ]
     },
     "state": {
      "type": "string",
      "description": "`included`, `missing` or `unplanned`."
     },
     "commits": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/ContentCommit"
      },
      "description": "Newest first."
     },
     "pulls": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/BranchPull"
      }
     }
    },
    "required": [
     "key",
     "title",
     "status",
     "state",
     "commits",
     "pulls"
    ],
    "additionalProperties": false
   },
   "ContentRef": {
    "type": "object",
    "properties": {
     "name": {
      "type": "string",
      "description": "`v1.2.0`, `origin/release/1.2.0`, `main`, or what a person typed."
     },
     "sha": {
      "type": "string",
      "description": "The commit the range was read at."
     },
     "how": {
      "type": "string",
      "description": "`tag`, `branch`, `production`, `previous`, `asOf`, `mergeBase` or `chosen`."
     },
     "note": {
      "type": "string",
      "description": "Why this ref, in a sentence."
     }
    },
    "required": [
     "name",
     "sha",
     "how",
     "note"
    ],
    "additionalProperties": false
   },
   "CostOutcomes": {
    "type": "object",
    "properties": {
     "totalUsd": {
      "type": "number",
      "description": "US dollars, as the CLI reported."
     },
     "tokensIn": {
      "type": "number"
     },
     "tokensOut": {
      "type": "number"
     },
     "pricedSteps": {
      "type": "number",
      "description": "Steps with a cost, and without one."
     },
     "unpricedSteps": {
      "type": "number"
     },
     "perMergedPull": {
      "type": [
       "number",
       "null"
      ]
     }
    },
    "required": [
     "totalUsd",
     "tokensIn",
     "tokensOut",
     "pricedSteps",
     "unpricedSteps",
     "perMergedPull"
    ],
    "additionalProperties": false
   },
   "Created": {
    "type": "object",
    "properties": {
     "id": {
      "type": "string"
     },
     "slug": {
      "type": "string"
     }
    },
    "required": [
     "id",
     "slug"
    ],
    "additionalProperties": false
   },
   "CreatedGroup": {
    "type": "object",
    "properties": {
     "id": {
      "type": "string"
     }
    },
    "required": [
     "id"
    ],
    "additionalProperties": false
   },
   "CreateProject": {
    "type": "object",
    "properties": {
     "name": {
      "type": "string"
     },
     "icon": {
      "type": [
       "string",
       "null"
      ],
      "description": "A short name from the site's icon set, e.g. `folder` or `rocket`."
     },
     "color": {
      "type": [
       "string",
       "null"
      ],
      "description": "A CSS colour, e.g. `#7c5cff`."
     }
    },
    "required": [
     "name",
     "icon",
     "color"
    ],
    "additionalProperties": false
   },
   "DatabaseColumn": {
    "type": "object",
    "properties": {
     "name": {
      "type": "string"
     },
     "kind": {
      "type": "string",
      "description": "The declared type, in the engine's words."
     }
    },
    "required": [
     "name",
     "kind"
    ],
    "additionalProperties": false
   },
   "DatabasePreset": {
    "type": "object",
    "properties": {
     "id": {
      "type": "string"
     },
     "label": {
      "type": "string"
     },
     "engineNote": {
      "type": "string"
     },
     "description": {
      "type": "string"
     },
     "config": {
      "$ref": "#/components/schemas/JsonValue",
      "description": "A source's settings to start the editor from."
     }
    },
    "required": [
     "id",
     "label",
     "engineNote",
     "description",
     "config"
    ],
    "additionalProperties": false
   },
   "DatabaseQueryResult": {
    "type": "object",
    "properties": {
     "columns": {
      "type": "array",
      "items": {
       "type": "string"
      }
     },
     "rows": {
      "type": "array",
      "items": {
       "type": "array",
       "items": {
        "$ref": "#/components/schemas/JsonValue"
       }
      },
      "description": "One array per row, in `columns` order; at most `limit`."
     },
     "more": {
      "type": "boolean",
      "description": "The query returned more rows than `limit`; only the first are here."
     },
     "limit": {
      "type": "number"
     },
     "elapsedMs": {
      "type": "number"
     },
     "error": {
      "type": [
       "string",
       "null"
      ],
      "description": "Why it didn't run: refused by the guard, or the database's own error."
     }
    },
    "required": [
     "columns",
     "rows",
     "more",
     "limit",
     "elapsedMs",
     "error"
    ],
    "additionalProperties": false
   },
   "DatabaseSchema": {
    "type": "object",
    "properties": {
     "tables": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/DatabaseTable"
      }
     },
     "error": {
      "type": [
       "string",
       "null"
      ],
      "description": "Why the schema could not be read; the editor still works without it."
     }
    },
    "required": [
     "tables",
     "error"
    ],
    "additionalProperties": false
   },
   "DatabaseSource": {
    "type": "object",
    "properties": {
     "id": {
      "type": "string"
     },
     "label": {
      "type": "string"
     },
     "paused": {
      "type": "boolean"
     },
     "config": {
      "$ref": "#/components/schemas/JsonValue",
      "description": "The saved settings, as `database.source.save` takes them."
     },
     "lastAttempt": {
      "type": [
       "string",
       "null"
      ],
      "description": "RFC 3339: when a sync last ran it, whether or not it worked."
     },
     "lastRows": {
      "type": [
       "number",
       "null"
      ],
      "description": "Rows the last run read."
     },
     "lastError": {
      "type": [
       "string",
       "null"
      ],
      "description": "The last run's failure, in the driver's words."
     },
     "cursor": {
      "anyOf": [
       {
        "$ref": "#/components/schemas/JsonValue"
       },
       {
        "type": "null"
       }
      ],
      "description": "Where it has read up to: `{ value }`, plus `secondary` for a timestamp cursor. Absent until the first run."
     },
     "rowsToday": {
      "type": "number",
      "description": "Rows stored with a timestamp since local midnight."
     },
     "rowsTotal": {
      "type": "number"
     }
    },
    "required": [
     "id",
     "label",
     "paused",
     "config",
     "lastAttempt",
     "lastRows",
     "lastError",
     "cursor",
     "rowsToday",
     "rowsTotal"
    ],
    "additionalProperties": false
   },
   "DatabaseSources": {
    "type": "object",
    "properties": {
     "connection": {
      "type": "string",
      "description": "`database` or `snowflake`: the integration these sources belong to."
     },
     "connected": {
      "type": "boolean"
     },
     "engine": {
      "type": [
       "string",
       "null"
      ],
      "description": "`mysql`, `postgres` or `snowflake`."
     },
     "sources": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/DatabaseSource"
      }
     },
     "presets": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/DatabasePreset"
      }
     },
     "timeoutSecs": {
      "type": "number",
      "description": "The hard limit on one query, in seconds."
     },
     "previewRows": {
      "type": "number",
      "description": "Rows a test reads."
     }
    },
    "required": [
     "connection",
     "connected",
     "engine",
     "sources",
     "presets",
     "timeoutSecs",
     "previewRows"
    ],
    "additionalProperties": false
   },
   "DatabaseTable": {
    "type": "object",
    "properties": {
     "name": {
      "type": "string"
     },
     "columns": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/DatabaseColumn"
      }
     }
    },
    "required": [
     "name",
     "columns"
    ],
    "additionalProperties": false
   },
   "DatabaseTestResult": {
    "type": "object",
    "properties": {
     "columns": {
      "type": "array",
      "items": {
       "type": "string"
      }
     },
     "rows": {
      "type": "array",
      "items": {
       "type": "array",
       "items": {
        "$ref": "#/components/schemas/JsonValue"
       }
      },
      "description": "One array per row, in `columns` order."
     },
     "events": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/JsonValue"
      },
      "description": "The events those rows would become: `{ title, severity, type, timestamp, entityId, actor, url, fingerprint }`. Empty until the mapping is complete."
     },
     "errors": {
      "type": "array",
      "items": {
       "type": "string"
      },
      "description": "What stopped the query or the mapping, as sentences."
     }
    },
    "required": [
     "columns",
     "rows",
     "events",
     "errors"
    ],
    "additionalProperties": false
   },
   "DatastoreColumn": {
    "type": "object",
    "properties": {
     "name": {
      "type": "string"
     },
     "kind": {
      "type": "string"
     },
     "nullable": {
      "type": [
       "boolean",
       "null"
      ]
     },
     "key": {
      "type": [
       "string",
       "null"
      ]
     }
    },
    "required": [
     "name",
     "kind",
     "nullable",
     "key"
    ],
    "additionalProperties": false
   },
   "DatastoreField": {
    "type": "object",
    "properties": {
     "key": {
      "type": "string"
     },
     "label": {
      "type": "string"
     },
     "input": {
      "type": "string",
      "description": "`text`, `number`, `password`, `textarea` or `select`."
     },
     "required": {
      "type": "boolean"
     },
     "secret": {
      "type": "boolean",
      "description": "Held in the keychain, not in the settings."
     },
     "placeholder": {
      "type": [
       "string",
       "null"
      ]
     },
     "help": {
      "type": [
       "string",
       "null"
      ]
     },
     "options": {
      "type": "array",
      "items": {
       "type": "string"
      },
      "description": "For `select`."
     }
    },
    "required": [
     "key",
     "label",
     "input",
     "required",
     "secret",
     "placeholder",
     "help",
     "options"
    ],
    "additionalProperties": false
   },
   "DatastoreFilter": {
    "type": "object",
    "properties": {
     "column": {
      "type": "string"
     },
     "op": {
      "type": "string",
      "description": "`=`, `!=`, `contains`, `>`, `<`, `>=`, `<=`, `in` (a comma-separated list), `null`, `notnull`."
     },
     "value": {
      "type": "string"
     }
    },
    "required": [
     "column",
     "op",
     "value"
    ],
    "additionalProperties": false
   },
   "DatastoreIndex": {
    "type": "object",
    "properties": {
     "name": {
      "type": "string"
     },
     "columns": {
      "type": "array",
      "items": {
       "type": "string"
      }
     },
     "unique": {
      "type": "boolean"
     },
     "definition": {
      "type": [
       "string",
       "null"
      ]
     }
    },
    "required": [
     "name",
     "columns",
     "unique",
     "definition"
    ],
    "additionalProperties": false
   },
   "DatastoreItem": {
    "type": "object",
    "properties": {
     "id": {
      "type": "string"
     },
     "kind": {
      "type": "string"
     },
     "kindLabel": {
      "type": "string"
     },
     "name": {
      "type": "string"
     },
     "config": {
      "$ref": "#/components/schemas/JsonValue",
      "description": "The settings that are not secret."
     },
     "linked": {
      "type": "boolean",
      "description": "From an integration: read-only here."
     },
     "hasSecret": {
      "type": "boolean"
     },
     "active": {
      "type": "boolean",
      "description": "The server answered a probe just now (or lately): only these are listed in the sidebar."
     },
     "problem": {
      "type": [
       "string",
       "null"
      ],
      "description": "Why it is not active, in a sentence."
     }
    },
    "required": [
     "id",
     "kind",
     "kindLabel",
     "name",
     "config",
     "linked",
     "hasSecret",
     "active",
     "problem"
    ],
    "additionalProperties": false
   },
   "DatastoreKind": {
    "type": "object",
    "properties": {
     "id": {
      "type": "string"
     },
     "label": {
      "type": "string"
     },
     "shape": {
      "type": "string",
      "description": "What it holds, in a word: `rows`, `documents`, `keys`."
     },
     "language": {
      "type": "string",
      "description": "`sql`, `document` or `keys`: how the query box is written."
     },
     "queryHint": {
      "type": "string"
     },
     "fields": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/DatastoreField"
      }
     }
    },
    "required": [
     "id",
     "label",
     "shape",
     "language",
     "queryHint",
     "fields"
    ],
    "additionalProperties": false
   },
   "DatastoreList": {
    "type": "object",
    "properties": {
     "kinds": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/DatastoreKind"
      }
     },
     "stores": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/DatastoreItem"
      }
     }
    },
    "required": [
     "kinds",
     "stores"
    ],
    "additionalProperties": false
   },
   "DatastoreNode": {
    "type": "object",
    "properties": {
     "name": {
      "type": "string"
     },
     "kind": {
      "type": "string"
     },
     "path": {
      "type": "array",
      "items": {
       "type": "string"
      }
     },
     "detail": {
      "type": [
       "string",
       "null"
      ]
     },
     "expandable": {
      "type": "boolean"
     }
    },
    "required": [
     "name",
     "kind",
     "path",
     "detail",
     "expandable"
    ],
    "additionalProperties": false
   },
   "DatastoreRemoved": {
    "type": "object",
    "properties": {
     "removed": {
      "type": "boolean"
     }
    },
    "required": [
     "removed"
    ],
    "additionalProperties": false
   },
   "DatastoreSaved": {
    "type": "object",
    "properties": {
     "id": {
      "type": "string"
     }
    },
    "required": [
     "id"
    ],
    "additionalProperties": false
   },
   "DatastoreSort": {
    "type": "object",
    "properties": {
     "column": {
      "type": "string"
     },
     "descending": {
      "type": "boolean"
     }
    },
    "required": [
     "column",
     "descending"
    ],
    "additionalProperties": false
   },
   "DatastoreState": {
    "type": "object",
    "properties": {
     "values": {
      "type": "object",
      "additionalProperties": {
       "type": "string"
      },
      "description": "Every kept value by key; the web app owns what a key means and what its JSON holds."
     }
    },
    "required": [
     "values"
    ],
    "additionalProperties": false
   },
   "DatastoreStateSaved": {
    "type": "object",
    "properties": {
     "saved": {
      "type": "boolean"
     }
    },
    "required": [
     "saved"
    ],
    "additionalProperties": false
   },
   "DatastoreStructure": {
    "type": "object",
    "properties": {
     "columns": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/DatastoreColumn"
      }
     },
     "indexes": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/DatastoreIndex"
      }
     },
     "rowsEstimate": {
      "type": [
       "number",
       "null"
      ]
     },
     "notes": {
      "type": "array",
      "items": {
       "type": "string"
      }
     },
     "error": {
      "type": [
       "string",
       "null"
      ]
     }
    },
    "required": [
     "columns",
     "indexes",
     "rowsEstimate",
     "notes",
     "error"
    ],
    "additionalProperties": false
   },
   "DatastoreTable": {
    "type": "object",
    "properties": {
     "columns": {
      "type": "array",
      "items": {
       "type": "string"
      }
     },
     "rows": {
      "type": "array",
      "items": {
       "type": "array",
       "items": {
        "$ref": "#/components/schemas/JsonValue"
       }
      },
      "description": "One array per row, in `columns` order."
     },
     "more": {
      "type": "boolean",
      "description": "More follow this page."
     },
     "elapsedMs": {
      "type": "number"
     },
     "error": {
      "type": [
       "string",
       "null"
      ],
      "description": "Why it did not run: refused, or the store's own error."
     }
    },
    "required": [
     "columns",
     "rows",
     "more",
     "elapsedMs",
     "error"
    ],
    "additionalProperties": false
   },
   "DatastoreTested": {
    "type": "object",
    "properties": {
     "ok": {
      "type": "boolean"
     },
     "message": {
      "type": "string",
      "description": "What answered, or why not."
     }
    },
    "required": [
     "ok",
     "message"
    ],
    "additionalProperties": false
   },
   "DatastoreTree": {
    "type": "object",
    "properties": {
     "nodes": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/DatastoreNode"
      }
     },
     "error": {
      "type": [
       "string",
       "null"
      ]
     }
    },
    "required": [
     "nodes",
     "error"
    ],
    "additionalProperties": false
   },
   "DeliveredPull": {
    "type": "object",
    "properties": {
     "issue": {
      "type": "string",
      "description": "The release issue this pull request names."
     },
     "title": {
      "type": "string"
     },
     "repository": {
      "type": "string"
     },
     "state": {
      "type": "string"
     },
     "url": {
      "type": [
       "string",
       "null"
      ]
     },
     "at": {
      "type": "string",
      "description": "RFC 3339, as stored."
     }
    },
    "required": [
     "issue",
     "title",
     "repository",
     "state",
     "url",
     "at"
    ],
    "additionalProperties": false
   },
   "Delivery": {
    "type": "object",
    "properties": {
     "commits": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/DeliveryCommit"
      }
     },
     "commitError": {
      "type": [
       "string",
       "null"
      ],
      "description": "Why the commits could not be read, where they could not."
     },
     "dirtyFiles": {
      "type": "number",
      "description": "Staged, unstaged and conflicted paths, counted once each."
     },
     "ahead": {
      "type": [
       "number",
       "null"
      ],
      "description": "Commits not on the upstream; absent where there is no upstream."
     },
     "branch": {
      "type": [
       "string",
       "null"
      ]
     },
     "hasRemote": {
      "type": "boolean",
      "description": "False where no remote is configured — not \"no pull request yet\" but \"there can never be one\"."
     },
     "pull": {
      "anyOf": [
       {
        "$ref": "#/components/schemas/DeliveryPull"
       },
       {
        "type": "null"
       }
      ]
     }
    },
    "required": [
     "commits",
     "commitError",
     "dirtyFiles",
     "ahead",
     "branch",
     "hasRemote",
     "pull"
    ],
    "additionalProperties": false
   },
   "DeliveryAgents": {
    "type": "object",
    "properties": {
     "agentMerged": {
      "type": "number"
     },
     "otherMerged": {
      "type": "number"
     },
     "agentLeadTime": {
      "$ref": "#/components/schemas/DeliverySpread"
     },
     "otherLeadTime": {
      "$ref": "#/components/schemas/DeliverySpread"
     },
     "agentReverts": {
      "$ref": "#/components/schemas/DeliveryRate"
     },
     "otherReverts": {
      "$ref": "#/components/schemas/DeliveryRate"
     },
     "costUsd": {
      "type": [
       "number",
       "null"
      ]
     },
     "costPerChange": {
      "type": [
       "number",
       "null"
      ]
     },
     "unpriced": {
      "type": "number"
     }
    },
    "required": [
     "agentMerged",
     "otherMerged",
     "agentLeadTime",
     "otherLeadTime",
     "agentReverts",
     "otherReverts",
     "costUsd",
     "costPerChange",
     "unpriced"
    ],
    "additionalProperties": false
   },
   "DeliveryChange": {
    "type": "object",
    "properties": {
     "repository": {
      "type": "string"
     },
     "id": {
      "type": "string"
     },
     "title": {
      "type": "string"
     },
     "author": {
      "type": [
       "string",
       "null"
      ]
     },
     "url": {
      "type": [
       "string",
       "null"
      ]
     },
     "opened": {
      "type": [
       "string",
       "null"
      ]
     },
     "merged": {
      "type": "string"
     },
     "deployed": {
      "type": [
       "string",
       "null"
      ]
     },
     "leadHours": {
      "type": [
       "number",
       "null"
      ]
     },
     "agent": {
      "type": "boolean"
     }
    },
    "required": [
     "repository",
     "id",
     "title",
     "author",
     "url",
     "opened",
     "merged",
     "deployed",
     "leadHours",
     "agent"
    ],
    "additionalProperties": false
   },
   "DeliveryCheck": {
    "type": "object",
    "properties": {
     "name": {
      "type": "string"
     },
     "state": {
      "type": "string",
      "description": "The provider's own word: `SUCCESSFUL`, `FAILED`, `INPROGRESS`…"
     },
     "url": {
      "type": [
       "string",
       "null"
      ]
     }
    },
    "required": [
     "name",
     "state",
     "url"
    ],
    "additionalProperties": false
   },
   "DeliveryCommit": {
    "type": "object",
    "properties": {
     "sha": {
      "type": "string"
     },
     "subject": {
      "type": "string"
     }
    },
    "required": [
     "sha",
     "subject"
    ],
    "additionalProperties": false
   },
   "DeliveryMetrics": {
    "type": "object",
    "properties": {
     "days": {
      "type": "number"
     },
     "failureWindowMinutes": {
      "type": "number"
     },
     "source": {
      "$ref": "#/components/schemas/DeliverySource"
     },
     "current": {
      "$ref": "#/components/schemas/DeliveryPeriod"
     },
     "previous": {
      "$ref": "#/components/schemas/DeliveryPeriod"
     },
     "weeks": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/DeliveryWeek"
      }
     },
     "changes": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/DeliveryChange"
      }
     },
     "agents": {
      "$ref": "#/components/schemas/DeliveryAgents"
     }
    },
    "required": [
     "days",
     "failureWindowMinutes",
     "source",
     "current",
     "previous",
     "weeks",
     "changes",
     "agents"
    ],
    "additionalProperties": false
   },
   "DeliveryPeriod": {
    "type": "object",
    "properties": {
     "from": {
      "type": "string"
     },
     "to": {
      "type": "string"
     },
     "deploys": {
      "type": "number"
     },
     "failedRuns": {
      "type": "number"
     },
     "perWeek": {
      "type": [
       "number",
       "null"
      ]
     },
     "merged": {
      "type": "number"
     },
     "leadTime": {
      "$ref": "#/components/schemas/DeliverySpread"
     },
     "reviewTime": {
      "$ref": "#/components/schemas/DeliverySpread"
     },
     "waiting": {
      "type": "number"
     },
     "changeFailure": {
      "$ref": "#/components/schemas/DeliveryRate"
     },
     "recovery": {
      "$ref": "#/components/schemas/DeliverySpread"
     },
     "openIncidents": {
      "type": "number"
     },
     "incidentsKnown": {
      "type": "boolean"
     },
     "reverts": {
      "$ref": "#/components/schemas/DeliveryRate"
     }
    },
    "required": [
     "from",
     "to",
     "deploys",
     "failedRuns",
     "perWeek",
     "merged",
     "leadTime",
     "reviewTime",
     "waiting",
     "changeFailure",
     "recovery",
     "openIncidents",
     "incidentsKnown",
     "reverts"
    ],
    "additionalProperties": false
   },
   "DeliveryPull": {
    "type": "object",
    "properties": {
     "number": {
      "type": [
       "number",
       "null"
      ]
     },
     "title": {
      "type": "string"
     },
     "state": {
      "type": "string",
      "description": "The provider's own word: `OPEN`, `MERGED`, `DECLINED`."
     },
     "url": {
      "type": [
       "string",
       "null"
      ]
     },
     "author": {
      "type": [
       "string",
       "null"
      ]
     },
     "reviewers": {
      "type": "array",
      "items": {
       "type": "string"
      },
      "description": "The people asked. `approved_by` is the subset that answered."
     },
     "approvedBy": {
      "type": "array",
      "items": {
       "type": "string"
      }
     },
     "reviewedAt": {
      "type": [
       "string",
       "null"
      ],
      "description": "When the provider was last asked directly, rather than when it synced."
     },
     "checks": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/DeliveryCheck"
      }
     }
    },
    "required": [
     "number",
     "title",
     "state",
     "url",
     "author",
     "reviewers",
     "approvedBy",
     "reviewedAt",
     "checks"
    ],
    "additionalProperties": false
   },
   "DeliveryRate": {
    "type": "object",
    "properties": {
     "part": {
      "type": "number"
     },
     "whole": {
      "type": "number"
     },
     "rate": {
      "type": [
       "number",
       "null"
      ]
     }
    },
    "required": [
     "part",
     "whole",
     "rate"
    ],
    "additionalProperties": false
   },
   "DeliverySource": {
    "type": "string",
    "enum": [
     "none",
     "pipelines",
     "deployments",
     "both"
    ]
   },
   "DeliverySpread": {
    "type": "object",
    "properties": {
     "median": {
      "type": [
       "number",
       "null"
      ]
     },
     "p90": {
      "type": [
       "number",
       "null"
      ]
     },
     "sample": {
      "type": "number"
     }
    },
    "required": [
     "median",
     "p90",
     "sample"
    ],
    "additionalProperties": false
   },
   "DeliveryWeek": {
    "type": "object",
    "properties": {
     "start": {
      "type": "string"
     },
     "deploys": {
      "type": "number"
     },
     "failedRuns": {
      "type": "number"
     }
    },
    "required": [
     "start",
     "deploys",
     "failedRuns"
    ],
    "additionalProperties": false
   },
   "DeployLanes": {
    "type": "object",
    "properties": {
     "production": {
      "type": "array",
      "items": {
       "type": "string"
      },
      "description": "Branch patterns that deploy to production, e.g. `main`, `release/*`."
     },
     "uat": {
      "type": "array",
      "items": {
       "type": "string"
      },
      "description": "Branch patterns that deploy to UAT or staging."
     }
    },
    "required": [
     "production",
     "uat"
    ],
    "additionalProperties": false
   },
   "Deployment": {
    "type": "object",
    "properties": {
     "repository": {
      "type": "string"
     },
     "environment": {
      "type": "string"
     },
     "state": {
      "type": "string"
     },
     "name": {
      "type": "string"
     },
     "at": {
      "type": "string"
     }
    },
    "required": [
     "repository",
     "environment",
     "state",
     "name",
     "at"
    ],
    "additionalProperties": false
   },
   "DiffHunk": {
    "type": "object",
    "properties": {
     "header": {
      "type": "string"
     },
     "lines": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/DiffLine"
      }
     }
    },
    "required": [
     "header",
     "lines"
    ],
    "additionalProperties": false
   },
   "DiffLine": {
    "type": "object",
    "properties": {
     "kind": {
      "type": "string",
      "description": "`added`, `removed`, or `context`."
     },
     "number": {
      "type": [
       "number",
       "null"
      ],
      "description": "The number in the file after the change, where the line survives it."
     },
     "text": {
      "type": "string"
     }
    },
    "required": [
     "kind",
     "number",
     "text"
    ],
    "additionalProperties": false
   },
   "DigestAnchor": {
    "type": "object",
    "properties": {
     "from": {
      "type": "number",
      "description": "ms."
     },
     "to": {
      "type": "number"
     },
     "label": {
      "type": "string",
      "description": "What it is, as the text says it: `Incident \"High error rate\"`."
     }
    },
    "required": [
     "from",
     "to",
     "label"
    ],
    "additionalProperties": false
   },
   "DigestCloudflare": {
    "type": "object",
    "properties": {
     "cite": {
      "type": "string"
     },
     "id": {
      "type": "string",
      "description": "The issue id, for its drawer (`monitoring/cloudflare/issues?open=<id>`)."
     },
     "kind": {
      "type": "string",
      "description": "`failing`, `origin`, `slow`, `cache`, `firewall`…"
     },
     "kindLabel": {
      "type": "string"
     },
     "host": {
      "type": [
       "string",
       "null"
      ]
     },
     "path": {
      "type": [
       "string",
       "null"
      ]
     },
     "title": {
      "type": "string"
     },
     "severity": {
      "type": "string",
      "description": "`low`, `medium`, `high` or `critical`."
     },
     "status": {
      "type": "string",
      "description": "`open` or `resolved`."
     },
     "requests": {
      "type": "number",
      "description": "Requests (or firewall events) affected in the issue's last check."
     },
     "share": {
      "type": "number",
      "description": "Of the zone's requests, 0–1."
     },
     "change": {
      "type": [
       "string",
       "null"
      ],
      "description": "The headline figure against its baseline: `5xx rate 12% vs 0.5%`."
     },
     "why": {
      "type": "string"
     },
     "t": {
      "type": "number",
      "description": "When it opened, ms."
     }
    },
    "required": [
     "cite",
     "id",
     "kind",
     "kindLabel",
     "host",
     "path",
     "title",
     "severity",
     "status",
     "requests",
     "share",
     "change",
     "why",
     "t"
    ],
    "additionalProperties": false
   },
   "DigestCorrelation": {
    "type": "object",
    "properties": {
     "kind": {
      "type": "string",
      "description": "`spike` or `newIssue`."
     },
     "source": {
      "type": "string",
      "description": "The lane id the spike is in, or `sentry`."
     },
     "t": {
      "type": "number",
      "description": "When the spike started, or the issue was first seen, ms."
     },
     "deploy": {
      "type": "string",
      "description": "The deploy it follows, by label."
     },
     "minutesAfter": {
      "type": "number"
     },
     "issue": {
      "type": [
       "string",
       "null"
      ],
      "description": "The Sentry short id, for a new issue."
     },
     "text": {
      "type": "string",
      "description": "The sentence the digest says."
     }
    },
    "required": [
     "kind",
     "source",
     "t",
     "deploy",
     "minutesAfter",
     "issue",
     "text"
    ],
    "additionalProperties": false
   },
   "DigestEvent": {
    "type": "object",
    "properties": {
     "cite": {
      "type": "string",
      "description": "`D1`, `I1`, `R1`, `A1`, `X1`…"
     },
     "t": {
      "type": "number",
      "description": "ms."
     },
     "kind": {
      "type": "string"
     },
     "title": {
      "type": "string"
     },
     "detail": {
      "type": [
       "string",
       "null"
      ]
     },
     "severity": {
      "type": "string"
     },
     "ref": {
      "$ref": "#/components/schemas/TimelineRef"
     }
    },
    "required": [
     "cite",
     "t",
     "kind",
     "title",
     "detail",
     "severity",
     "ref"
    ],
    "additionalProperties": false
   },
   "DigestIssue": {
    "type": "object",
    "properties": {
     "cite": {
      "type": "string",
      "description": "The label it is cited by: the short id."
     },
     "id": {
      "type": "string"
     },
     "title": {
      "type": "string"
     },
     "culprit": {
      "type": "string"
     },
     "project": {
      "type": "string"
     },
     "level": {
      "type": "string"
     },
     "events": {
      "type": "number",
      "description": "Events in the window."
     },
     "users": {
      "type": "number",
      "description": "Distinct users among them."
     },
     "estimated": {
      "type": "boolean",
      "description": "The counts come from the issue's own hourly or daily buckets, not the copied events."
     },
     "new": {
      "type": "boolean",
      "description": "First seen inside the window."
     },
     "regressed": {
      "type": "boolean"
     },
     "firstSeen": {
      "type": [
       "number",
       "null"
      ],
      "description": "ms."
     },
     "jira": {
      "type": "array",
      "items": {
       "type": "string"
      },
      "description": "Linked Jira keys."
     },
     "url": {
      "type": [
       "string",
       "null"
      ]
     }
    },
    "required": [
     "cite",
     "id",
     "title",
     "culprit",
     "project",
     "level",
     "events",
     "users",
     "estimated",
     "new",
     "regressed",
     "firstSeen",
     "jira",
     "url"
    ],
    "additionalProperties": false
   },
   "DigestPattern": {
    "type": "object",
    "properties": {
     "cite": {
      "type": "string",
      "description": "`P1`, `P2`…"
     },
     "id": {
      "type": "string",
      "description": "The pattern hash."
     },
     "template": {
      "type": "string"
     },
     "level": {
      "type": "string"
     },
     "count": {
      "type": "number"
     },
     "services": {
      "type": "array",
      "items": {
       "type": "string"
      }
     },
     "first": {
      "type": "number",
      "description": "ms."
     },
     "last": {
      "type": "number"
     },
     "query": {
      "type": "string",
      "description": "A Logs query that finds its lines."
     }
    },
    "required": [
     "cite",
     "id",
     "template",
     "level",
     "count",
     "services",
     "first",
     "last",
     "query"
    ],
    "additionalProperties": false
   },
   "DigestRelated": {
    "type": "object",
    "properties": {
     "cite": {
      "type": "string"
     },
     "group": {
      "type": "string",
      "description": "The Incident view's group: `changes`, `errors`, `performance`, `infrastructure`, `monitors`, `logs`, `watches`."
     },
     "kind": {
      "type": "string"
     },
     "title": {
      "type": "string"
     },
     "score": {
      "type": "number",
      "description": "0–100."
     },
     "reasons": {
      "type": "array",
      "items": {
       "type": "string"
      }
     },
     "t": {
      "type": [
       "number",
       "null"
      ],
      "description": "ms; none when the source gives no time (a slow database call over the window)."
     },
     "ref": {
      "$ref": "#/components/schemas/TimelineRef"
     }
    },
    "required": [
     "cite",
     "group",
     "kind",
     "title",
     "score",
     "reasons",
     "t",
     "ref"
    ],
    "additionalProperties": false
   },
   "DigestSpike": {
    "type": "object",
    "properties": {
     "t": {
      "type": "number",
      "description": "The peak bucket's start, ms."
     },
     "start": {
      "type": "number",
      "description": "Where the climb to it started: the first of the buckets above twice the median before it, ms."
     },
     "n": {
      "type": "number"
     },
     "median": {
      "type": "number"
     },
     "factor": {
      "type": "number",
      "description": "`n` over the median (over 1 when the median is 0), one decimal."
     },
     "spike": {
      "type": "boolean",
      "description": "Whether it is a spike at all: at least twice the median and at least 3."
     }
    },
    "required": [
     "t",
     "start",
     "n",
     "median",
     "factor",
     "spike"
    ],
    "additionalProperties": false
   },
   "DigestTotals": {
    "type": "object",
    "properties": {
     "deploys": {
      "type": "number"
     },
     "issues": {
      "type": "number"
     },
     "patterns": {
      "type": "number"
     },
     "incidents": {
      "type": "number"
     },
     "monitors": {
      "type": "number"
     },
     "watches": {
      "type": "number"
     },
     "releases": {
      "type": "number"
     },
     "alerts": {
      "type": "number"
     },
     "runs": {
      "type": "number"
     },
     "cloudflare": {
      "type": "number"
     }
    },
    "required": [
     "deploys",
     "issues",
     "patterns",
     "incidents",
     "monitors",
     "watches",
     "releases",
     "alerts",
     "runs",
     "cloudflare"
    ],
    "additionalProperties": false
   },
   "DigestVolume": {
    "type": "object",
    "properties": {
     "id": {
      "type": "string",
      "description": "The lane id."
     },
     "label": {
      "type": "string"
     },
     "unit": {
      "type": "string",
      "description": "What the total counts; empty for a lane of markers only."
     },
     "total": {
      "type": "number"
     },
     "peak": {
      "anyOf": [
       {
        "$ref": "#/components/schemas/DigestSpike"
       },
       {
        "type": "null"
       }
      ]
     }
    },
    "required": [
     "id",
     "label",
     "unit",
     "total",
     "peak"
    ],
    "additionalProperties": false
   },
   "DigestWatch": {
    "type": "object",
    "properties": {
     "cite": {
      "type": "string",
      "description": "`W1`, `W2`…"
     },
     "fingerprint": {
      "type": "string"
     },
     "title": {
      "type": "string"
     },
     "source": {
      "type": [
       "string",
       "null"
      ],
      "description": "The query's name."
     },
     "severity": {
      "type": "string",
      "description": "The worst severity among its rows."
     },
     "count": {
      "type": "number"
     },
     "first": {
      "type": "number",
      "description": "ms."
     },
     "last": {
      "type": "number"
     }
    },
    "required": [
     "cite",
     "fingerprint",
     "title",
     "source",
     "severity",
     "count",
     "first",
     "last"
    ],
    "additionalProperties": false
   },
   "DryRunResult": {
    "type": "object",
    "properties": {
     "ok": {
      "type": "boolean"
     },
     "offline": {
      "type": "boolean"
     },
     "latencyMs": {
      "type": [
       "number",
       "null"
      ]
     },
     "error": {
      "type": [
       "string",
       "null"
      ]
     },
     "summary": {
      "$ref": "#/components/schemas/JsonValue"
     }
    },
    "required": [
     "ok",
     "offline",
     "latencyMs",
     "error",
     "summary"
    ],
    "additionalProperties": false
   },
   "EnabledProfile": {
    "type": "object",
    "properties": {
     "id": {
      "type": "string"
     },
     "name": {
      "type": "string"
     },
     "kind": {
      "type": "string",
      "description": "`shell`, `claude`, `codex`, …"
     }
    },
    "required": [
     "id",
     "name",
     "kind"
    ],
    "additionalProperties": false
   },
   "EngineState": {
    "type": "object",
    "properties": {
     "project": {
      "type": "string"
     },
     "slug": {
      "type": "string"
     },
     "name": {
      "type": "string"
     },
     "scheduler": {
      "type": "boolean"
     },
     "syncing": {
      "type": "boolean"
     }
    },
    "required": [
     "project",
     "slug",
     "name",
     "scheduler",
     "syncing"
    ],
    "additionalProperties": false
   },
   "EpicChat": {
    "type": "object",
    "properties": {
     "events": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/ChatEvent"
      }
     },
     "state": {
      "type": "string",
      "description": "`idle`, `running` or `waiting` (for your answer)."
     },
     "costUsd": {
      "type": "number"
     },
     "preview": {
      "type": "string",
      "description": "The answer so far, while it streams."
     },
     "approvals": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/ChatApproval"
      }
     },
     "rules": {
      "type": "array",
      "items": {
       "type": "string"
      },
      "description": "The kinds of request you chose to always allow here."
     },
     "problem": {
      "type": [
       "string",
       "null"
      ],
      "description": "Why the chat cannot be used, when it cannot: not an epic, no worktree, no `claude`."
     },
     "branch": {
      "type": [
       "string",
       "null"
      ]
     },
     "name": {
      "type": [
       "string",
       "null"
      ],
      "description": "The project chat's name; none on an epic."
     }
    },
    "required": [
     "events",
     "state",
     "costUsd",
     "preview",
     "approvals",
     "rules",
     "problem",
     "branch",
     "name"
    ],
    "additionalProperties": false
   },
   "EventDetail": {
    "type": "object",
    "properties": {
     "actor": {
      "type": [
       "string",
       "null"
      ]
     },
     "entityId": {
      "type": [
       "string",
       "null"
      ]
     },
     "entityKind": {
      "type": [
       "string",
       "null"
      ]
     },
     "link": {
      "type": [
       "string",
       "null"
      ],
      "description": "Where to read it at the provider, where the adapter recorded one."
     },
     "around": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/Neighbour"
      },
      "description": "Up to six before and six after, newest first, this one excluded."
     }
    },
    "required": [
     "actor",
     "entityId",
     "entityKind",
     "link",
     "around"
    ],
    "additionalProperties": false
   },
   "EventProp": {
    "type": "object",
    "properties": {
     "label": {
      "type": "string"
     },
     "value": {
      "type": "string"
     }
    },
    "required": [
     "label",
     "value"
    ],
    "additionalProperties": false
   },
   "Exported": {
    "type": "object",
    "properties": {
     "path": {
      "type": "string",
      "description": "Where a copy was written, beside the databases."
     },
     "fileName": {
      "type": "string",
      "description": "The file's name and contents, which the page offers as a download."
     },
     "file": {
      "type": "string"
     },
     "key": {
      "type": "string",
      "description": "The key the file is encrypted with; asked for on restore."
     }
    },
    "required": [
     "path",
     "fileName",
     "file",
     "key"
    ],
    "additionalProperties": false
   },
   "Facet": {
    "type": "object",
    "properties": {
     "group": {
      "type": "string"
     },
     "value": {
      "type": "string"
     },
     "count": {
      "type": "number"
     },
     "selected": {
      "type": "boolean"
     }
    },
    "required": [
     "group",
     "value",
     "count",
     "selected"
    ],
    "additionalProperties": false
   },
   "Favorite": {
    "type": "object",
    "properties": {
     "kind": {
      "$ref": "#/components/schemas/FavoriteKind"
     },
     "reference": {
      "type": "string"
     },
     "title": {
      "type": "string"
     }
    },
    "required": [
     "kind",
     "reference",
     "title"
    ],
    "additionalProperties": false
   },
   "FavoriteKind": {
    "type": "string",
    "enum": [
     "Task",
     "Pull",
     "Release"
    ]
   },
   "FetchedIssue": {
    "type": "object",
    "properties": {
     "description": {
      "type": "string",
      "description": "The ticket's prose, as Markdown."
     },
     "fingerprint": {
      "type": "string",
      "description": "What the ticket looked like when read, so a stored AI reading of it can say whether it still describes what is on the screen."
     },
     "comments": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/IssueComment"
      }
     },
     "commentsError": {
      "type": [
       "string",
       "null"
      ]
     },
     "history": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/IssueChange"
      },
      "description": "Every field change, newest first."
     },
     "subtasks": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/IssueLink"
      }
     },
     "labels": {
      "type": "array",
      "items": {
       "type": "string"
      }
     },
     "components": {
      "type": "array",
      "items": {
       "type": "string"
      }
     }
    },
    "required": [
     "description",
     "fingerprint",
     "comments",
     "commentsError",
     "history",
     "subtasks",
     "labels",
     "components"
    ],
    "additionalProperties": false
   },
   "Fleet": {
    "type": "object",
    "properties": {
     "hosts": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/Subject"
      }
     },
     "services": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/Subject"
      }
     },
     "omitted": {
      "type": "number",
      "description": "How many the cap left out. Stated rather than silent: a page that quietly drops two hundred machines reads as an account that has none."
     },
     "connected": {
      "type": "boolean",
      "description": "Whether New Relic is connected at all — a different empty screen from \"connected and reporting nothing\"."
     },
     "since": {
      "type": "string",
      "description": "The bounds the summary covers, RFC 3339."
     },
     "until": {
      "type": [
       "string",
       "null"
      ]
     }
    },
    "required": [
     "hosts",
     "services",
     "omitted",
     "connected",
     "since",
     "until"
    ],
    "additionalProperties": false
   },
   "Folder": {
    "type": "object",
    "properties": {
     "name": {
      "type": "string"
     },
     "path": {
      "type": "string"
     }
    },
    "required": [
     "name",
     "path"
    ],
    "additionalProperties": false
   },
   "FolderCount": {
    "type": "object",
    "properties": {
     "id": {
      "$ref": "#/components/schemas/MailboxFolder"
     },
     "label": {
      "type": "string"
     },
     "count": {
      "type": "number"
     },
     "unread": {
      "type": "number",
      "description": "Of those, how many are unread."
     }
    },
    "required": [
     "id",
     "label",
     "count",
     "unread"
    ],
    "additionalProperties": false
   },
   "Folders": {
    "type": "object",
    "properties": {
     "path": {
      "type": "string"
     },
     "parent": {
      "type": [
       "string",
       "null"
      ],
      "description": "`null` at the home directory, which is as far up as the browser goes."
     },
     "folders": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/Folder"
      }
     }
    },
    "required": [
     "path",
     "parent",
     "folders"
    ],
    "additionalProperties": false
   },
   "FollowupCheck": {
    "type": "object",
    "properties": {
     "id": {
      "type": "string",
      "description": "Empty for a new check."
     },
     "name": {
      "type": "string"
     },
     "enabled": {
      "type": "boolean"
     },
     "source": {
      "$ref": "#/components/schemas/FollowupSource"
     },
     "schedule": {
      "$ref": "#/components/schemas/FollowupSchedule"
     },
     "workingHours": {
      "anyOf": [
       {
        "$ref": "#/components/schemas/WorkingHours"
       },
       {
        "type": "null"
       }
      ]
     },
     "graceMinutes": {
      "type": "number"
     },
     "lookbackDays": {
      "type": "number"
     },
     "notify": {
      "type": "boolean"
     },
     "params": {
      "type": "object",
      "additionalProperties": {
       "type": "string"
      },
      "description": "Recipe parameters: `me`, `channels`…"
     }
    },
    "required": [
     "id",
     "name",
     "enabled",
     "source",
     "schedule",
     "workingHours",
     "graceMinutes",
     "lookbackDays",
     "notify",
     "params"
    ],
    "additionalProperties": false
   },
   "FollowupFacet": {
    "type": "object",
    "properties": {
     "value": {
      "type": "string"
     },
     "count": {
      "type": "number"
     }
    },
    "required": [
     "value",
     "count"
    ],
    "additionalProperties": false
   },
   "FollowupFacets": {
    "type": "object",
    "properties": {
     "source": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/FollowupFacet"
      }
     },
     "who": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/FollowupFacet"
      }
     },
     "age": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/FollowupFacet"
      }
     },
     "kind": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/FollowupFacet"
      }
     }
    },
    "required": [
     "source",
     "who",
     "age",
     "kind"
    ],
    "additionalProperties": false
   },
   "FollowupFound": {
    "type": "object",
    "properties": {
     "key": {
      "type": "string"
     },
     "kind": {
      "type": "string"
     },
     "title": {
      "type": "string"
     },
     "who": {
      "type": [
       "string",
       "null"
      ]
     },
     "whoId": {
      "type": [
       "string",
       "null"
      ]
     },
     "where": {
      "type": [
       "string",
       "null"
      ]
     },
     "thread": {
      "type": [
       "string",
       "null"
      ]
     },
     "url": {
      "type": [
       "string",
       "null"
      ]
     },
     "preview": {
      "type": [
       "string",
       "null"
      ]
     },
     "waitingSince": {
      "type": "number"
     }
    },
    "required": [
     "key",
     "kind",
     "title",
     "who",
     "whoId",
     "where",
     "thread",
     "url",
     "preview",
     "waitingSince"
    ],
    "additionalProperties": false
   },
   "FollowupItem": {
    "type": "object",
    "properties": {
     "checkId": {
      "type": "string"
     },
     "checkName": {
      "type": "string"
     },
     "key": {
      "type": "string"
     },
     "source": {
      "type": "string"
     },
     "kind": {
      "type": "string"
     },
     "title": {
      "type": "string"
     },
     "who": {
      "type": [
       "string",
       "null"
      ]
     },
     "whoId": {
      "type": [
       "string",
       "null"
      ]
     },
     "where": {
      "type": [
       "string",
       "null"
      ]
     },
     "thread": {
      "type": [
       "string",
       "null"
      ]
     },
     "url": {
      "type": [
       "string",
       "null"
      ]
     },
     "preview": {
      "type": [
       "string",
       "null"
      ]
     },
     "waitingSince": {
      "type": "number"
     },
     "firstSeenAt": {
      "type": "number"
     },
     "state": {
      "type": "string"
     },
     "snoozedUntil": {
      "type": [
       "number",
       "null"
      ]
     },
     "resolvedAt": {
      "type": [
       "number",
       "null"
      ]
     }
    },
    "required": [
     "checkId",
     "checkName",
     "key",
     "source",
     "kind",
     "title",
     "who",
     "whoId",
     "where",
     "thread",
     "url",
     "preview",
     "waitingSince",
     "firstSeenAt",
     "state",
     "snoozedUntil",
     "resolvedAt"
    ],
    "additionalProperties": false
   },
   "FollowupItems": {
    "type": "object",
    "properties": {
     "items": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/FollowupItem"
      }
     },
     "facets": {
      "$ref": "#/components/schemas/FollowupFacets"
     },
     "waiting": {
      "type": "number",
      "description": "Open in total: the Home tile's \"N waiting on you\"."
     }
    },
    "required": [
     "items",
     "facets",
     "waiting"
    ],
    "additionalProperties": false
   },
   "FollowupMute": {
    "type": "object",
    "properties": {
     "kind": {
      "type": "string"
     },
     "value": {
      "type": "string"
     },
     "label": {
      "type": [
       "string",
       "null"
      ]
     },
     "createdAt": {
      "type": "number"
     }
    },
    "required": [
     "kind",
     "value",
     "label",
     "createdAt"
    ],
    "additionalProperties": false
   },
   "FollowupSchedule": {
    "anyOf": [
     {
      "type": "object",
      "properties": {
       "kind": {
        "type": "string",
        "const": "hourly"
       }
      },
      "required": [
       "kind"
      ],
      "additionalProperties": false
     },
     {
      "type": "object",
      "properties": {
       "kind": {
        "type": "string",
        "const": "daily"
       },
       "at": {
        "type": "string"
       },
       "timezone": {
        "type": "string"
       }
      },
      "required": [
       "kind",
       "at",
       "timezone"
      ],
      "additionalProperties": false
     },
     {
      "type": "object",
      "properties": {
       "kind": {
        "type": "string",
        "const": "cron"
       },
       "expression": {
        "type": "string"
       },
       "timezone": {
        "type": "string"
       }
      },
      "required": [
       "kind",
       "expression",
       "timezone"
      ],
      "additionalProperties": false
     }
    ]
   },
   "FollowupSource": {
    "anyOf": [
     {
      "type": "object",
      "properties": {
       "kind": {
        "type": "string",
        "const": "native"
       },
       "provider": {
        "type": "string"
       }
      },
      "required": [
       "kind",
       "provider"
      ],
      "additionalProperties": false
     },
     {
      "type": "object",
      "properties": {
       "kind": {
        "type": "string",
        "const": "recipe"
       },
       "server": {
        "type": "string"
       },
       "recipe": {
        "type": "string",
        "description": "A built-in recipe id; with `custom`, a name for it."
       },
       "custom": {
        "$ref": "#/components/schemas/Record_string_unknown",
        "description": "The person's own recipe, as `followups.checks` lists recipes."
       }
      },
      "required": [
       "kind",
       "server",
       "recipe"
      ],
      "additionalProperties": false
     }
    ]
   },
   "GeoipDatabase": {
    "type": "object",
    "properties": {
     "kind": {
      "type": "string",
      "description": "`country`, `asn` or `city`."
     },
     "bytes": {
      "type": "number"
     }
    },
    "required": [
     "kind",
     "bytes"
    ],
    "additionalProperties": false
   },
   "GeoipLookupArgs": {
    "type": "object",
    "properties": {
     "ips": {
      "type": "array",
      "items": {
       "type": "string"
      }
     }
    },
    "required": [
     "ips"
    ],
    "additionalProperties": false
   },
   "GeoipResolveArgs": {
    "type": "object",
    "properties": {
     "hosts": {
      "type": "array",
      "items": {
       "type": "string"
      },
      "description": "Host names and IPs; anything else is answered without an address."
     }
    },
    "required": [
     "hosts"
    ],
    "additionalProperties": false
   },
   "GeoipStatus": {
    "type": "object",
    "properties": {
     "installed": {
      "type": "boolean",
      "description": "Country and network databases are in place."
     },
     "databases": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/GeoipDatabase"
      }
     },
     "city": {
      "type": "boolean",
      "description": "The city database is wanted."
     },
     "edition": {
      "type": [
       "string",
       "null"
      ],
      "description": "`2026-10`."
     },
     "updatedAt": {
      "type": [
       "number",
       "null"
      ],
      "description": "Seconds."
     },
     "error": {
      "type": [
       "string",
       "null"
      ]
     },
     "updating": {
      "type": "boolean",
      "description": "An update is downloading."
     },
     "attribution": {
      "type": "string"
     },
     "attributionUrl": {
      "type": "string"
     }
    },
    "required": [
     "installed",
     "databases",
     "city",
     "edition",
     "updatedAt",
     "error",
     "updating",
     "attribution",
     "attributionUrl"
    ],
    "additionalProperties": false
   },
   "GeoipUpdateArgs": {
    "type": "object",
    "properties": {
     "city": {
      "type": "boolean",
      "description": "Also download the city database (~130 MB)."
     }
    },
    "required": [
     "city"
    ],
    "additionalProperties": false
   },
   "HistoryMark": {
    "type": "object",
    "properties": {
     "id": {
      "type": "string"
     },
     "start": {
      "type": "number",
      "description": "Ms."
     },
     "end": {
      "type": [
       "number",
       "null"
      ],
      "description": "Ms; None while open."
     },
     "severity": {
      "type": "string"
     }
    },
    "required": [
     "id",
     "start",
     "end",
     "severity"
    ],
    "additionalProperties": false
   },
   "Hit": {
    "type": "object",
    "properties": {
     "id": {
      "type": "string",
      "description": "The index's id, which carries the provider namespace (`jira:ENGR-1`)."
     },
     "title": {
      "type": "string"
     },
     "sub": {
      "type": "string"
     },
     "provider": {
      "type": "string"
     },
     "reference": {
      "type": "string",
      "description": "What a detail view is opened with: the id without its provider prefix."
     }
    },
    "required": [
     "id",
     "title",
     "sub",
     "provider",
     "reference"
    ],
    "additionalProperties": false
   },
   "HitGroup": {
    "type": "object",
    "properties": {
     "kind": {
      "type": "string"
     },
     "hits": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/Hit"
      }
     }
    },
    "required": [
     "kind",
     "hits"
    ],
    "additionalProperties": false
   },
   "HomeScreen": {
    "type": "object",
    "properties": {
     "stats": {
      "$ref": "#/components/schemas/HomeStats"
     },
     "work": {
      "anyOf": [
       {
        "$ref": "#/components/schemas/WorkList"
       },
       {
        "type": "null"
       }
      ],
      "description": "Your open work, started work first, then the provider's important ones."
     },
     "reviews": {
      "anyOf": [
       {
        "$ref": "#/components/schemas/WorkList"
       },
       {
        "type": "null"
       }
      ]
     },
     "signals": {
      "anyOf": [
       {
        "type": "array",
        "items": {
         "$ref": "#/components/schemas/Signal"
        }
       },
       {
        "type": "null"
       }
      ]
     },
     "releases": {
      "anyOf": [
       {
        "type": "array",
        "items": {
         "$ref": "#/components/schemas/ReleaseRow"
        }
       },
       {
        "type": "null"
       }
      ],
      "description": "Upcoming and overdue releases: overdue first, then soonest."
     },
     "providers": {
      "anyOf": [
       {
        "type": "array",
        "items": {
         "$ref": "#/components/schemas/Integration"
        }
       },
       {
        "type": "null"
       }
      ]
     },
     "activity": {
      "anyOf": [
       {
        "type": "array",
        "items": {
         "$ref": "#/components/schemas/LiveEvent"
        }
       },
       {
        "type": "null"
       }
      ],
      "description": "The newest provider events, for \"recent activity\"."
     },
     "errors": {
      "type": "array",
      "items": {
       "type": "string"
      },
      "description": "One line per section that could not be read: `Section: reason`."
     }
    },
    "required": [
     "stats",
     "work",
     "reviews",
     "signals",
     "releases",
     "providers",
     "activity",
     "errors"
    ],
    "additionalProperties": false
   },
   "HomeStats": {
    "type": "object",
    "properties": {
     "openTasks": {
      "type": [
       "number",
       "null"
      ],
      "description": "Your open issues (owner: Mine)."
     },
     "reviewsWaiting": {
      "type": [
       "number",
       "null"
      ],
      "description": "Pull requests waiting on a decision."
     },
     "activeRuns": {
      "type": [
       "number",
       "null"
      ],
      "description": "Runs running, queued or waiting at a gate."
     },
     "releasesDue": {
      "type": [
       "number",
       "null"
      ],
      "description": "Unreleased versions due within thirty days either side of today."
     }
    },
    "required": [
     "openTasks",
     "reviewsWaiting",
     "activeRuns",
     "releasesDue"
    ],
    "additionalProperties": false
   },
   "HostGeo": {
    "type": "object",
    "properties": {
     "host": {
      "type": "string",
      "description": "The value as given."
     },
     "ip": {
      "type": [
       "string",
       "null"
      ],
      "description": "The address it is, or resolves to; none when it is not a host or did not resolve."
     },
     "geo": {
      "anyOf": [
       {
        "$ref": "#/components/schemas/IpGeo"
       },
       {
        "type": "null"
       }
      ],
      "description": "What the databases know about that address."
     }
    },
    "required": [
     "host",
     "ip",
     "geo"
    ],
    "additionalProperties": false
   },
   "IgnoredRoute": {
    "type": "object",
    "properties": {
     "settings": {
      "$ref": "#/components/schemas/SecuritySettings"
     },
     "resolved": {
      "type": "number",
      "description": "Open findings on the route, resolved now rather than after three quiet checks."
     }
    },
    "required": [
     "settings",
     "resolved"
    ],
    "additionalProperties": false
   },
   "ImportArgs": {
    "type": "object",
    "properties": {
     "source": {
      "type": "string",
      "description": "`v7` or `v8`."
     },
     "projects": {
      "anyOf": [
       {
        "type": "array",
        "items": {
         "type": "string"
        }
       },
       {
        "type": "null"
       }
      ],
      "description": "Project ids to adopt. Absent adopts every project not already here."
     }
    },
    "required": [
     "source",
     "projects"
    ],
    "additionalProperties": false
   },
   "ImportCreated": {
    "type": "object",
    "properties": {
     "integrations": {
      "type": "number"
     },
     "workflows": {
      "type": "number"
     },
     "agents": {
      "type": "number"
     },
     "automations": {
      "type": "number"
     },
     "expectations": {
      "type": "number"
     }
    },
    "required": [
     "integrations",
     "workflows",
     "agents",
     "automations",
     "expectations"
    ],
    "additionalProperties": false
   },
   "Imported": {
    "type": "object",
    "properties": {
     "imported": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/Project"
      }
     }
    },
    "required": [
     "imported"
    ],
    "additionalProperties": false
   },
   "ImportReport": {
    "type": "object",
    "properties": {
     "created": {
      "$ref": "#/components/schemas/ImportCreated"
     },
     "needsCredentials": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/NeedsCredentials"
      },
      "description": "Integrations configured but not connected: each needs the importer's own credential through `integration.connect`."
     },
     "repositories": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/TemplateRepository"
      },
      "description": "Repositories still to be mapped to a local clone."
     },
     "pendingAutomations": {
      "type": "number",
      "description": "Automations waiting for their repository."
     },
     "skipped": {
      "type": "array",
      "items": {
       "type": "string"
      },
      "description": "What could not be imported, in sentences."
     }
    },
    "required": [
     "created",
     "needsCredentials",
     "repositories",
     "pendingAutomations",
     "skipped"
    ],
    "additionalProperties": false
   },
   "Inbox": {
    "type": "object",
    "properties": {
     "items": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/InboxItem"
      }
     },
     "errors": {
      "type": "array",
      "items": {
       "type": "string"
      },
      "description": "Sections that could not be read, as on Home."
     }
    },
    "required": [
     "items",
     "errors"
    ],
    "additionalProperties": false
   },
   "InboxItem": {
    "type": "object",
    "properties": {
     "id": {
      "type": "string",
      "description": "`issue:KEY`, `pull:repo#n`, `attention:<signal>`, `release:<id>`, `conversation:<subject>`, `automation:<run>`."
     },
     "title": {
      "type": "string"
     },
     "body": {
      "type": "string"
     },
     "kind": {
      "type": "string",
      "description": "`Task`, `Pull request`, `Attention`, `Release`, `Conversation`, `Automation`."
     },
     "source": {
      "type": "string"
     },
     "status": {
      "type": "string"
     },
     "statusLabel": {
      "type": "string",
      "description": "The tracker's status beside DevDash's, e.g. `Jira: Open · DevDash: Awaiting approval`."
     },
     "priority": {
      "type": "string"
     },
     "workspace": {
      "type": "string"
     },
     "when": {
      "type": "string"
     },
     "at": {
      "type": "number",
      "description": "When it last moved, Unix seconds, where the source says: issues and pull requests (their update), conversations (the last message), automation approvals (the run). Absent for a release or a signal of its own, whose `when` is a due date or a wait."
     },
     "attention": {
      "type": "boolean"
     },
     "assigned": {
      "type": "boolean"
     },
     "unread": {
      "type": "boolean"
     },
     "version": {
      "type": "string",
      "description": "What `inbox.save` stores as `read_version` to mark this read."
     },
     "state": {
      "$ref": "#/components/schemas/ItemState"
     },
     "target": {
      "$ref": "#/components/schemas/InboxTarget"
     },
     "triage": {
      "$ref": "#/components/schemas/InboxTriage",
      "description": "What a decision model judged the item asks of its recipient (`jev::attach`), when it was confident, for the item's current version. Absent otherwise."
     }
    },
    "required": [
     "id",
     "title",
     "body",
     "kind",
     "source",
     "status",
     "statusLabel",
     "priority",
     "workspace",
     "when",
     "attention",
     "assigned",
     "unread",
     "version",
     "state",
     "target"
    ],
    "additionalProperties": false
   },
   "InboxScreen": {
    "type": "object",
    "properties": {
     "items": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/InboxItem"
      },
      "description": "Every item, archived and snoozed included: the folder is a client-side filter over one list, so switching folders costs no request."
     },
     "foldersOf": {
      "type": "array",
      "items": {
       "type": "array",
       "items": {
        "$ref": "#/components/schemas/MailboxFolder"
       }
      },
      "description": "For each item, the folders it belongs in, parallel to `items`."
     },
     "folders": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/FolderCount"
      }
     },
     "errors": {
      "type": "array",
      "items": {
       "type": "string"
      }
     },
     "followups": {
      "$ref": "#/components/schemas/FollowupItems",
      "description": "The Follow-ups folder: what is waiting on you, with its facets."
     },
     "reportsUnread": {
      "type": "number",
      "description": "Unread reports, for the Reports view's count."
     }
    },
    "required": [
     "items",
     "foldersOf",
     "folders",
     "errors",
     "followups",
     "reportsUnread"
    ],
    "additionalProperties": false
   },
   "InboxTarget": {
    "type": "object",
    "properties": {
     "kind": {
      "type": "string",
      "description": "`task`, `issue`, `pull`, `release`, `conversation`, `automation`, `none`."
     },
     "id": {
      "type": "string"
     }
    },
    "required": [
     "kind",
     "id"
    ],
    "additionalProperties": false
   },
   "InboxTriage": {
    "type": "object",
    "properties": {
     "verdict": {
      "type": "string",
      "description": "`reply_needed`, `review_requested`, `blocked` or `fyi`."
     },
     "label": {
      "type": "string",
      "description": "\"Reply needed\", \"Review requested\", \"Blocked\", \"FYI\"."
     },
     "confidence": {
      "type": "number"
     },
     "model": {
      "type": "string"
     }
    },
    "required": [
     "verdict",
     "label",
     "confidence",
     "model"
    ],
    "additionalProperties": false
   },
   "IncidentDetail": {
    "type": "object",
    "properties": {
     "incident": {
      "$ref": "#/components/schemas/IncidentRow"
     },
     "runs": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/TestRunRow"
      }
     },
     "patterns": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/IncidentPattern"
      },
      "description": "Errors and warnings from every log source, 15 minutes before to 5 after."
     },
     "from": {
      "type": "number",
      "description": "The explorer window, µs, for \"open in Logs\"."
     },
     "to": {
      "type": "number"
     }
    },
    "required": [
     "incident",
     "runs",
     "patterns",
     "from",
     "to"
    ],
    "additionalProperties": false
   },
   "IncidentGroup": {
    "type": "object",
    "properties": {
     "id": {
      "type": "string"
     },
     "label": {
      "type": "string"
     },
     "items": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/IncidentRelated"
      },
      "description": "Best first, at most 30."
     },
     "total": {
      "type": "number",
      "description": "Before the cut."
     }
    },
    "required": [
     "id",
     "label",
     "items",
     "total"
    ],
    "additionalProperties": false
   },
   "IncidentHistory": {
    "type": "object",
    "properties": {
     "days": {
      "type": "number"
     },
     "count": {
      "type": "number",
      "description": "The monitor's incidents that started in the last `days`."
     },
     "noisy": {
      "type": "boolean",
      "description": "More than `NOISY` of them."
     },
     "marks": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/HistoryMark"
      },
      "description": "Newest first, `MAX_MARKS` at most."
     }
    },
    "required": [
     "days",
     "count",
     "noisy",
     "marks"
    ],
    "additionalProperties": false
   },
   "IncidentKubernetes": {
    "type": "object",
    "properties": {
     "context": {
      "type": "string"
     },
     "namespace": {
      "type": "string",
      "description": "Empty for a node."
     },
     "kind": {
      "type": "string",
      "description": "`crash_loop`, `oom_killed`, `node_not_ready`…"
     },
     "object": {
      "type": "string",
      "description": "The workload, pod or node it is about."
     },
     "objectKind": {
      "type": [
       "string",
       "null"
      ],
      "description": "`Deployment`, `Pod`, `Node`…; None once the check no longer keeps the problem."
     },
     "app": {
      "type": [
       "string",
       "null"
      ]
     },
     "pods": {
      "type": "array",
      "items": {
       "type": "string"
      },
      "description": "The pods the check last saw affected, at most a dozen; empty for a node, or once forgotten."
     },
     "open": {
      "type": "boolean",
      "description": "The problem is open now (whichever episode this incident is)."
     }
    },
    "required": [
     "context",
     "namespace",
     "kind",
     "object",
     "objectKind",
     "app",
     "pods",
     "open"
    ],
    "additionalProperties": false
   },
   "IncidentListRow": {
    "type": "object",
    "properties": {
     "incident": {
      "$ref": "#/components/schemas/MonitorIncident"
     },
     "environment": {
      "type": [
       "string",
       "null"
      ],
      "description": "Its monitor's environment."
     },
     "durationSecs": {
      "type": "number",
      "description": "How long it lasted, or has been open so far, seconds."
     },
     "response": {
      "type": [
       "string",
       "null"
      ],
      "description": "Where the response stands in its record (`incident.record`): `investigating`, `identified`, `monitoring` or `resolved`; none without a record."
     }
    },
    "required": [
     "incident",
     "environment",
     "durationSecs",
     "response"
    ],
    "additionalProperties": false
   },
   "IncidentOfIssue": {
    "type": "object",
    "properties": {
     "id": {
      "type": [
       "string",
       "null"
      ],
      "description": "The newest incident of the monitor that raised the issue; none when no monitor did."
     },
     "monitorName": {
      "type": [
       "string",
       "null"
      ]
     }
    },
    "required": [
     "id",
     "monitorName"
    ],
    "additionalProperties": false
   },
   "IncidentPattern": {
    "type": "object",
    "properties": {
     "template": {
      "type": "string"
     },
     "count": {
      "type": "number"
     },
     "level": {
      "type": "string"
     },
     "services": {
      "type": "array",
      "items": {
       "type": "string"
      }
     }
    },
    "required": [
     "template",
     "count",
     "level",
     "services"
    ],
    "additionalProperties": false
   },
   "IncidentPosted": {
    "type": "object",
    "properties": {
     "key": {
      "type": "string"
     },
     "url": {
      "type": [
       "string",
       "null"
      ]
     },
     "message": {
      "type": "string"
     }
    },
    "required": [
     "key",
     "url",
     "message"
    ],
    "additionalProperties": false
   },
   "IncidentRecordRow": {
    "type": "object",
    "properties": {
     "status": {
      "type": "string",
      "description": "`investigating`, `identified`, `monitoring` or `resolved`."
     },
     "summary": {
      "type": "string"
     },
     "postmortem": {
      "type": [
       "string",
       "null"
      ],
      "description": "Markdown."
     },
     "postedTo": {
      "type": [
       "string",
       "null"
      ],
      "description": "The Jira key the postmortem was last posted to."
     },
     "updatedAt": {
      "type": "string"
     }
    },
    "required": [
     "status",
     "summary",
     "postmortem",
     "postedTo",
     "updatedAt"
    ],
    "additionalProperties": false
   },
   "IncidentRecordView": {
    "type": "object",
    "properties": {
     "record": {
      "anyOf": [
       {
        "$ref": "#/components/schemas/IncidentRecordRow"
       },
       {
        "type": "null"
       }
      ],
      "description": "None until somebody writes to it."
     },
     "timeline": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/IncidentTimelineEntry"
      },
      "description": "Oldest first."
     }
    },
    "required": [
     "record",
     "timeline"
    ],
    "additionalProperties": false
   },
   "IncidentRelated": {
    "type": "object",
    "properties": {
     "id": {
      "type": "string",
      "description": "Unique in the answer."
     },
     "group": {
      "type": "string",
      "description": "`changes`, `errors`, `performance`, `infrastructure`, `monitors`, `logs` or `watches`."
     },
     "kind": {
      "type": "string",
      "description": "What it is: `deploy`, `pipeline`, `deployment`, `release`, `run`, `issue`, `regression`, `5xx`, `transaction`, `host`, `datastore`, `external`, `incident`, `pattern`, `watch`."
     },
     "source": {
      "type": "string",
      "description": "The source it was read from, for the source toggles: `deploys`, `releases`, `runs`, `sentry`, `newrelic`, `cloudflare`, `monitors`, `logs`, `watches`."
     },
     "title": {
      "type": "string"
     },
     "detail": {
      "type": [
       "string",
       "null"
      ]
     },
     "severity": {
      "type": "string",
      "description": "`error`, `warning`, `success` or `info`."
     },
     "score": {
      "type": "number",
      "description": "0–100."
     },
     "reasons": {
      "type": "array",
      "items": {
       "type": "string"
      }
     },
     "linked": {
      "type": "boolean",
      "description": "It shares something with the incident beyond timing and size (`score::Scored::linked`): a change just before, the same route, path or host, or the same app. Only these are offered as likely related."
     },
     "at": {
      "type": [
       "number",
       "null"
      ],
      "description": "Its onset, ms; none when the source gives no time."
     },
     "sparkline": {
      "anyOf": [
       {
        "$ref": "#/components/schemas/IncidentSpark"
       },
       {
        "type": "null"
       }
      ]
     },
     "link": {
      "$ref": "#/components/schemas/TimelineRef",
      "description": "Where it is read in full: the Timeline's reference, plus `incident` (an incident id), `pattern` (a pattern hash, `parent` its Logs query) and `newrelic` (a transaction, host or call name)."
     }
    },
    "required": [
     "id",
     "group",
     "kind",
     "source",
     "title",
     "detail",
     "severity",
     "score",
     "reasons",
     "linked",
     "at",
     "sparkline",
     "link"
    ],
    "additionalProperties": false
   },
   "IncidentRepository": {
    "type": "object",
    "properties": {
     "workspace": {
      "type": [
       "string",
       "null"
      ],
      "description": "The workspace to investigate in; absent when nothing settles it and the person chooses."
     },
     "remembered": {
      "type": "boolean",
      "description": "The choice was made before and remembered."
     },
     "workspaces": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/SentryWorkspace"
      }
     }
    },
    "required": [
     "workspace",
     "remembered",
     "workspaces"
    ],
    "additionalProperties": false
   },
   "IncidentRow": {
    "type": "object",
    "properties": {
     "id": {
      "type": "string"
     },
     "checkId": {
      "type": "string"
     },
     "checkName": {
      "type": "string"
     },
     "startedAt": {
      "type": "string"
     },
     "endedAt": {
      "type": [
       "string",
       "null"
      ]
     },
     "cause": {
      "type": "string"
     },
     "failures": {
      "type": "number"
     }
    },
    "required": [
     "id",
     "checkId",
     "checkName",
     "startedAt",
     "endedAt",
     "cause",
     "failures"
    ],
    "additionalProperties": false
   },
   "IncidentSource": {
    "type": "object",
    "properties": {
     "id": {
      "type": "string"
     },
     "label": {
      "type": "string"
     },
     "read": {
      "type": "boolean",
      "description": "It answered."
     },
     "error": {
      "type": [
       "string",
       "null"
      ]
     }
    },
    "required": [
     "id",
     "label",
     "read",
     "error"
    ],
    "additionalProperties": false
   },
   "IncidentSpark": {
    "type": "object",
    "properties": {
     "current": {
      "type": "array",
      "items": {
       "type": "number"
      }
     },
     "baseline": {
      "type": "array",
      "items": {
       "type": "number"
      }
     }
    },
    "required": [
     "current",
     "baseline"
    ],
    "additionalProperties": false
   },
   "IncidentsScreen": {
    "type": "object",
    "properties": {
     "incidents": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/IncidentListRow"
      },
      "description": "The page of rows."
     },
     "total": {
      "type": "number",
      "description": "Rows after the facets and the search."
     },
     "all": {
      "type": "number",
      "description": "Incidents in the window before them."
     },
     "open": {
      "type": "number",
      "description": "Incidents still open in the window, before the facets."
     },
     "facets": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/MonitorFacet"
      }
     },
     "sources": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/MonitorSource"
      }
     },
     "range": {
      "type": "string",
      "description": "The preset read, or `custom`."
     },
     "from": {
      "type": "number",
      "description": "The window, ms."
     },
     "to": {
      "type": "number"
     },
     "page": {
      "type": "number"
     },
     "size": {
      "type": "number"
     }
    },
    "required": [
     "incidents",
     "total",
     "all",
     "open",
     "facets",
     "sources",
     "range",
     "from",
     "to",
     "page",
     "size"
    ],
    "additionalProperties": false
   },
   "IncidentSummary": {
    "type": "object",
    "properties": {
     "kind": {
      "type": "string",
      "description": "`security`, `cloudflare`, `kubernetes`, `sentry`, `metric`, `check`, `alert` or `other`."
     },
     "sentence": {
      "type": "string",
      "description": "What happened, in one sentence a person reads at a glance."
     },
     "target": {
      "anyOf": [
       {
        "$ref": "#/components/schemas/ShortText"
       },
       {
        "type": "null"
       }
      ],
      "description": "The URL or target the incident is about, shortened and in full."
     },
     "figures": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/SummaryFigure"
      },
      "description": "The figures that matter, as small stat blocks."
     },
     "advice": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/Advice"
      },
      "description": "What to do, one or two steps, each with the action that does it where there is one."
     },
     "history": {
      "$ref": "#/components/schemas/IncidentHistory"
     },
     "logsQuery": {
      "type": [
       "string",
       "null"
      ],
      "description": "What the drawer's log lines narrow to (a route, `service:<app>`, the alert's query)."
     }
    },
    "required": [
     "kind",
     "sentence",
     "target",
     "figures",
     "advice",
     "history",
     "logsQuery"
    ],
    "additionalProperties": false
   },
   "IncidentTimelineEntry": {
    "type": "object",
    "properties": {
     "id": {
      "type": [
       "string",
       "null"
      ],
      "description": "The note's id, for deleting it; none for the entries DevDash adds."
     },
     "at": {
      "type": "string",
      "description": "RFC 3339."
     },
     "kind": {
      "type": "string",
      "description": "`started`, `ended`, `triage`, `note`, `status`, `postmortem` or `posted`."
     },
     "text": {
      "type": "string"
     }
    },
    "required": [
     "id",
     "at",
     "kind",
     "text"
    ],
    "additionalProperties": false
   },
   "IncidentTriage": {
    "type": "object",
    "properties": {
     "verdict": {
      "type": "string",
      "description": "`code`, `infrastructure`, `noise` or `abstain`."
     },
     "label": {
      "type": [
       "string",
       "null"
      ],
      "description": "\"Looks like code\", …; None when the model was unsure or abstained."
     },
     "confidence": {
      "type": "number"
     },
     "model": {
      "type": "string"
     },
     "at": {
      "type": "string",
      "description": "RFC 3339."
     },
     "started": {
      "type": "boolean",
      "description": "An investigation was started because of it."
     },
     "note": {
      "type": [
       "string",
       "null"
      ],
      "description": "Why none was started, when a confident `code` did not start one."
     }
    },
    "required": [
     "verdict",
     "label",
     "confidence",
     "model",
     "at",
     "started",
     "note"
    ],
    "additionalProperties": false
   },
   "IncidentView": {
    "type": "object",
    "properties": {
     "incident": {
      "$ref": "#/components/schemas/MonitorIncident"
     },
     "monitor": {
      "anyOf": [
       {
        "$ref": "#/components/schemas/MonitorSummary"
       },
       {
        "type": "null"
       }
      ],
      "description": "None when the monitor was removed since."
     },
     "window": {
      "$ref": "#/components/schemas/IncidentWindow"
     },
     "series": {
      "anyOf": [
       {
        "$ref": "#/components/schemas/MonitorSeries"
       },
       {
        "type": "null"
       }
      ],
      "description": "The monitor's metric over the window, with its threshold."
     },
     "seriesNote": {
      "type": [
       "string",
       "null"
      ],
      "description": "Why there is no chart, when there is none."
     },
     "related": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/IncidentGroup"
      }
     },
     "sources": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/IncidentSource"
      }
     },
     "errors": {
      "type": "array",
      "items": {
       "type": "string"
      },
      "description": "Sources that failed, each in a sentence."
     },
     "findingId": {
      "type": [
       "string",
       "null"
      ],
      "description": "The security finding a security check's incident is about."
     },
     "kubernetes": {
      "anyOf": [
       {
        "$ref": "#/components/schemas/IncidentKubernetes"
       },
       {
        "type": "null"
       }
      ],
      "description": "What a Kubernetes incident is about, for its live pods and events (`kubernetes.pod`)."
     },
     "summary": {
      "$ref": "#/components/schemas/IncidentSummary",
      "description": "What happened in a sentence, the figures, what to do and the monitor's last week."
     }
    },
    "required": [
     "incident",
     "monitor",
     "window",
     "series",
     "seriesNote",
     "related",
     "sources",
     "errors",
     "findingId",
     "kubernetes",
     "summary"
    ],
    "additionalProperties": false
   },
   "IncidentWindow": {
    "type": "object",
    "properties": {
     "from": {
      "type": "number",
      "description": "ms."
     },
     "to": {
      "type": "number"
     },
     "baselineFrom": {
      "type": "number",
      "description": "The same span 24 hours earlier, ms."
     },
     "baselineTo": {
      "type": "number"
     },
     "defaultFrom": {
      "type": "number",
      "description": "The default window, for \"Reset\"."
     },
     "defaultTo": {
      "type": "number"
     },
     "custom": {
      "type": "boolean",
      "description": "`from`/`to` were asked for."
     }
    },
    "required": [
     "from",
     "to",
     "baselineFrom",
     "baselineTo",
     "defaultFrom",
     "defaultTo",
     "custom"
    ],
    "additionalProperties": false
   },
   "IntakeItem": {
    "type": "object",
    "properties": {
     "key": {
      "type": "string"
     },
     "title": {
      "type": "string"
     },
     "status": {
      "type": "string"
     },
     "completed": {
      "type": "boolean"
     }
    },
    "required": [
     "key",
     "title",
     "status",
     "completed"
    ],
    "additionalProperties": false
   },
   "IntakePrepared": {
    "type": "object",
    "properties": {
     "task": {
      "type": "string",
      "description": "The new task."
     }
    },
    "required": [
     "task"
    ],
    "additionalProperties": false
   },
   "Integration": {
    "type": "object",
    "properties": {
     "id": {
      "type": "string"
     },
     "name": {
      "type": "string"
     },
     "category": {
      "type": "string"
     },
     "account": {
      "type": [
       "string",
       "null"
      ],
      "description": "Whose account, in the provider's own words."
     },
     "health": {
      "type": "string",
      "description": "`Connected`, or what is wrong with it."
     },
     "syncStatus": {
      "type": [
       "string",
       "null"
      ],
      "description": "`ok`, `error`, `idle`, or absent where it does not sync."
     },
     "lastError": {
      "type": [
       "string",
       "null"
      ]
     },
     "lastSync": {
      "type": [
       "string",
       "null"
      ],
      "description": "RFC 3339."
     },
     "connected": {
      "type": "boolean"
     },
     "syncable": {
      "type": "boolean"
     },
     "roles": {
      "type": "array",
      "items": {
       "type": "string"
      },
      "description": "`tracker`, `forge`: a project holds at most one of each."
     },
     "config": {
      "type": "object",
      "additionalProperties": {
       "type": "string"
      },
      "description": "The saved settings, keyed by connect-form field, for the summary and to prefill the edit form. Plain fields only: a secret never leaves the keychain (`connect::saved_fields`)."
     },
     "summary": {
      "type": [
       "string",
       "null"
      ],
      "description": "What the connection reads, in a sentence, where the provider says: \"Reads: zone traffic, request logs. Not used: Pages, Workers.\""
     }
    },
    "required": [
     "id",
     "name",
     "category",
     "account",
     "health",
     "syncStatus",
     "lastError",
     "lastSync",
     "connected",
     "syncable",
     "roles",
     "config",
     "summary"
    ],
    "additionalProperties": false
   },
   "InventoryArgs": {
    "type": "object",
    "properties": {
     "system": {
      "type": "string",
      "description": "Absent for every system."
     }
    },
    "additionalProperties": false
   },
   "InvestigationOptions": {
    "type": "object",
    "properties": {
     "folder": {
      "type": "string"
     },
     "agent": {
      "type": "string",
      "description": "`claude` or `codex`."
     }
    },
    "required": [
     "folder",
     "agent"
    ],
    "additionalProperties": false
   },
   "InvestigationSnapshot": {
    "type": "object",
    "properties": {
     "options": {
      "$ref": "#/components/schemas/InvestigationOptions"
     },
     "turns": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/InvestigationTurn"
      }
     },
     "running": {
      "type": "boolean",
      "description": "Whether an answer is being worked on now."
     },
     "status": {
      "type": [
       "string",
       "null"
      ],
      "description": "What the agent is doing, in its own words, while it runs."
     },
     "preview": {
      "type": [
       "string",
       "null"
      ],
      "description": "The answer so far, while it runs."
     },
     "error": {
      "type": [
       "string",
       "null"
      ],
      "description": "Why the last attempt ended without an answer."
     },
     "cancelling": {
      "type": "boolean"
     }
    },
    "required": [
     "options",
     "turns",
     "running",
     "status",
     "preview",
     "error",
     "cancelling"
    ],
    "additionalProperties": false
   },
   "InvestigationTurn": {
    "type": "object",
    "properties": {
     "role": {
      "type": "string",
      "description": "`user` or `assistant`."
     },
     "text": {
      "type": "string"
     },
     "bullets": {
      "type": "array",
      "items": {
       "type": "string"
      }
     },
     "evidence": {
      "type": "array",
      "items": {
       "type": "string"
      }
     }
    },
    "required": [
     "role",
     "text",
     "bullets",
     "evidence"
    ],
    "additionalProperties": false
   },
   "IpGeo": {
    "type": "object",
    "properties": {
     "ip": {
      "type": "string"
     },
     "country": {
      "type": [
       "string",
       "null"
      ]
     },
     "countryName": {
      "type": [
       "string",
       "null"
      ]
     },
     "region": {
      "type": [
       "string",
       "null"
      ]
     },
     "city": {
      "type": [
       "string",
       "null"
      ]
     },
     "asn": {
      "type": [
       "number",
       "null"
      ]
     },
     "network": {
      "type": [
       "string",
       "null"
      ]
     },
     "server": {
      "type": "boolean",
      "description": "A cloud or hosting network: a server, not a person."
     },
     "lat": {
      "type": [
       "number",
       "null"
      ],
      "description": "Degrees, with the city database."
     },
     "lon": {
      "type": [
       "number",
       "null"
      ]
     }
    },
    "required": [
     "ip",
     "country",
     "countryName",
     "region",
     "city",
     "asn",
     "network",
     "server",
     "lat",
     "lon"
    ],
    "additionalProperties": false
   },
   "IpPath": {
    "type": "object",
    "properties": {
     "host": {
      "type": [
       "string",
       "null"
      ]
     },
     "path": {
      "type": "string"
     },
     "masked": {
      "type": "string",
      "description": "The path with its ids masked."
     },
     "count": {
      "type": "number"
     },
     "lastAt": {
      "type": "number",
      "description": "Seconds."
     }
    },
    "required": [
     "host",
     "path",
     "masked",
     "count",
     "lastAt"
    ],
    "additionalProperties": false
   },
   "IssueChange": {
    "type": "object",
    "properties": {
     "by": {
      "type": "string"
     },
     "at": {
      "type": "string"
     },
     "field": {
      "type": "string",
      "description": "The tracker's own field name: `status`, `assignee`, `Fix Version`."
     },
     "from": {
      "type": [
       "string",
       "null"
      ]
     },
     "to": {
      "type": [
       "string",
       "null"
      ]
     }
    },
    "required": [
     "by",
     "at",
     "field",
     "from",
     "to"
    ],
    "additionalProperties": false
   },
   "IssueComment": {
    "type": "object",
    "properties": {
     "id": {
      "type": "string"
     },
     "parentId": {
      "type": [
       "string",
       "null"
      ]
     },
     "createdAt": {
      "type": "string",
      "description": "The tracker's own timestamp."
     },
     "author": {
      "type": "string"
     },
     "at": {
      "type": "string",
      "description": "The same, as a date to read."
     },
     "body": {
      "type": "string",
      "description": "Markdown, converted from the tracker's document format."
     }
    },
    "required": [
     "id",
     "parentId",
     "createdAt",
     "author",
     "at",
     "body"
    ],
    "additionalProperties": false
   },
   "IssueDetail": {
    "type": "object",
    "properties": {
     "reference": {
      "type": "string"
     },
     "title": {
      "type": "string"
     },
     "url": {
      "type": [
       "string",
       "null"
      ]
     },
     "taskId": {
      "type": [
       "string",
       "null"
      ],
      "description": "The local task, where somebody has started one in the workspace this issue is tied to."
     },
     "fields": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/IssueField"
      },
      "description": "Everything the provider recorded, in the order a person reads it, and only what it recorded: a thin list is a thin ticket."
     },
     "pulls": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/IssueLink"
      },
      "description": "Pull requests whose title, branch or repository names this issue."
     },
     "conversation": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/IssueLink"
      },
      "description": "What was said about it somewhere other than the ticket."
     },
     "assignedToMe": {
      "type": "boolean",
      "description": "It is assigned to the account the Jira connection belongs to."
     }
    },
    "required": [
     "reference",
     "title",
     "url",
     "taskId",
     "fields",
     "pulls",
     "conversation",
     "assignedToMe"
    ],
    "additionalProperties": false
   },
   "IssueField": {
    "type": "object",
    "properties": {
     "label": {
      "type": "string"
     },
     "value": {
      "type": "string"
     },
     "key": {
      "type": "string",
      "description": "What the value names, where it names a record: the parent ticket's key."
     },
     "values": {
      "type": "array",
      "items": {
       "type": "string"
      },
      "description": "The items of a list field (releases), whose names may hold the \", \" `value` joins them with."
     }
    },
    "required": [
     "label",
     "value"
    ],
    "additionalProperties": false
   },
   "IssueLink": {
    "type": "object",
    "properties": {
     "title": {
      "type": "string"
     },
     "sub": {
      "type": "string",
      "description": "Where it came from, in a few words: `repo · OPEN`, `Ann · #general`."
     },
     "url": {
      "type": [
       "string",
       "null"
      ]
     }
    },
    "required": [
     "title",
     "sub",
     "url"
    ],
    "additionalProperties": false
   },
   "IssueRow": {
    "type": "object",
    "properties": {
     "id": {
      "type": "string",
      "description": "How the row is addressed: the tracker key for an issue, and `workspace/repo#42` for a pull request."
     },
     "reference": {
      "type": "string",
      "description": "What a person says out loud: `ENGR-9180`, or `#8736` for a pull request (whose own reference is the repository path, the same on every row)."
     },
     "title": {
      "type": "string"
     },
     "status": {
      "type": "string"
     },
     "priority": {
      "type": "string"
     },
     "when": {
      "type": "string",
      "description": "When it last moved, already in words. See `when_moved`."
     },
     "updatedAt": {
      "type": "string",
      "description": "When it last moved (else was created), RFC 3339, for whoever needs to compare or group by it (the Inbox's Today/Yesterday)."
     },
     "lane": {
      "type": "string",
      "description": "The board lane (`todo`, `progress`, `review`, `done`, `cancelled`), worked out by core from the tracker's category and status name."
     },
     "source": {
      "type": "string",
      "description": "Where the row came from: `jira`, a forge (`bitbucket`, `github`), or for a task with no ticket `local`, `automation` or `chat`."
     },
     "kind": {
      "type": "string",
      "description": "`Issue`, `Pull request`, and for a task with no ticket `Task` or `Epic`."
     },
     "assignee": {
      "type": "string",
      "description": "For a task with no ticket: who has it, its tags, and its dates (`YYYY-MM-DD`; `completed_at` is a moment). Absent on tickets and pull requests, which keep these elsewhere."
     },
     "labels": {
      "type": "array",
      "items": {
       "type": "string"
      }
     },
     "startAt": {
      "type": "string"
     },
     "dueAt": {
      "type": "string"
     },
     "completedAt": {
      "type": "string"
     },
     "subtasks": {
      "$ref": "#/components/schemas/Subtasks",
      "description": "Sub-tasks: how many, and how many are finished."
     },
     "open": {
      "type": "boolean",
      "description": "Still open with the provider."
     },
     "important": {
      "type": "boolean",
      "description": "The provider says this one needs a person."
     },
     "reason": {
      "type": "string",
      "description": "Why it needs a person, in words: `85d in Ready for QA`, `Highest priority`, `Waiting on your review for 3d`. Absent when it does not."
     },
     "stage": {
      "type": [
       "string",
       "null"
      ],
      "description": "A pull request's stage — Merged, Open, Declined. Absent on an issue."
     },
     "changesBy": {
      "type": "array",
      "items": {
       "type": "string"
      },
      "description": "Who has asked for changes on a pull request that is still open."
     },
     "comments": {
      "type": "number",
      "description": "How many comments a pull request has, and how many tasks on it are still open."
     },
     "openTasks": {
      "type": "number"
     },
     "ticket": {
      "$ref": "#/components/schemas/PullTicket",
      "description": "The ticket a pull request is about, as the tracker has it. Absent when it names none, or none the tracker knows."
     },
     "hasTask": {
      "type": "boolean",
      "description": "Whether a task exists for this issue. Only a marker: the task screen looks the task up itself."
     }
    },
    "required": [
     "id",
     "reference",
     "title",
     "status",
     "priority",
     "when",
     "lane",
     "source",
     "kind",
     "labels",
     "open",
     "important",
     "stage",
     "changesBy",
     "comments",
     "openTasks",
     "hasTask"
    ],
    "additionalProperties": false
   },
   "IssueTransition": {
    "type": "object",
    "properties": {
     "id": {
      "type": "string"
     },
     "name": {
      "type": "string",
      "description": "The transition's own name, e.g. \"Start progress\"."
     },
     "to": {
      "type": "string",
      "description": "The status it lands in, e.g. \"In Progress\"."
     },
     "category": {
      "type": "string",
      "description": "`new`, `indeterminate` or `done`."
     }
    },
    "required": [
     "id",
     "name",
     "to",
     "category"
    ],
    "additionalProperties": false
   },
   "IssueWritten": {
    "type": "object",
    "properties": {
     "key": {
      "type": "string"
     },
     "message": {
      "type": "string",
      "description": "What changed, in a sentence: \"Moved to In Progress.\""
     }
    },
    "required": [
     "key",
     "message"
    ],
    "additionalProperties": false
   },
   "ItemState": {
    "type": "object",
    "properties": {
     "read_version": {
      "type": [
       "string",
       "null"
      ],
      "description": "The item `version` last read. A new version is unread again."
     },
     "archived": {
      "type": "boolean"
     },
     "snoozed_until": {
      "type": [
       "number",
       "null"
      ],
      "description": "Unix seconds. Hidden from every folder but Snoozed until then."
     }
    },
    "required": [
     "read_version",
     "archived",
     "snoozed_until"
    ],
    "additionalProperties": false
   },
   "JevFeature": {
    "type": "string",
    "enum": [
     "inbox",
     "plan-change",
     "incidents"
    ]
   },
   "JevFeatureInfo": {
    "type": "object",
    "properties": {
     "feature": {
      "$ref": "#/components/schemas/JevFeature"
     },
     "label": {
      "type": "string"
     },
     "disclosure": {
      "type": "string",
      "description": "What this feature sends, in one sentence, for the consent toggle."
     },
     "enabled": {
      "type": "boolean"
     }
    },
    "required": [
     "feature",
     "label",
     "disclosure",
     "enabled"
    ],
    "additionalProperties": false
   },
   "JevProvider": {
    "type": "string",
    "enum": [
     "jev",
     "clef",
     "clef-flash"
    ]
   },
   "JevProviderInfo": {
    "type": "object",
    "properties": {
     "provider": {
      "$ref": "#/components/schemas/JevProvider"
     },
     "label": {
      "type": "string"
     }
    },
    "required": [
     "provider",
     "label"
    ],
    "additionalProperties": false
   },
   "JevSaved": {
    "type": "object",
    "properties": {
     "message": {
      "type": "string",
      "description": "What happened, e.g. \"Connected to clef-flash. Settings saved.\""
     },
     "settings": {
      "$ref": "#/components/schemas/JevSettings"
     }
    },
    "required": [
     "message",
     "settings"
    ],
    "additionalProperties": false
   },
   "JevSettings": {
    "type": "object",
    "properties": {
     "enabled": {
      "type": "boolean"
     },
     "provider": {
      "$ref": "#/components/schemas/JevProvider"
     },
     "account": {
      "type": [
       "string",
       "null"
      ],
      "description": "The Cloudflare account id, for Clef."
     },
     "providers": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/JevProviderInfo"
      },
      "description": "The providers to choose from, the suggested one first."
     },
     "features": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/JevFeatureInfo"
      }
     },
     "hasKey": {
      "type": "boolean",
      "description": "Whether a key is stored for this project."
     }
    },
    "required": [
     "enabled",
     "provider",
     "account",
     "providers",
     "features",
     "hasKey"
    ],
    "additionalProperties": false
   },
   "JiraSyncScope": {
    "type": "object",
    "properties": {
     "projectKeys": {
      "type": "array",
      "items": {
       "type": "string"
      },
      "description": "Jira project keys, e.g. `ENGR`. Empty means every project."
     },
     "jql": {
      "type": [
       "string",
       "null"
      ],
      "description": "Extra JQL, AND-ed with the sync window."
     },
     "boardId": {
      "type": [
       "number",
       "null"
      ],
      "description": "A board whose saved filter narrows the sync."
     }
    },
    "required": [
     "projectKeys",
     "jql",
     "boardId"
    ],
    "additionalProperties": false
   },
   "JiraTasksConfig": {
    "type": "object",
    "properties": {
     "connected": {
      "type": "boolean"
     },
     "syncScope": {
      "$ref": "#/components/schemas/JiraSyncScope"
     },
     "removed": {
      "type": [
       "number",
       "null"
      ],
      "description": "After a save that changed the scope: stored issues it removed."
     }
    },
    "required": [
     "connected",
     "syncScope",
     "removed"
    ],
    "additionalProperties": false
   },
   "JsonValue": {
    "anyOf": [
     {
      "type": "number"
     },
     {
      "type": "string"
     },
     {
      "type": "boolean"
     },
     {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/JsonValue"
      }
     },
     {
      "type": "object",
      "additionalProperties": {
       "$ref": "#/components/schemas/JsonValue"
      }
     },
     {
      "type": "null"
     }
    ]
   },
   "K8sAttention": {
    "type": "object",
    "properties": {
     "kind": {
      "type": "string",
      "description": "`Pod`, `Workload` or `Node`."
     },
     "detail": {
      "type": [
       "string",
       "null"
      ],
      "description": "A workload's kind (`Deployment`…)."
     },
     "namespace": {
      "type": [
       "string",
       "null"
      ]
     },
     "name": {
      "type": "string"
     },
     "level": {
      "type": "string",
      "description": "`critical` or `warning`."
     },
     "reason": {
      "type": "string"
     },
     "restarts": {
      "type": "number"
     }
    },
    "required": [
     "kind",
     "detail",
     "namespace",
     "name",
     "level",
     "reason",
     "restarts"
    ],
    "additionalProperties": false
   },
   "K8sCheck": {
    "type": "object",
    "properties": {
     "checkedAt": {
      "type": [
       "number",
       "null"
      ],
      "description": "Seconds."
     },
     "running": {
      "type": "boolean"
     },
     "errors": {
      "type": "array",
      "items": {
       "type": "string"
      }
     },
     "open": {
      "type": "number",
      "description": "Problems open now, across the contexts."
     }
    },
    "required": [
     "checkedAt",
     "running",
     "errors",
     "open"
    ],
    "additionalProperties": false
   },
   "K8sCondition": {
    "type": "object",
    "properties": {
     "kind": {
      "type": "string"
     },
     "status": {
      "type": "string"
     },
     "reason": {
      "type": [
       "string",
       "null"
      ]
     }
    },
    "required": [
     "kind",
     "status",
     "reason"
    ],
    "additionalProperties": false
   },
   "K8sContainer": {
    "type": "object",
    "properties": {
     "name": {
      "type": "string"
     },
     "image": {
      "type": "string"
     },
     "ready": {
      "type": "boolean"
     },
     "restarts": {
      "type": "number"
     },
     "state": {
      "type": "string"
     },
     "reason": {
      "type": [
       "string",
       "null"
      ]
     },
     "message": {
      "type": [
       "string",
       "null"
      ]
     },
     "lastReason": {
      "type": [
       "string",
       "null"
      ]
     },
     "lastExitCode": {
      "type": [
       "number",
       "null"
      ]
     },
     "lastFinished": {
      "type": [
       "number",
       "null"
      ]
     },
     "ports": {
      "type": "array",
      "items": {
       "type": "number"
      }
     }
    },
    "required": [
     "name",
     "image",
     "ready",
     "restarts",
     "state",
     "reason",
     "message",
     "lastReason",
     "lastExitCode",
     "lastFinished",
     "ports"
    ],
    "additionalProperties": false
   },
   "K8sContext": {
    "type": "object",
    "properties": {
     "name": {
      "type": "string"
     },
     "cluster": {
      "type": "string"
     },
     "namespace": {
      "type": [
       "string",
       "null"
      ]
     },
     "user": {
      "type": "string"
     },
     "current": {
      "type": "boolean"
     },
     "server": {
      "type": [
       "string",
       "null"
      ]
     },
     "exec": {
      "type": [
       "string",
       "null"
      ],
      "description": "The exec plugin that signs the user in, if any."
     }
    },
    "required": [
     "name",
     "cluster",
     "namespace",
     "user",
     "current",
     "server",
     "exec"
    ],
    "additionalProperties": false
   },
   "K8sContexts": {
    "type": "object",
    "properties": {
     "contexts": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/K8sContext"
      }
     },
     "error": {
      "type": [
       "string",
       "null"
      ]
     }
    },
    "required": [
     "contexts",
     "error"
    ],
    "additionalProperties": false
   },
   "K8sContextTest": {
    "type": "object",
    "properties": {
     "context": {
      "type": "string"
     },
     "ok": {
      "type": "boolean"
     },
     "detail": {
      "type": "string",
      "description": "\"Kubernetes 1.30, 12 namespaces\", or why it failed, in a sentence."
     }
    },
    "required": [
     "context",
     "ok",
     "detail"
    ],
    "additionalProperties": false
   },
   "K8sDetectedContext": {
    "type": "object",
    "properties": {
     "name": {
      "type": "string"
     },
     "cluster": {
      "type": "string"
     },
     "clusterName": {
      "type": "string",
      "description": "`prod-k8s` for an EKS ARN; the cluster as named otherwise."
     },
     "region": {
      "type": [
       "string",
       "null"
      ]
     },
     "serverHost": {
      "type": [
       "string",
       "null"
      ]
     },
     "namespace": {
      "type": [
       "string",
       "null"
      ]
     },
     "current": {
      "type": "boolean"
     },
     "auth": {
      "type": "string",
      "description": "`exec`, `token`, `certificate`, `basic`, `oidc` or `none`."
     },
     "execCommand": {
      "type": [
       "string",
       "null"
      ],
      "description": "The exec plugin as the kubeconfig names it (`aws`)."
     },
     "execPath": {
      "type": [
       "string",
       "null"
      ],
      "description": "Where it was found on the login PATH."
     },
     "execArch": {
      "type": [
       "string",
       "null"
      ],
      "description": "`arm64`, `x86_64`, `universal`, `script` or `unknown`."
     },
     "problem": {
      "type": [
       "string",
       "null"
      ],
      "description": "What stops it signing in, found without trying."
     }
    },
    "required": [
     "name",
     "cluster",
     "clusterName",
     "region",
     "serverHost",
     "namespace",
     "current",
     "auth",
     "execCommand",
     "execPath",
     "execArch",
     "problem"
    ],
    "additionalProperties": false
   },
   "K8sDetection": {
    "type": "object",
    "properties": {
     "path": {
      "type": "string",
      "description": "The kubeconfig read, as a path (`~/.kube/config`)."
     },
     "exists": {
      "type": "boolean"
     },
     "error": {
      "type": [
       "string",
       "null"
      ]
     },
     "kubectl": {
      "type": [
       "string",
       "null"
      ],
      "description": "Where `kubectl` is on the login PATH."
     },
     "contexts": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/K8sDetectedContext"
      }
     },
     "problems": {
      "type": "array",
      "items": {
       "type": "string"
      }
     }
    },
    "required": [
     "path",
     "exists",
     "error",
     "kubectl",
     "contexts",
     "problems"
    ],
    "additionalProperties": false
   },
   "K8sEvent": {
    "type": "object",
    "properties": {
     "namespace": {
      "type": "string"
     },
     "kind": {
      "type": "string",
      "description": "`Normal` or `Warning`."
     },
     "reason": {
      "type": "string"
     },
     "message": {
      "type": "string"
     },
     "objectKind": {
      "type": "string"
     },
     "objectName": {
      "type": "string"
     },
     "count": {
      "type": "number"
     },
     "last": {
      "type": [
       "number",
       "null"
      ]
     },
     "source": {
      "type": [
       "string",
       "null"
      ]
     }
    },
    "required": [
     "namespace",
     "kind",
     "reason",
     "message",
     "objectKind",
     "objectName",
     "count",
     "last",
     "source"
    ],
    "additionalProperties": false
   },
   "K8sExec": {
    "type": "object",
    "properties": {
     "groupId": {
      "type": "string",
      "description": "The terminal group it opened in."
     },
     "sessionId": {
      "type": "string"
     }
    },
    "required": [
     "groupId",
     "sessionId"
    ],
    "additionalProperties": false
   },
   "K8sForward": {
    "type": "object",
    "properties": {
     "id": {
      "type": "string"
     },
     "context": {
      "type": "string"
     },
     "namespace": {
      "type": "string"
     },
     "target": {
      "type": "string",
      "description": "`pod/<name>` or `svc/<name>`."
     },
     "remotePort": {
      "type": "number"
     },
     "localPort": {
      "type": "number"
     },
     "pid": {
      "type": "number"
     },
     "url": {
      "type": "string",
      "description": "`http://localhost:<port>`."
     },
     "startedAt": {
      "type": "string",
      "description": "RFC 3339."
     }
    },
    "required": [
     "id",
     "context",
     "namespace",
     "target",
     "remotePort",
     "localPort",
     "pid",
     "url",
     "startedAt"
    ],
    "additionalProperties": false
   },
   "K8sForwards": {
    "type": "object",
    "properties": {
     "forwards": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/K8sForward"
      }
     }
    },
    "required": [
     "forwards"
    ],
    "additionalProperties": false
   },
   "K8sLogLine": {
    "type": "object",
    "properties": {
     "at": {
      "type": [
       "number",
       "null"
      ],
      "description": "Milliseconds, when the line (or its JSON) had a timestamp."
     },
     "text": {
      "type": "string"
     },
     "structured": {
      "type": "boolean",
      "description": "JSON, logfmt or an access log, read by Logs' own parser: `message` and `fields` are its parts."
     },
     "level": {
      "type": "string",
      "description": "`trace`…`fatal`, sniffed for plain text; empty when there is none."
     },
     "message": {
      "type": "string"
     },
     "fields": {
      "type": "array",
      "items": {
       "type": "array",
       "items": {
        "type": "string"
       },
       "minItems": 2,
       "maxItems": 2
      },
      "description": "The line's other fields, in key order."
     }
    },
    "required": [
     "at",
     "text",
     "structured",
     "level",
     "message",
     "fields"
    ],
    "additionalProperties": false
   },
   "K8sNamespaceRow": {
    "type": "object",
    "properties": {
     "namespace": {
      "type": "string"
     },
     "pods": {
      "type": "number"
     },
     "notReady": {
      "type": "number"
     },
     "restarts": {
      "type": "number"
     },
     "cpuM": {
      "type": [
       "number",
       "null"
      ],
      "description": "Millicores in use; None without the metrics API."
     },
     "memMi": {
      "type": [
       "number",
       "null"
      ],
      "description": "MiB in use; None without the metrics API."
     },
     "cpuRequestM": {
      "type": "number"
     },
     "memRequestMi": {
      "type": "number"
     }
    },
    "required": [
     "namespace",
     "pods",
     "notReady",
     "restarts",
     "cpuM",
     "memMi",
     "cpuRequestM",
     "memRequestMi"
    ],
    "additionalProperties": false
   },
   "K8sNodeCounts": {
    "type": "object",
    "properties": {
     "total": {
      "type": "number"
     },
     "ready": {
      "type": "number"
     },
     "notReady": {
      "type": "number"
     },
     "pressure": {
      "type": "number",
      "description": "Ready but reporting memory, disk or PID pressure."
     }
    },
    "required": [
     "total",
     "ready",
     "notReady",
     "pressure"
    ],
    "additionalProperties": false
   },
   "K8sNodeUse": {
    "type": "object",
    "properties": {
     "name": {
      "type": "string"
     },
     "ready": {
      "type": "boolean"
     },
     "cpuM": {
      "type": [
       "number",
       "null"
      ]
     },
     "cpuAllocatableM": {
      "type": [
       "number",
       "null"
      ]
     },
     "memMi": {
      "type": [
       "number",
       "null"
      ]
     },
     "memAllocatableMi": {
      "type": [
       "number",
       "null"
      ]
     }
    },
    "required": [
     "name",
     "ready",
     "cpuM",
     "cpuAllocatableM",
     "memMi",
     "memAllocatableMi"
    ],
    "additionalProperties": false
   },
   "K8sOverview": {
    "type": "object",
    "properties": {
     "context": {
      "type": "string",
      "description": "The context read."
     },
     "pods": {
      "$ref": "#/components/schemas/K8sPodCounts"
     },
     "workloads": {
      "$ref": "#/components/schemas/K8sWorkloadCounts"
     },
     "nodes": {
      "anyOf": [
       {
        "$ref": "#/components/schemas/K8sNodeCounts"
       },
       {
        "type": "null"
       }
      ],
      "description": "None when the credentials may not list nodes."
     },
     "warningEvents": {
      "type": "number",
      "description": "Warning events in the last hour."
     },
     "attention": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/K8sAttention"
      }
     },
     "namespaces": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/K8sNamespaceRow"
      }
     },
     "usage": {
      "$ref": "#/components/schemas/K8sUsage"
     },
     "readAt": {
      "type": "number",
      "description": "Seconds."
     }
    },
    "required": [
     "context",
     "pods",
     "workloads",
     "nodes",
     "warningEvents",
     "attention",
     "namespaces",
     "usage",
     "readAt"
    ],
    "additionalProperties": false
   },
   "K8sPod": {
    "type": "object",
    "properties": {
     "namespace": {
      "type": "string"
     },
     "name": {
      "type": "string"
     },
     "app": {
      "type": [
       "string",
       "null"
      ]
     },
     "phase": {
      "type": "string"
     },
     "status": {
      "type": "string",
      "description": "What kubectl prints in STATUS."
     },
     "health": {
      "type": "string",
      "description": "`ok`, `warning` or `critical`."
     },
     "ready": {
      "type": "string"
     },
     "restarts": {
      "type": "number"
     },
     "node": {
      "type": [
       "string",
       "null"
      ]
     },
     "ip": {
      "type": [
       "string",
       "null"
      ]
     },
     "created": {
      "type": [
       "number",
       "null"
      ]
     },
     "owner": {
      "type": [
       "string",
       "null"
      ]
     },
     "workload": {
      "type": [
       "string",
       "null"
      ]
     },
     "containers": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/K8sContainer"
      }
     },
     "lastReason": {
      "type": [
       "string",
       "null"
      ]
     }
    },
    "required": [
     "namespace",
     "name",
     "app",
     "phase",
     "status",
     "health",
     "ready",
     "restarts",
     "node",
     "ip",
     "created",
     "owner",
     "workload",
     "containers",
     "lastReason"
    ],
    "additionalProperties": false
   },
   "K8sPodCounts": {
    "type": "object",
    "properties": {
     "total": {
      "type": "number"
     },
     "ok": {
      "type": "number"
     },
     "warning": {
      "type": "number"
     },
     "critical": {
      "type": "number"
     }
    },
    "required": [
     "total",
     "ok",
     "warning",
     "critical"
    ],
    "additionalProperties": false
   },
   "K8sPodDetail": {
    "type": "object",
    "properties": {
     "pod": {
      "$ref": "#/components/schemas/K8sPod"
     },
     "labels": {
      "type": "object",
      "additionalProperties": {
       "type": "string"
      }
     },
     "conditions": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/K8sCondition"
      }
     },
     "qos": {
      "type": [
       "string",
       "null"
      ]
     },
     "serviceAccount": {
      "type": [
       "string",
       "null"
      ]
     },
     "events": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/K8sEvent"
      }
     },
     "logSource": {
      "type": [
       "string",
       "null"
      ],
      "description": "The enabled `kubernetes` log source that streams this pod, if any: its lines are in Logs."
     },
     "forwards": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/K8sForward"
      },
      "description": "Port-forwards to this pod running now."
     }
    },
    "required": [
     "pod",
     "labels",
     "conditions",
     "qos",
     "serviceAccount",
     "events",
     "logSource",
     "forwards"
    ],
    "additionalProperties": false
   },
   "K8sPodLogs": {
    "type": "object",
    "properties": {
     "lines": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/K8sLogLine"
      }
     }
    },
    "required": [
     "lines"
    ],
    "additionalProperties": false
   },
   "K8sPodUse": {
    "type": "object",
    "properties": {
     "namespace": {
      "type": "string"
     },
     "name": {
      "type": "string"
     },
     "cpuM": {
      "type": "number"
     },
     "memMi": {
      "type": "number"
     },
     "cpuRequestM": {
      "type": [
       "number",
       "null"
      ]
     },
     "cpuLimitM": {
      "type": [
       "number",
       "null"
      ]
     },
     "memRequestMi": {
      "type": [
       "number",
       "null"
      ]
     },
     "memLimitMi": {
      "type": [
       "number",
       "null"
      ]
     }
    },
    "required": [
     "namespace",
     "name",
     "cpuM",
     "memMi",
     "cpuRequestM",
     "cpuLimitM",
     "memRequestMi",
     "memLimitMi"
    ],
    "additionalProperties": false
   },
   "K8sTest": {
    "type": "object",
    "properties": {
     "results": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/K8sContextTest"
      }
     }
    },
    "required": [
     "results"
    ],
    "additionalProperties": false
   },
   "K8sUsage": {
    "type": "object",
    "properties": {
     "available": {
      "type": "boolean",
      "description": "The cluster served its metrics API."
     },
     "why": {
      "type": [
       "string",
       "null"
      ],
      "description": "Why it did not."
     },
     "nodes": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/K8sNodeUse"
      }
     },
     "topCpu": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/K8sPodUse"
      }
     },
     "topMemory": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/K8sPodUse"
      }
     }
    },
    "required": [
     "available",
     "why",
     "nodes",
     "topCpu",
     "topMemory"
    ],
    "additionalProperties": false
   },
   "K8sWorkload": {
    "type": "object",
    "properties": {
     "kind": {
      "type": "string"
     },
     "namespace": {
      "type": "string"
     },
     "name": {
      "type": "string"
     },
     "app": {
      "type": [
       "string",
       "null"
      ]
     },
     "ready": {
      "type": "number"
     },
     "desired": {
      "type": "number"
     },
     "upToDate": {
      "type": "number"
     },
     "available": {
      "type": "number"
     },
     "images": {
      "type": "array",
      "items": {
       "type": "string"
      }
     },
     "created": {
      "type": [
       "number",
       "null"
      ]
     },
     "status": {
      "type": "string",
      "description": "`ok`, `progressing`, `degraded`, `failed`, `suspended`, `complete`."
     },
     "reason": {
      "type": [
       "string",
       "null"
      ]
     },
     "selector": {
      "type": [
       "string",
       "null"
      ]
     },
     "revision": {
      "type": [
       "string",
       "null"
      ]
     }
    },
    "required": [
     "kind",
     "namespace",
     "name",
     "app",
     "ready",
     "desired",
     "upToDate",
     "available",
     "images",
     "created",
     "status",
     "reason",
     "selector",
     "revision"
    ],
    "additionalProperties": false
   },
   "K8sWorkloadCounts": {
    "type": "object",
    "properties": {
     "total": {
      "type": "number"
     },
     "ok": {
      "type": "number"
     },
     "progressing": {
      "type": "number"
     },
     "degraded": {
      "type": "number"
     },
     "failed": {
      "type": "number"
     }
    },
    "required": [
     "total",
     "ok",
     "progressing",
     "degraded",
     "failed"
    ],
    "additionalProperties": false
   },
   "KubernetesCheckStarted": {
    "type": "object",
    "properties": {
     "started": {
      "type": "boolean"
     }
    },
    "required": [
     "started"
    ],
    "additionalProperties": false
   },
   "KubernetesScreen": {
    "type": "object",
    "properties": {
     "connected": {
      "type": "boolean"
     },
     "contexts": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/K8sContext"
      },
      "description": "The contexts the connection reads."
     },
     "context": {
      "type": [
       "string",
       "null"
      ]
     },
     "view": {
      "type": "string"
     },
     "namespaces": {
      "type": "array",
      "items": {
       "type": "string"
      },
      "description": "The namespaces read."
     },
     "workloads": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/K8sWorkload"
      }
     },
     "pods": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/K8sPod"
      }
     },
     "events": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/K8sEvent"
      }
     },
     "check": {
      "anyOf": [
       {
        "$ref": "#/components/schemas/K8sCheck"
       },
       {
        "type": "null"
       }
      ]
     },
     "kubectl": {
      "type": "boolean",
      "description": "`kubectl` was found on the login PATH: exec and port-forward need it."
     },
     "errors": {
      "type": "array",
      "items": {
       "type": "string"
      }
     }
    },
    "required": [
     "connected",
     "contexts",
     "context",
     "view",
     "namespaces",
     "workloads",
     "pods",
     "events",
     "check",
     "kubectl",
     "errors"
    ],
    "additionalProperties": false
   },
   "Legacy": {
    "type": "object",
    "properties": {
     "sources": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/LegacySource"
      }
     }
    },
    "required": [
     "sources"
    ],
    "additionalProperties": false
   },
   "LegacyProject": {
    "type": "object",
    "properties": {
     "id": {
      "type": "string"
     },
     "name": {
      "type": "string"
     },
     "present": {
      "type": "boolean",
      "description": "Already in this service's registry (same id), so importing would skip it."
     }
    },
    "required": [
     "id",
     "name",
     "present"
    ],
    "additionalProperties": false
   },
   "LegacySource": {
    "type": "object",
    "properties": {
     "kind": {
      "type": "string",
      "description": "`v7` or `v8`."
     },
     "dir": {
      "type": "string"
     },
     "projects": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/LegacyProject"
      }
     }
    },
    "required": [
     "kind",
     "dir",
     "projects"
    ],
    "additionalProperties": false
   },
   "LinkedIssue": {
    "type": "object",
    "properties": {
     "key": {
      "type": "string"
     },
     "title": {
      "type": "string",
      "description": "Empty where the key is not synced here: it is still what the author meant, so it is still listed."
     },
     "status": {
      "type": "string"
     },
     "assignee": {
      "type": "string"
     },
     "priority": {
      "type": "string"
     },
     "kind": {
      "type": "string"
     },
     "reporter": {
      "type": "string"
     },
     "release": {
      "type": "string"
     }
    },
    "required": [
     "key",
     "title",
     "status",
     "assignee",
     "priority",
     "kind",
     "reporter",
     "release"
    ],
    "additionalProperties": false
   },
   "LiveEvent": {
    "type": "object",
    "properties": {
     "id": {
      "type": "string"
     },
     "time": {
      "type": "string",
      "description": "A wall clock: these are read as a stream, and a date on every row of one day's events is the same date repeated."
     },
     "timestamp": {
      "type": [
       "string",
       "null"
      ],
      "description": "RFC 3339, for sorting and filtering."
     },
     "source": {
      "type": "string"
     },
     "kind": {
      "type": "string",
      "description": "`error.seen`, `deploy.finished` — the provider's own vocabulary."
     },
     "entity": {
      "type": "string"
     },
     "environment": {
      "type": [
       "string",
       "null"
      ]
     },
     "status": {
      "type": [
       "string",
       "null"
      ],
      "description": "`error`, `ok`, or nothing."
     },
     "props": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/EventProp"
      },
      "description": "Label/value pairs the provider attached."
     }
    },
    "required": [
     "id",
     "time",
     "timestamp",
     "source",
     "kind",
     "entity",
     "environment",
     "status",
     "props"
    ],
    "additionalProperties": false
   },
   "LiveScreen": {
    "type": "object",
    "properties": {
     "events": {
      "anyOf": [
       {
        "type": "array",
        "items": {
         "$ref": "#/components/schemas/LiveEvent"
        }
       },
       {
        "type": "null"
       }
      ]
     },
     "watches": {
      "anyOf": [
       {
        "type": "array",
        "items": {
         "$ref": "#/components/schemas/Watch"
        }
       },
       {
        "type": "null"
       }
      ]
     },
     "errors": {
      "type": "array",
      "items": {
       "type": "string"
      }
     }
    },
    "required": [
     "events",
     "watches",
     "errors"
    ],
    "additionalProperties": false
   },
   "LocalAccepted": {
    "type": "object",
    "properties": {
     "accepted": {
      "type": "boolean"
     },
     "message": {
      "type": "string"
     }
    },
    "required": [
     "accepted",
     "message"
    ],
    "additionalProperties": false
   },
   "LocalContainer": {
    "type": "object",
    "properties": {
     "id": {
      "type": "string"
     },
     "shortId": {
      "type": "string"
     },
     "name": {
      "type": "string"
     },
     "image": {
      "type": "string"
     },
     "command": {
      "type": "string"
     },
     "state": {
      "type": "string"
     },
     "status": {
      "type": "string"
     },
     "health": {
      "type": "string"
     },
     "created": {
      "type": [
       "string",
       "null"
      ],
      "description": "RFC 3339."
     },
     "ports": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/LocalPublished"
      }
     },
     "composeProject": {
      "type": [
       "string",
       "null"
      ]
     },
     "composeService": {
      "type": [
       "string",
       "null"
      ]
     },
     "devdash": {
      "type": "boolean",
      "description": "Made by DevDash's runtime for a task."
     },
     "taskId": {
      "type": [
       "string",
       "null"
      ],
      "description": "The task, when the environment is this project's."
     },
     "taskTitle": {
      "type": [
       "string",
       "null"
      ]
     },
     "taskKey": {
      "type": [
       "string",
       "null"
      ]
     },
     "cpuPct": {
      "type": [
       "number",
       "null"
      ]
     },
     "memoryBytes": {
      "type": [
       "number",
       "null"
      ]
     },
     "memoryLimit": {
      "type": [
       "number",
       "null"
      ]
     }
    },
    "required": [
     "id",
     "shortId",
     "name",
     "image",
     "command",
     "state",
     "status",
     "health",
     "created",
     "ports",
     "composeProject",
     "composeService",
     "devdash",
     "taskId",
     "taskTitle",
     "taskKey",
     "cpuPct",
     "memoryBytes",
     "memoryLimit"
    ],
    "additionalProperties": false
   },
   "LocalContainers": {
    "type": "object",
    "properties": {
     "available": {
      "type": "boolean",
      "description": "Docker answered."
     },
     "socket": {
      "type": [
       "string",
       "null"
      ]
     },
     "problem": {
      "type": [
       "string",
       "null"
      ]
     },
     "containers": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/LocalContainer"
      }
     },
     "logSource": {
      "type": [
       "string",
       "null"
      ],
      "description": "The enabled Docker log source, so \"Logs\" can open filtered to a container."
     }
    },
    "required": [
     "available",
     "socket",
     "problem",
     "containers",
     "logSource"
    ],
    "additionalProperties": false
   },
   "LocalEnvironment": {
    "type": "object",
    "properties": {
     "taskId": {
      "type": "string"
     },
     "taskSlug": {
      "type": "string"
     },
     "taskTitle": {
      "type": "string"
     },
     "taskKey": {
      "type": [
       "string",
       "null"
      ],
      "description": "The tracker key (`ENGR-12`) when the task has one."
     },
     "workspace": {
      "type": "string"
     },
     "directory": {
      "type": "string",
      "description": "The worktree, or the repository when the task has none."
     },
     "composeProject": {
      "type": [
       "string",
       "null"
      ],
      "description": "The Compose project, `devdash-<slug>`."
     },
     "state": {
      "type": "string",
      "description": "`up`, `starting`, `unhealthy`, `stopped`, `failed`, or `none` before the first start."
     },
     "health": {
      "type": "string",
      "description": "Core's aggregate over the running services."
     },
     "pending": {
      "type": [
       "string",
       "null"
      ],
      "description": "`starting`, `stopping` or `restarting` while an action runs."
     },
     "lastError": {
      "type": [
       "string",
       "null"
      ]
     },
     "startedAt": {
      "type": [
       "string",
       "null"
      ],
      "description": "When the earliest running service started (RFC 3339)."
     },
     "primaryUrl": {
      "type": [
       "string",
       "null"
      ]
     },
     "configured": {
      "type": "boolean",
      "description": "A Compose file or processes are configured, so the environment can start."
     },
     "configError": {
      "type": [
       "string",
       "null"
      ],
      "description": "Why `.devdash.yaml` could not be read."
     },
     "services": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/LocalEnvService"
      }
     }
    },
    "required": [
     "taskId",
     "taskSlug",
     "taskTitle",
     "taskKey",
     "workspace",
     "directory",
     "composeProject",
     "state",
     "health",
     "pending",
     "lastError",
     "startedAt",
     "primaryUrl",
     "configured",
     "configError",
     "services"
    ],
    "additionalProperties": false
   },
   "LocalEnvService": {
    "type": "object",
    "properties": {
     "name": {
      "type": "string"
     },
     "kind": {
      "type": "string",
      "description": "`container` or `process`."
     },
     "state": {
      "type": "string",
      "description": "Docker's state for a container (`running`, `exited`…); the supervisor's for a process (`starting`, `running`, `restarting`, `stopped`, `failed`)."
     },
     "health": {
      "type": "string",
      "description": "`healthy`, `degraded`, `unhealthy`, `starting` or `unknown`."
     },
     "primary": {
      "type": "boolean"
     },
     "url": {
      "type": [
       "string",
       "null"
      ],
      "description": "Through DevDash's proxy: `http://<task>.devdash.localhost:<port>`."
     },
     "localUrl": {
      "type": [
       "string",
       "null"
      ],
      "description": "Straight to the published port."
     },
     "hostname": {
      "type": [
       "string",
       "null"
      ]
     },
     "hostPort": {
      "type": [
       "number",
       "null"
      ]
     },
     "containerPort": {
      "type": [
       "number",
       "null"
      ]
     },
     "containerId": {
      "type": [
       "string",
       "null"
      ]
     },
     "containerName": {
      "type": [
       "string",
       "null"
      ]
     },
     "image": {
      "type": [
       "string",
       "null"
      ]
     },
     "pid": {
      "type": [
       "number",
       "null"
      ]
     },
     "command": {
      "type": [
       "string",
       "null"
      ]
     },
     "workingDir": {
      "type": [
       "string",
       "null"
      ]
     },
     "cpuPct": {
      "type": [
       "number",
       "null"
      ]
     },
     "memoryBytes": {
      "type": [
       "number",
       "null"
      ]
     },
     "startedAt": {
      "type": [
       "string",
       "null"
      ]
     },
     "restarts": {
      "type": [
       "number",
       "null"
      ]
     },
     "detail": {
      "type": [
       "string",
       "null"
      ],
      "description": "Why a process failed, or Docker's status sentence."
     }
    },
    "required": [
     "name",
     "kind",
     "state",
     "health",
     "primary",
     "url",
     "localUrl",
     "hostname",
     "hostPort",
     "containerPort",
     "containerId",
     "containerName",
     "image",
     "pid",
     "command",
     "workingDir",
     "cpuPct",
     "memoryBytes",
     "startedAt",
     "restarts",
     "detail"
    ],
    "additionalProperties": false
   },
   "LocalHost": {
    "type": "object",
    "properties": {
     "hostname": {
      "type": [
       "string",
       "null"
      ]
     },
     "os": {
      "type": [
       "string",
       "null"
      ]
     },
     "arch": {
      "type": "string"
     },
     "cpus": {
      "type": "number"
     },
     "uptimeSecs": {
      "type": "number"
     },
     "sampleEverySecs": {
      "type": "number"
     },
     "latest": {
      "anyOf": [
       {
        "$ref": "#/components/schemas/LocalHostLatest"
       },
       {
        "type": "null"
       }
      ]
     },
     "measures": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/Measure"
      },
      "description": "The last hour: `cpu_pct`, `memory_pct`, `disk_pct`, `swap_pct`, `load_1m`, `load_5m`."
     }
    },
    "required": [
     "hostname",
     "os",
     "arch",
     "cpus",
     "uptimeSecs",
     "sampleEverySecs",
     "latest",
     "measures"
    ],
    "additionalProperties": false
   },
   "LocalHostLatest": {
    "type": "object",
    "properties": {
     "at": {
      "type": "string",
      "description": "RFC 3339."
     },
     "cpuPct": {
      "type": "number"
     },
     "memoryUsed": {
      "type": "number"
     },
     "memoryTotal": {
      "type": "number"
     },
     "swapUsed": {
      "type": "number"
     },
     "swapTotal": {
      "type": "number"
     },
     "diskUsed": {
      "type": "number"
     },
     "diskTotal": {
      "type": "number"
     },
     "load": {
      "type": "array",
      "items": {
       "type": "number"
      },
      "description": "1, 5 and 15 minutes."
     }
    },
    "required": [
     "at",
     "cpuPct",
     "memoryUsed",
     "memoryTotal",
     "swapUsed",
     "swapTotal",
     "diskUsed",
     "diskTotal",
     "load"
    ],
    "additionalProperties": false
   },
   "LocalListener": {
    "type": "object",
    "properties": {
     "port": {
      "type": "number"
     },
     "pid": {
      "type": "number"
     },
     "ppid": {
      "type": [
       "number",
       "null"
      ]
     },
     "process": {
      "type": "string",
      "description": "lsof's short name."
     },
     "command": {
      "type": "string",
      "description": "The full command line, at most 600 characters."
     },
     "exe": {
      "type": [
       "string",
       "null"
      ]
     },
     "cwd": {
      "type": [
       "string",
       "null"
      ]
     },
     "addresses": {
      "type": "array",
      "items": {
       "type": "string"
      },
      "description": "`*`, `127.0.0.1`, `[::1]`…"
     },
     "memoryBytes": {
      "type": [
       "number",
       "null"
      ]
     },
     "startedAt": {
      "type": [
       "string",
       "null"
      ]
     },
     "owner": {
      "anyOf": [
       {
        "$ref": "#/components/schemas/LocalOwner"
       },
       {
        "type": "null"
       }
      ],
      "description": "The task worktree or repository the working directory is inside."
     },
     "container": {
      "type": [
       "string",
       "null"
      ],
      "description": "The container that publishes this port, when a runtime is forwarding it."
     },
     "environment": {
      "type": [
       "string",
       "null"
      ],
      "description": "A task environment's supervised process: `task id`."
     },
     "forward": {
      "type": "string",
      "description": "A Kubernetes port-forward DevDash runs: `context ns/pod/api :8080`."
     },
     "protected": {
      "type": [
       "string",
       "null"
      ],
      "description": "Why it cannot be stopped from here."
     },
     "url": {
      "type": "string",
      "description": "For opening in a browser."
     }
    },
    "required": [
     "port",
     "pid",
     "ppid",
     "process",
     "command",
     "exe",
     "cwd",
     "addresses",
     "memoryBytes",
     "startedAt",
     "owner",
     "container",
     "environment",
     "protected",
     "url"
    ],
    "additionalProperties": false
   },
   "LocalModelInstallArgs": {
    "type": "object",
    "properties": {
     "model": {
      "type": [
       "string",
       "null"
      ],
      "description": "`small` (the default) or `large`."
     }
    },
    "required": [
     "model"
    ],
    "additionalProperties": false
   },
   "LocalModelOption": {
    "type": "object",
    "properties": {
     "id": {
      "type": "string",
      "description": "`small` or `large`."
     },
     "name": {
      "type": "string"
     },
     "bytes": {
      "type": "number"
     },
     "installed": {
      "type": "boolean",
      "description": "Downloaded and whole."
     }
    },
    "required": [
     "id",
     "name",
     "bytes",
     "installed"
    ],
    "additionalProperties": false
   },
   "LocalModelProgress": {
    "type": "object",
    "properties": {
     "phase": {
      "type": "string",
      "description": "`runtime`, `model` or `checking`."
     },
     "done": {
      "type": "number"
     },
     "total": {
      "type": "number"
     }
    },
    "required": [
     "phase",
     "done",
     "total"
    ],
    "additionalProperties": false
   },
   "LocalModelStatus": {
    "type": "object",
    "properties": {
     "supported": {
      "type": "boolean",
      "description": "This Mac can run it (macOS)."
     },
     "ready": {
      "type": "boolean",
      "description": "The runtime and the chosen model are downloaded."
     },
     "runtimeInstalled": {
      "type": "boolean"
     },
     "runtimeBuild": {
      "type": "string",
      "description": "The llama.cpp build, `b11560`."
     },
     "model": {
      "type": "string",
      "description": "The chosen model's id."
     },
     "models": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/LocalModelOption"
      }
     },
     "installing": {
      "type": "boolean"
     },
     "progress": {
      "anyOf": [
       {
        "$ref": "#/components/schemas/LocalModelProgress"
       },
       {
        "type": "null"
       }
      ]
     },
     "error": {
      "type": [
       "string",
       "null"
      ],
      "description": "The last download's error."
     },
     "running": {
      "type": "boolean",
      "description": "Loaded and answering."
     }
    },
    "required": [
     "supported",
     "ready",
     "runtimeInstalled",
     "runtimeBuild",
     "model",
     "models",
     "installing",
     "progress",
     "error",
     "running"
    ],
    "additionalProperties": false
   },
   "LocalOutput": {
    "type": "object",
    "properties": {
     "lines": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/OutputLine"
      }
     },
     "notes": {
      "type": "array",
      "items": {
       "type": "string"
      },
      "description": "Why some output could not be read."
     },
     "logsQuery": {
      "type": [
       "string",
       "null"
      ],
      "description": "The Logs query that shows the same containers over time, when a Docker log source is on."
     }
    },
    "required": [
     "lines",
     "notes",
     "logsQuery"
    ],
    "additionalProperties": false
   },
   "LocalOwner": {
    "type": "object",
    "properties": {
     "kind": {
      "type": "string",
      "description": "`task` or `repository`."
     },
     "id": {
      "type": "string"
     },
     "name": {
      "type": "string"
     }
    },
    "required": [
     "kind",
     "id",
     "name"
    ],
    "additionalProperties": false
   },
   "LocalPorts": {
    "type": "object",
    "properties": {
     "listeners": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/LocalListener"
      }
     },
     "problem": {
      "type": [
       "string",
       "null"
      ]
     }
    },
    "required": [
     "listeners",
     "problem"
    ],
    "additionalProperties": false
   },
   "LocalPublished": {
    "type": "object",
    "properties": {
     "hostIp": {
      "type": [
       "string",
       "null"
      ]
     },
     "publicPort": {
      "type": [
       "number",
       "null"
      ]
     },
     "privatePort": {
      "type": "number"
     },
     "protocol": {
      "type": "string"
     }
    },
    "required": [
     "hostIp",
     "publicPort",
     "privatePort",
     "protocol"
    ],
    "additionalProperties": false
   },
   "LocalScreen": {
    "type": "object",
    "properties": {
     "environments": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/LocalEnvironment"
      }
     },
     "docker": {
      "$ref": "#/components/schemas/LocalContainers"
     },
     "ports": {
      "$ref": "#/components/schemas/LocalPorts"
     },
     "host": {
      "$ref": "#/components/schemas/LocalHost"
     },
     "testsLocalUrl": {
      "type": [
       "string",
       "null"
      ],
      "description": "The Tests `local` environment's base URL, for \"Use for Tests\"."
     },
     "errors": {
      "type": "array",
      "items": {
       "type": "string"
      },
      "description": "Sections that could not be read, in sentences."
     }
    },
    "required": [
     "environments",
     "docker",
     "ports",
     "host",
     "testsLocalUrl",
     "errors"
    ],
    "additionalProperties": false
   },
   "LocalTerminal": {
    "type": "object",
    "properties": {
     "taskId": {
      "type": [
       "string",
       "null"
      ],
      "description": "The DevDash terminal opened, on this task."
     },
     "sessionId": {
      "type": [
       "string",
       "null"
      ]
     },
     "opened": {
      "type": [
       "string",
       "null"
      ],
      "description": "Opened in an app instead (`Terminal`), for a directory outside every task."
     }
    },
    "required": [
     "taskId",
     "sessionId",
     "opened"
    ],
    "additionalProperties": false
   },
   "LogAlert": {
    "type": "object",
    "properties": {
     "id": {
      "type": "string"
     },
     "name": {
      "type": "string"
     },
     "query": {
      "type": "string"
     },
     "condition": {
      "$ref": "#/components/schemas/LogAlertCondition"
     },
     "actions": {
      "type": "array",
      "items": {
       "type": "string"
      }
     },
     "enabled": {
      "type": "boolean"
     },
     "mutedUntil": {
      "type": [
       "number",
       "null"
      ]
     },
     "state": {
      "type": "string",
      "description": "`ok` or `firing`."
     },
     "lastChecked": {
      "type": [
       "number",
       "null"
      ]
     },
     "firings": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/LogAlertFiring"
      },
      "description": "The newest 20 firings."
     },
     "automations": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/LogAlertAutomation"
      },
      "description": "The enabled automations with a \"Log alert fired\" trigger for this alert or for any alert: what the `automation` action feeds."
     }
    },
    "required": [
     "id",
     "name",
     "query",
     "condition",
     "actions",
     "enabled",
     "mutedUntil",
     "state",
     "lastChecked",
     "firings",
     "automations"
    ],
    "additionalProperties": false
   },
   "LogAlertAutomation": {
    "type": "object",
    "properties": {
     "id": {
      "type": "string"
     },
     "name": {
      "type": "string"
     },
     "any": {
      "type": "boolean",
      "description": "The trigger is for any alert (`*`) rather than this one."
     }
    },
    "required": [
     "id",
     "name",
     "any"
    ],
    "additionalProperties": false
   },
   "LogAlertCondition": {
    "type": "object",
    "properties": {
     "kind": {
      "type": "string",
      "description": "`threshold` or `newPattern`."
     },
     "op": {
      "type": "string",
      "description": "Threshold: `>`, `>=`, `<`, `<=`."
     },
     "value": {
      "type": "number"
     },
     "windowMinutes": {
      "type": "number"
     },
     "lookbackHours": {
      "type": "number",
      "description": "New pattern: how far back a shape must be absent."
     }
    },
    "required": [
     "kind"
    ],
    "additionalProperties": false
   },
   "LogAlertFiring": {
    "type": "object",
    "properties": {
     "incidentId": {
      "type": "string",
      "description": "The incident this firing is, as `incident` takes it."
     },
     "at": {
      "type": "number"
     },
     "value": {
      "type": [
       "number",
       "null"
      ]
     },
     "detail": {
      "type": "string"
     },
     "resolvedAt": {
      "type": [
       "number",
       "null"
      ]
     }
    },
    "required": [
     "incidentId",
     "at",
     "value",
     "detail",
     "resolvedAt"
    ],
    "additionalProperties": false
   },
   "LogAlertTestResult": {
    "type": "object",
    "properties": {
     "firing": {
      "type": "boolean"
     },
     "value": {
      "type": [
       "number",
       "null"
      ]
     },
     "detail": {
      "type": "string"
     }
    },
    "required": [
     "firing",
     "value",
     "detail"
    ],
    "additionalProperties": false
   },
   "LogArgs": {
    "type": "object",
    "properties": {
     "tail": {
      "type": [
       "number",
       "null"
      ],
      "description": "How many lines from the end, at most 2000. Default 200."
     }
    },
    "required": [
     "tail"
    ],
    "additionalProperties": false
   },
   "LogAwsProfile": {
    "type": "object",
    "properties": {
     "name": {
      "type": "string"
     },
     "region": {
      "type": [
       "string",
       "null"
      ],
      "description": "The profile's `region`, when it names one."
     }
    },
    "required": [
     "name",
     "region"
    ],
    "additionalProperties": false
   },
   "LogAwsProfiles": {
    "type": "object",
    "properties": {
     "profiles": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/LogAwsProfile"
      },
      "description": "From `~/.aws/config` and `~/.aws/credentials`."
     }
    },
    "required": [
     "profiles"
    ],
    "additionalProperties": false
   },
   "LogChart": {
    "type": "object",
    "properties": {
     "bucketSecs": {
      "type": "number"
     },
     "times": {
      "type": "array",
      "items": {
       "type": "number"
      }
     },
     "series": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/LogChartSeries"
      }
     },
     "total": {
      "type": [
       "number",
       "null"
      ]
     },
     "agg": {
      "type": "string",
      "description": "`count`, `rate`, `p95`… — what the numbers are."
     }
    },
    "required": [
     "bucketSecs",
     "times",
     "series",
     "total",
     "agg"
    ],
    "additionalProperties": false
   },
   "LogChartSeries": {
    "type": "object",
    "properties": {
     "name": {
      "type": "string"
     },
     "values": {
      "type": "array",
      "items": {
       "type": [
        "number",
        "null"
       ]
      }
     },
     "compare": {
      "type": "boolean"
     }
    },
    "required": [
     "name",
     "values",
     "compare"
    ],
    "additionalProperties": false
   },
   "LogContext": {
    "type": "object",
    "properties": {
     "line": {
      "$ref": "#/components/schemas/LogLine"
     },
     "around": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/LogLine"
      }
     },
     "template": {
      "type": "string",
      "description": "The message shape, with variable parts as `<n>`, `<id>`…"
     },
     "pattern": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/LogLine"
      }
     },
     "patternTotal": {
      "type": "number"
     },
     "trace": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/LogLine"
      }
     }
    },
    "required": [
     "line",
     "around",
     "template",
     "pattern",
     "patternTotal",
     "trace"
    ],
    "additionalProperties": false
   },
   "LogDashboard": {
    "type": "object",
    "properties": {
     "id": {
      "type": "string"
     },
     "name": {
      "type": "string"
     },
     "template": {
      "type": [
       "string",
       "null"
      ]
     },
     "charts": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/LogDashboardChart"
      }
     },
     "updatedAt": {
      "type": "string"
     }
    },
    "required": [
     "id",
     "name",
     "template",
     "charts",
     "updatedAt"
    ],
    "additionalProperties": false
   },
   "LogDashboardChart": {
    "type": "object",
    "properties": {
     "id": {
      "type": "string"
     },
     "title": {
      "type": "string"
     },
     "query": {
      "type": "string"
     },
     "expr": {
      "type": "string"
     },
     "w": {
      "type": "number",
      "description": "Columns spanned, 1–4."
     },
     "h": {
      "type": "number",
      "description": "Rows spanned, 1–2."
     },
     "kind": {
      "type": "string",
      "description": "`line`, `bar`, `area` or `number`."
     }
    },
    "required": [
     "id",
     "title",
     "query",
     "expr",
     "w",
     "h"
    ],
    "additionalProperties": false
   },
   "LogDashboards": {
    "type": "object",
    "properties": {
     "dashboards": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/LogDashboard"
      }
     },
     "templates": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/LogDashboardTemplate"
      }
     }
    },
    "required": [
     "dashboards",
     "templates"
    ],
    "additionalProperties": false
   },
   "LogDashboardTemplate": {
    "type": "object",
    "properties": {
     "id": {
      "type": "string"
     },
     "name": {
      "type": "string"
     },
     "description": {
      "type": "string"
     },
     "recommended": {
      "type": "boolean",
      "description": "Recommended because a matching source exists."
     },
     "charts": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/LogDashboardChart"
      }
     }
    },
    "required": [
     "id",
     "name",
     "description",
     "recommended",
     "charts"
    ],
    "additionalProperties": false
   },
   "LogDayUsage": {
    "type": "object",
    "properties": {
     "day": {
      "type": "string"
     },
     "bytes": {
      "type": "number"
     }
    },
    "required": [
     "day",
     "bytes"
    ],
    "additionalProperties": false
   },
   "LogExport": {
    "type": "object",
    "properties": {
     "fileName": {
      "type": "string"
     },
     "content": {
      "type": "string"
     },
     "lines": {
      "type": "number"
     }
    },
    "required": [
     "fileName",
     "content",
     "lines"
    ],
    "additionalProperties": false
   },
   "LogFacet": {
    "type": "object",
    "properties": {
     "field": {
      "type": "string",
      "description": "The query field (`level`, `service`, `attr.http.status_code`)."
     },
     "values": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/LogFacetCount"
      }
     }
    },
    "required": [
     "field",
     "values"
    ],
    "additionalProperties": false
   },
   "LogFacetCount": {
    "type": "object",
    "properties": {
     "value": {
      "type": "string"
     },
     "count": {
      "type": "number"
     }
    },
    "required": [
     "value",
     "count"
    ],
    "additionalProperties": false
   },
   "LogFacets": {
    "type": "object",
    "properties": {
     "facets": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/LogFacet"
      }
     },
     "attrKeys": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/LogFacetCount"
      },
      "description": "Attribute keys in the newest 500 matching lines, most common first."
     },
     "sampledFrom": {
      "type": "number",
      "description": "Over a window longer than `FACET_SPAN`, the counts are the newest `FACET_SPAN`'s: where they start, µs. Absent when they cover the window."
     }
    },
    "required": [
     "facets",
     "attrKeys"
    ],
    "additionalProperties": false
   },
   "LogHistogram": {
    "type": "object",
    "properties": {
     "bucketSecs": {
      "type": "number"
     },
     "buckets": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/LogHistogramBucket"
      }
     },
     "from": {
      "type": "number"
     },
     "to": {
      "type": "number"
     }
    },
    "required": [
     "bucketSecs",
     "buckets",
     "from",
     "to"
    ],
    "additionalProperties": false
   },
   "LogHistogramBucket": {
    "type": "object",
    "properties": {
     "t": {
      "type": "number",
      "description": "Bucket start, µs."
     },
     "counts": {
      "type": "array",
      "items": {
       "type": "number"
      },
      "description": "Lines per level: unknown, trace, debug, info, warn, error, fatal."
     }
    },
    "required": [
     "t",
     "counts"
    ],
    "additionalProperties": false
   },
   "LogIntake": {
    "type": "object",
    "properties": {
     "httpPort": {
      "type": [
       "number",
       "null"
      ],
      "description": "The OTLP/HTTP and JSON intake, on 127.0.0.1."
     },
     "syslogPort": {
      "type": [
       "number",
       "null"
      ]
     },
     "error": {
      "type": [
       "string",
       "null"
      ]
     },
     "mcpPort": {
      "type": [
       "number",
       "null"
      ],
      "description": "DevDash's own MCP server, when started with `DEVDASH_MCP_PORT`."
     }
    },
    "required": [
     "httpPort",
     "syslogPort",
     "error",
     "mcpPort"
    ],
    "additionalProperties": false
   },
   "LogLevelCount": {
    "type": "object",
    "properties": {
     "level": {
      "type": "string"
     },
     "count": {
      "type": "number"
     }
    },
    "required": [
     "level",
     "count"
    ],
    "additionalProperties": false
   },
   "LogLine": {
    "type": "object",
    "properties": {
     "id": {
      "type": "string"
     },
     "ts": {
      "type": "number",
      "description": "Microseconds since the epoch."
     },
     "level": {
      "type": "string",
      "description": "`trace`, `debug`, `info`, `warn`, `error`, `fatal` or `unknown`."
     },
     "service": {
      "type": "string"
     },
     "host": {
      "type": "string"
     },
     "source": {
      "type": "string"
     },
     "message": {
      "type": "string"
     },
     "traceId": {
      "type": [
       "string",
       "null"
      ]
     },
     "spanId": {
      "type": [
       "string",
       "null"
      ]
     },
     "attrs": {
      "type": "object",
      "additionalProperties": {
       "$ref": "#/components/schemas/JsonValue"
      }
     },
     "resource": {
      "type": "object",
      "additionalProperties": {
       "$ref": "#/components/schemas/JsonValue"
      }
     }
    },
    "required": [
     "id",
     "ts",
     "level",
     "service",
     "host",
     "source",
     "message",
     "traceId",
     "spanId",
     "attrs",
     "resource"
    ],
    "additionalProperties": false
   },
   "LogManticoreColumn": {
    "type": "object",
    "properties": {
     "name": {
      "type": "string"
     },
     "kind": {
      "type": "string"
     }
    },
    "required": [
     "name",
     "kind"
    ],
    "additionalProperties": false
   },
   "LogManticoreLocal": {
    "type": "object",
    "properties": {
     "name": {
      "type": "string",
      "description": "The container's name."
     },
     "image": {
      "type": "string"
     },
     "url": {
      "type": "string",
      "description": "`http://127.0.0.1:<published 9308>`."
     }
    },
    "required": [
     "name",
     "image",
     "url"
    ],
    "additionalProperties": false
   },
   "LogManticoreMapping": {
    "type": "object",
    "properties": {
     "cursor": {
      "type": "string"
     },
     "time": {
      "type": [
       "string",
       "null"
      ]
     },
     "timeUnit": {
      "type": [
       "string",
       "null"
      ],
      "description": "`s`, `ms`, `us` or `ns`."
     },
     "level": {
      "type": [
       "string",
       "null"
      ]
     },
     "message": {
      "type": [
       "string",
       "null"
      ]
     },
     "service": {
      "type": [
       "string",
       "null"
      ]
     },
     "host": {
      "type": [
       "string",
       "null"
      ]
     },
     "trace": {
      "type": [
       "string",
       "null"
      ]
     }
    },
    "required": [
     "cursor",
     "time",
     "timeUnit",
     "level",
     "message",
     "service",
     "host",
     "trace"
    ],
    "additionalProperties": false
   },
   "LogManticoreTable": {
    "type": "object",
    "properties": {
     "name": {
      "type": "string"
     },
     "kind": {
      "type": "string",
      "description": "`rt`, `percolate`, `distributed`…"
     }
    },
    "required": [
     "name",
     "kind"
    ],
    "additionalProperties": false
   },
   "LogManticoreTableInfo": {
    "type": "object",
    "properties": {
     "columns": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/LogManticoreColumn"
      }
     },
     "mapping": {
      "$ref": "#/components/schemas/LogManticoreMapping",
      "description": "The proposed mapping."
     },
     "sample": {
      "type": [
       "string",
       "null"
      ],
      "description": "The newest row, mapped, as a line would read."
     }
    },
    "required": [
     "columns",
     "mapping",
     "sample"
    ],
    "additionalProperties": false
   },
   "LogOverlay": {
    "type": "object",
    "properties": {
     "ts": {
      "type": "number"
     },
     "kind": {
      "type": "string",
      "description": "`deploy`, `release`, `issue` or `run`."
     },
     "title": {
      "type": "string"
     },
     "url": {
      "type": [
       "string",
       "null"
      ]
     }
    },
    "required": [
     "ts",
     "kind",
     "title",
     "url"
    ],
    "additionalProperties": false
   },
   "LogPattern": {
    "type": "object",
    "properties": {
     "id": {
      "type": "string",
      "description": "The pattern hash, as text (64-bit)."
     },
     "template": {
      "type": "string"
     },
     "sample": {
      "type": "string"
     },
     "count": {
      "type": "number"
     },
     "first": {
      "type": "number"
     },
     "last": {
      "type": "number"
     },
     "level": {
      "type": "string"
     },
     "services": {
      "type": "array",
      "items": {
       "type": "string"
      }
     },
     "spark": {
      "type": "array",
      "items": {
       "type": "number"
      }
     },
     "query": {
      "type": "string",
      "description": "A query that finds this pattern's lines."
     }
    },
    "required": [
     "id",
     "template",
     "sample",
     "count",
     "first",
     "last",
     "level",
     "services",
     "spark",
     "query"
    ],
    "additionalProperties": false
   },
   "LogPull": {
    "type": "object",
    "properties": {
     "every": {
      "type": "number",
      "description": "Seconds between pulls."
     },
     "lastPull": {
      "type": [
       "number",
       "null"
      ],
      "description": "µs."
     },
     "lastError": {
      "type": [
       "string",
       "null"
      ]
     },
     "lines": {
      "type": "number",
      "description": "Lines pulled since the source was created, and today (UTC)."
     },
     "today": {
      "type": "number"
     },
     "hasSecret": {
      "type": "boolean",
      "description": "A secret (basic auth, an access key) is kept in the keychain."
     }
    },
    "required": [
     "every",
     "lastPull",
     "lastError",
     "lines",
     "today",
     "hasSecret"
    ],
    "additionalProperties": false
   },
   "LogRelated": {
    "type": "object",
    "properties": {
     "incidents": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/LogRelatedIncident"
      }
     },
     "changes": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/LogOverlay"
      },
      "description": "Deploys and releases up to the line, newest first."
     }
    },
    "required": [
     "incidents",
     "changes"
    ],
    "additionalProperties": false
   },
   "LogRelatedIncident": {
    "type": "object",
    "properties": {
     "id": {
      "type": "string",
      "description": "The incident's id, as `incident` takes it."
     },
     "monitor": {
      "type": "string"
     },
     "source": {
      "type": "string",
      "description": "`sentry`, `devdash-alert`, `cloudflare`…"
     },
     "severity": {
      "type": "string"
     },
     "startedAt": {
      "type": "string",
      "description": "RFC 3339."
     },
     "endedAt": {
      "type": [
       "string",
       "null"
      ]
     },
     "detail": {
      "type": "string"
     },
     "sameService": {
      "type": "boolean",
      "description": "The incident's monitor names the line's service."
     }
    },
    "required": [
     "id",
     "monitor",
     "source",
     "severity",
     "startedAt",
     "endedAt",
     "detail",
     "sameService"
    ],
    "additionalProperties": false
   },
   "LogSource": {
    "type": "object",
    "properties": {
     "key": {
      "type": "string"
     },
     "name": {
      "type": "string"
     },
     "kind": {
      "type": "string"
     },
     "kindLabel": {
      "type": "string"
     },
     "push": {
      "type": "boolean",
      "description": "Whether lines are pushed to the intake with a token (otlp, http, syslog)."
     },
     "tokenHint": {
      "type": [
       "string",
       "null"
      ],
      "description": "The token's last four characters; the token itself is `logs.sources.token`."
     },
     "retentionDays": {
      "type": "number"
     },
     "config": {
      "$ref": "#/components/schemas/JsonValue"
     },
     "enabled": {
      "type": "boolean"
     },
     "builtin": {
      "type": "boolean"
     },
     "createdAt": {
      "type": "string"
     },
     "lines": {
      "type": "number"
     },
     "bytes": {
      "type": "number"
     },
     "rejected": {
      "type": "number"
     },
     "lastSeen": {
      "type": [
       "number",
       "null"
      ],
      "description": "µs."
     },
     "perMinute": {
      "type": "number"
     },
     "spark": {
      "type": "array",
      "items": {
       "type": "number"
      },
      "description": "Lines per minute for the last hour, oldest first."
     },
     "note": {
      "type": [
       "string",
       "null"
      ],
      "description": "\"No files match…\", \"Docker is not running\"…"
     },
     "stopped": {
      "type": "boolean",
      "description": "Sent before but nothing for 15 minutes."
     },
     "needsRelay": {
      "type": "boolean",
      "description": "Push drains from the cloud need the relay; not available yet."
     },
     "pull": {
      "anyOf": [
       {
        "$ref": "#/components/schemas/LogPull"
       },
       {
        "type": "null"
       }
      ],
      "description": "For a source read on a schedule: how it last went."
     }
    },
    "required": [
     "key",
     "name",
     "kind",
     "kindLabel",
     "push",
     "tokenHint",
     "retentionDays",
     "config",
     "enabled",
     "builtin",
     "createdAt",
     "lines",
     "bytes",
     "rejected",
     "lastSeen",
     "perMinute",
     "spark",
     "note",
     "stopped",
     "needsRelay",
     "pull"
    ],
    "additionalProperties": false
   },
   "LogSources": {
    "type": "object",
    "properties": {
     "sources": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/LogSource"
      }
     },
     "intake": {
      "$ref": "#/components/schemas/LogIntake"
     },
     "usage": {
      "$ref": "#/components/schemas/LogUsage"
     }
    },
    "required": [
     "sources",
     "intake",
     "usage"
    ],
    "additionalProperties": false
   },
   "LogSourceTestResult": {
    "type": "object",
    "properties": {
     "ok": {
      "type": "boolean"
     },
     "message": {
      "type": "string"
     },
     "items": {
      "type": "array",
      "items": {
       "type": "string"
      },
      "description": "Matching files, containers, or parsed sample lines."
     }
    },
    "required": [
     "ok",
     "message",
     "items"
    ],
    "additionalProperties": false
   },
   "LogSourceToken": {
    "type": "object",
    "properties": {
     "token": {
      "type": "string"
     }
    },
    "required": [
     "token"
    ],
    "additionalProperties": false
   },
   "LogsPage": {
    "type": "object",
    "properties": {
     "lines": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/LogLine"
      }
     },
     "total": {
      "type": "number",
      "description": "Counted up to 10,000; `totalCapped` says there are more."
     },
     "totalCapped": {
      "type": "boolean"
     },
     "page": {
      "type": "number"
     },
     "size": {
      "type": "number"
     },
     "from": {
      "type": "number"
     },
     "to": {
      "type": "number"
     }
    },
    "required": [
     "lines",
     "total",
     "page",
     "size",
     "from",
     "to"
    ],
    "additionalProperties": false
   },
   "LogsScreen": {
    "type": "object",
    "properties": {
     "lastHour": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/LogLevelCount"
      },
      "description": "Lines in the last hour by level."
     },
     "sources": {
      "type": "number"
     },
     "firing": {
      "type": "number"
     },
     "views": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/LogView"
      }
     },
     "intake": {
      "$ref": "#/components/schemas/LogIntake"
     },
     "overCap": {
      "type": "boolean"
     },
     "errors": {
      "type": "array",
      "items": {
       "type": "string"
      },
      "description": "Sections that failed, as sentences."
     }
    },
    "required": [
     "lastHour",
     "sources",
     "firing",
     "views",
     "intake",
     "overCap",
     "errors"
    ],
    "additionalProperties": false
   },
   "LogSuggestion": {
    "type": "object",
    "properties": {
     "text": {
      "type": "string",
      "description": "What to insert, e.g. `service:api`."
     },
     "label": {
      "type": "string"
     },
     "count": {
      "type": [
       "number",
       "null"
      ]
     }
    },
    "required": [
     "text",
     "label",
     "count"
    ],
    "additionalProperties": false
   },
   "LogTail": {
    "type": "object",
    "properties": {
     "path": {
      "type": [
       "string",
       "null"
      ]
     },
     "lines": {
      "type": "array",
      "items": {
       "type": "string"
      }
     }
    },
    "required": [
     "path",
     "lines"
    ],
    "additionalProperties": false
   },
   "LogUsage": {
    "type": "object",
    "properties": {
     "bytes": {
      "type": "number"
     },
     "capBytes": {
      "type": "number"
     },
     "overCap": {
      "type": "boolean"
     },
     "days": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/LogDayUsage"
      }
     }
    },
    "required": [
     "bytes",
     "capBytes",
     "overCap",
     "days"
    ],
    "additionalProperties": false
   },
   "LogView": {
    "type": "object",
    "properties": {
     "id": {
      "type": "string"
     },
     "name": {
      "type": "string"
     },
     "query": {
      "type": "string"
     },
     "range": {
      "type": [
       "string",
       "null"
      ]
     },
     "columns": {
      "type": "array",
      "items": {
       "type": "string"
      }
     },
     "builtin": {
      "type": "boolean"
     }
    },
    "required": [
     "id",
     "name",
     "query",
     "range",
     "columns",
     "builtin"
    ],
    "additionalProperties": false
   },
   "MailboxFolder": {
    "type": "string",
    "enum": [
     "all",
     "attention",
     "approvals",
     "assigned",
     "reviews",
     "releases",
     "conversations",
     "unread",
     "snoozed",
     "archived"
    ]
   },
   "MappingReport": {
    "type": "object",
    "properties": {
     "mapped": {
      "type": "number"
     },
     "automations": {
      "type": "number"
     },
     "workflows": {
      "type": "number"
     },
     "repositories": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/TemplateRepository"
      },
      "description": "Still unmapped."
     },
     "skipped": {
      "type": "array",
      "items": {
       "type": "string"
      }
     }
    },
    "required": [
     "mapped",
     "automations",
     "workflows",
     "repositories",
     "skipped"
    ],
    "additionalProperties": false
   },
   "McpCall": {
    "type": "object",
    "properties": {
     "id": {
      "type": "number"
     },
     "server": {
      "type": "string"
     },
     "tool": {
      "type": "string"
     },
     "origin": {
      "type": "string",
      "description": "`manual`, `followups:<check>`, `automation:<run>`."
     },
     "args": {
      "description": "Redacted."
     },
     "startedAt": {
      "type": "number"
     },
     "durationMs": {
      "type": "number"
     },
     "resultBytes": {
      "type": "number"
     },
     "error": {
      "type": [
       "string",
       "null"
      ]
     }
    },
    "required": [
     "id",
     "server",
     "tool",
     "origin",
     "args",
     "startedAt",
     "durationMs",
     "resultBytes",
     "error"
    ],
    "additionalProperties": false
   },
   "McpCallResult": {
    "type": "object",
    "properties": {
     "needsConfirmation": {
      "type": "boolean",
      "description": "Set, and nothing run, when the tool may write and `confirm` was not given."
     },
     "result": {
      "anyOf": [
       {
        "$ref": "#/components/schemas/Record_string_unknown"
       },
       {
        "type": "null"
       }
      ],
      "description": "The protocol's `CallToolResult`."
     },
     "text": {
      "type": [
       "string",
       "null"
      ],
      "description": "Its text blocks, joined."
     },
     "isError": {
      "type": "boolean"
     },
     "durationMs": {
      "type": "number"
     }
    },
    "required": [
     "needsConfirmation",
     "result",
     "text",
     "isError",
     "durationMs"
    ],
    "additionalProperties": false
   },
   "McpOAuth": {
    "type": "object",
    "properties": {
     "clientId": {
      "type": [
       "string",
       "null"
      ]
     },
     "scopes": {
      "type": [
       "string",
       "null"
      ]
     },
     "redirectPort": {
      "type": [
       "number",
       "null"
      ]
     }
    },
    "required": [
     "clientId",
     "scopes",
     "redirectPort"
    ],
    "additionalProperties": false
   },
   "McpScreen": {
    "type": "object",
    "properties": {
     "servers": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/McpServer"
      }
     },
     "calls": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/McpCall"
      }
     },
     "notes": {
      "type": "array",
      "items": {
       "type": "string"
      }
     }
    },
    "required": [
     "servers",
     "calls",
     "notes"
    ],
    "additionalProperties": false
   },
   "McpServer": {
    "type": "object",
    "properties": {
     "id": {
      "type": "string"
     },
     "name": {
      "type": "string"
     },
     "origin": {
      "type": "string",
      "description": "`discovered` or `devdash`."
     },
     "transport": {
      "type": "string",
      "description": "`stdio`, `http` or `sse`."
     },
     "command": {
      "type": [
       "string",
       "null"
      ]
     },
     "args": {
      "type": "array",
      "items": {
       "type": "string"
      }
     },
     "url": {
      "type": [
       "string",
       "null"
      ]
     },
     "envKeys": {
      "type": "array",
      "items": {
       "type": "string"
      },
      "description": "Names only."
     },
     "headerKeys": {
      "type": "array",
      "items": {
       "type": "string"
      }
     },
     "sources": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/McpSource"
      }
     },
     "oauth": {
      "$ref": "#/components/schemas/McpOAuth"
     },
     "remote": {
      "type": "boolean"
     },
     "enabled": {
      "type": "boolean",
      "description": "Used by this project."
     },
     "signedIn": {
      "type": "boolean",
      "description": "A remote server with a stored sign-in."
     },
     "status": {
      "$ref": "#/components/schemas/McpStatus"
     },
     "recipes": {
      "type": "array",
      "items": {
       "type": "string"
      },
      "description": "Built-in follow-up recipes that fit it."
     }
    },
    "required": [
     "id",
     "name",
     "origin",
     "transport",
     "command",
     "args",
     "url",
     "envKeys",
     "headerKeys",
     "sources",
     "oauth",
     "remote",
     "enabled",
     "signedIn",
     "status",
     "recipes"
    ],
    "additionalProperties": false
   },
   "McpServerDetail": {
    "type": "object",
    "properties": {
     "server": {
      "$ref": "#/components/schemas/McpServer"
     },
     "calls": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/McpCall"
      }
     }
    },
    "required": [
     "server",
     "calls"
    ],
    "additionalProperties": false
   },
   "McpSource": {
    "type": "object",
    "properties": {
     "app": {
      "type": "string",
      "description": "`claude-code`, `codex`, `claude-desktop`, `cursor`, `windsurf`, `vscode`, `gemini`, `zed`, `project`."
     },
     "file": {
      "type": "string"
     },
     "project": {
      "type": [
       "string",
       "null"
      ]
     },
     "profile": {
      "type": [
       "string",
       "null"
      ],
      "description": "For apps with several profiles (Claude Code's `CLAUDE_CONFIG_DIR`)."
     },
     "name": {
      "type": "string"
     },
     "disabled": {
      "type": "boolean"
     }
    },
    "required": [
     "app",
     "file",
     "project",
     "profile",
     "name",
     "disabled"
    ],
    "additionalProperties": false
   },
   "McpStatus": {
    "type": "object",
    "properties": {
     "state": {
      "type": "string",
      "description": "`stopped`, `starting`, `running`, `failed`, `needsAuth`."
     },
     "error": {
      "type": [
       "string",
       "null"
      ]
     },
     "retryIn": {
      "type": [
       "number",
       "null"
      ]
     },
     "failures": {
      "type": "number"
     },
     "serverInfo": {
      "anyOf": [
       {
        "$ref": "#/components/schemas/Record_string_unknown"
       },
       {
        "type": "null"
       }
      ]
     },
     "stderr": {
      "type": "array",
      "items": {
       "type": "string"
      }
     }
    },
    "required": [
     "state",
     "error",
     "retryIn",
     "failures",
     "serverInfo",
     "stderr"
    ],
    "additionalProperties": false
   },
   "McpTools": {
    "type": "object",
    "properties": {
     "tools": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/Record_string_unknown"
      },
      "description": "As the server describes them: `name`, `description`, `inputSchema`, `annotations`."
     },
     "resources": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/Record_string_unknown"
      }
     },
     "prompts": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/Record_string_unknown"
      }
     },
     "status": {
      "$ref": "#/components/schemas/McpStatus"
     }
    },
    "required": [
     "tools",
     "resources",
     "prompts",
     "status"
    ],
    "additionalProperties": false
   },
   "Measure": {
    "type": "object",
    "properties": {
     "key": {
      "type": "string"
     },
     "unit": {
      "type": "string"
     },
     "latest": {
      "type": [
       "number",
       "null"
      ],
      "description": "Absent when nothing was measured — which is not zero."
     },
     "peak": {
      "type": [
       "number",
       "null"
      ]
     },
     "average": {
      "type": [
       "number",
       "null"
      ]
     },
     "points": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/TelemetryPoint"
      }
     },
     "tone": {
      "type": "string",
      "description": "`critical`, `warning`, `healthy` or `neutral`: the backend's own judgement against its thresholds, not a number the site re-reads."
     }
    },
    "required": [
     "key",
     "unit",
     "latest",
     "peak",
     "average",
     "points",
     "tone"
    ],
    "additionalProperties": false
   },
   "ModelChoice": {
    "type": "object",
    "properties": {
     "id": {
      "type": "string"
     },
     "label": {
      "type": "string"
     },
     "hint": {
      "type": "string"
     }
    },
    "required": [
     "id",
     "label",
     "hint"
    ],
    "additionalProperties": false
   },
   "ModelOutcome": {
    "type": "object",
    "properties": {
     "model": {
      "type": "string"
     },
     "steps": {
      "type": "number"
     },
     "costUsd": {
      "type": "number"
     },
     "tokens": {
      "type": "number"
     }
    },
    "required": [
     "model",
     "steps",
     "costUsd",
     "tokens"
    ],
    "additionalProperties": false
   },
   "ModelSystem": {
    "type": "object",
    "properties": {
     "id": {
      "type": "string",
      "description": "`claude` or `codex`."
     },
     "label": {
      "type": "string"
     },
     "models": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/ModelChoice"
      }
     }
    },
    "required": [
     "id",
     "label",
     "models"
    ],
    "additionalProperties": false
   },
   "ModelSystems": {
    "type": "object",
    "properties": {
     "systems": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/ModelSystem"
      }
     }
    },
    "required": [
     "systems"
    ],
    "additionalProperties": false
   },
   "MonitorDetail": {
    "type": "object",
    "properties": {
     "monitor": {
      "$ref": "#/components/schemas/MonitorRow"
     },
     "uptime7d": {
      "$ref": "#/components/schemas/UptimeRow"
     },
     "uptime30d": {
      "$ref": "#/components/schemas/UptimeRow"
     },
     "latency": {
      "type": "array",
      "items": {
       "type": "array",
       "minItems": 3,
       "prefixItems": [
        {
         "type": "string"
        },
        {
         "type": [
          "number",
          "null"
         ]
        },
        {
         "type": "string"
        }
       ],
       "maxItems": 3
      },
      "description": "`[at, latencyMs | null, status]` for the last 24 hours."
     },
     "runs": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/TestRunRow"
      }
     },
     "incidents": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/IncidentRow"
      }
     }
    },
    "required": [
     "monitor",
     "uptime7d",
     "uptime30d",
     "latency",
     "runs",
     "incidents"
    ],
    "additionalProperties": false
   },
   "MonitorFacet": {
    "type": "object",
    "properties": {
     "id": {
      "type": "string"
     },
     "label": {
      "type": "string"
     },
     "values": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/MonitorFacetValue"
      }
     }
    },
    "required": [
     "id",
     "label",
     "values"
    ],
    "additionalProperties": false
   },
   "MonitorFacetValue": {
    "type": "object",
    "properties": {
     "value": {
      "type": "string"
     },
     "label": {
      "type": [
       "string",
       "null"
      ]
     },
     "count": {
      "type": "number"
     },
     "selected": {
      "type": "boolean"
     }
    },
    "required": [
     "value",
     "label",
     "count",
     "selected"
    ],
    "additionalProperties": false
   },
   "MonitorIncident": {
    "type": "object",
    "properties": {
     "id": {
      "type": "string"
     },
     "monitorId": {
      "type": "string"
     },
     "monitorName": {
      "type": "string"
     },
     "source": {
      "type": "string"
     },
     "kind": {
      "type": "string"
     },
     "target": {
      "type": "string"
     },
     "app": {
      "type": [
       "string",
       "null"
      ]
     },
     "startedAt": {
      "type": "string"
     },
     "endedAt": {
      "type": [
       "string",
       "null"
      ],
      "description": "Open while null."
     },
     "severity": {
      "type": "string",
      "description": "`critical`, `warning` or `info`."
     },
     "value": {
      "type": [
       "number",
       "null"
      ],
      "description": "What the monitor measured (Sentry's evaluated value, the highest of the period)."
     },
     "threshold": {
      "type": [
       "number",
       "null"
      ],
      "description": "The threshold it crossed: the warning one for a warning."
     },
     "figure": {
      "type": [
       "string",
       "null"
      ],
      "description": "The value against the threshold in a few words: `p95 6,014 ms > 6,000`."
     },
     "detail": {
      "type": "string"
     },
     "url": {
      "type": [
       "string",
       "null"
      ]
     },
     "sentryIssueId": {
      "type": [
       "string",
       "null"
      ]
     }
    },
    "required": [
     "id",
     "monitorId",
     "monitorName",
     "source",
     "kind",
     "target",
     "app",
     "startedAt",
     "endedAt",
     "severity",
     "value",
     "threshold",
     "figure",
     "detail",
     "url",
     "sentryIssueId"
    ],
    "additionalProperties": false
   },
   "MonitorIncidents": {
    "type": "object",
    "properties": {
     "incidents": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/MonitorIncident"
      }
     }
    },
    "required": [
     "incidents"
    ],
    "additionalProperties": false
   },
   "MonitorMuted": {
    "type": "object",
    "properties": {
     "id": {
      "type": "string"
     },
     "until": {
      "type": [
       "string",
       "null"
      ],
      "description": "RFC 3339; null while muted until unmuted, or once unmuted."
     },
     "muted": {
      "type": "boolean"
     }
    },
    "required": [
     "id",
     "until",
     "muted"
    ],
    "additionalProperties": false
   },
   "MonitorPoint": {
    "type": "object",
    "properties": {
     "at": {
      "type": "number",
      "description": "Epoch seconds."
     },
     "value": {
      "type": [
       "number",
       "null"
      ]
     }
    },
    "required": [
     "at",
     "value"
    ],
    "additionalProperties": false
   },
   "MonitorRow": {
    "type": "object",
    "properties": {
     "id": {
      "type": "string"
     },
     "name": {
      "type": "string"
     },
     "kind": {
      "type": "string"
     },
     "target": {
      "type": "string"
     },
     "config": {
      "$ref": "#/components/schemas/JsonValue"
     },
     "env": {
      "type": [
       "string",
       "null"
      ]
     },
     "intervalSecs": {
      "type": "number"
     },
     "timeoutSecs": {
      "type": "number"
     },
     "retries": {
      "type": "number"
     },
     "downAfter": {
      "type": "number"
     },
     "upAfter": {
      "type": "number"
     },
     "runner": {
      "type": "string"
     },
     "tags": {
      "type": "array",
      "items": {
       "type": "string"
      }
     },
     "enabled": {
      "type": "boolean"
     },
     "paused": {
      "type": "boolean"
     },
     "state": {
      "type": "string",
      "description": "up | down | unknown"
     },
     "lastRunAt": {
      "type": [
       "string",
       "null"
      ]
     },
     "uptime24h": {
      "$ref": "#/components/schemas/UptimeRow"
     },
     "spark": {
      "type": "array",
      "items": {
       "type": [
        "number",
        "null"
       ]
      },
      "description": "Latency (ms) per hour for the last 24 hours, oldest first."
     },
     "lastError": {
      "type": [
       "string",
       "null"
      ]
     },
     "openIncident": {
      "type": [
       "string",
       "null"
      ]
     }
    },
    "required": [
     "id",
     "name",
     "kind",
     "target",
     "config",
     "env",
     "intervalSecs",
     "timeoutSecs",
     "retries",
     "downAfter",
     "upAfter",
     "runner",
     "tags",
     "enabled",
     "paused",
     "state",
     "lastRunAt",
     "uptime24h",
     "spark",
     "lastError",
     "openIncident"
    ],
    "additionalProperties": false
   },
   "MonitorSeries": {
    "type": "object",
    "properties": {
     "label": {
      "type": "string",
      "description": "What is plotted: `p95(span.duration)`, `Latency`, `Matching lines`."
     },
     "unit": {
      "type": [
       "string",
       "null"
      ],
      "description": "`ms`, or none."
     },
     "points": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/MonitorPoint"
      }
     },
     "threshold": {
      "type": [
       "number",
       "null"
      ],
      "description": "The critical threshold, drawn as a red dashed line."
     },
     "warningThreshold": {
      "type": [
       "number",
       "null"
      ],
      "description": "The warning threshold, drawn as an amber dashed line."
     }
    },
    "required": [
     "label",
     "unit",
     "points",
     "threshold",
     "warningThreshold"
    ],
    "additionalProperties": false
   },
   "MonitorSeriesView": {
    "type": "object",
    "properties": {
     "id": {
      "type": "string"
     },
     "name": {
      "type": "string"
     },
     "source": {
      "type": "string"
     },
     "kind": {
      "type": "string"
     },
     "series": {
      "anyOf": [
       {
        "$ref": "#/components/schemas/MonitorSeries"
       },
       {
        "type": "null"
       }
      ]
     },
     "note": {
      "type": [
       "string",
       "null"
      ],
      "description": "Why there is no line, when there is none."
     }
    },
    "required": [
     "id",
     "name",
     "source",
     "kind",
     "series",
     "note"
    ],
    "additionalProperties": false
   },
   "MonitorSource": {
    "type": "object",
    "properties": {
     "source": {
      "type": "string"
     },
     "label": {
      "type": "string"
     },
     "connected": {
      "type": "boolean",
      "description": "Connected (a copied source) or holding monitors (DevDash's own)."
     },
     "syncedAt": {
      "type": [
       "string",
       "null"
      ]
     },
     "error": {
      "type": [
       "string",
       "null"
      ]
     },
     "readable": {
      "type": [
       "string",
       "null"
      ],
      "description": "\"Read from Sentry: monitors. Sentry did not allow reading …\""
     }
    },
    "required": [
     "source",
     "label",
     "connected",
     "syncedAt",
     "error",
     "readable"
    ],
    "additionalProperties": false
   },
   "MonitorsScreen": {
    "type": "object",
    "properties": {
     "monitors": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/MonitorSummary"
      }
     },
     "total": {
      "type": "number",
      "description": "Monitors before the facets and the search."
     },
     "facets": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/MonitorFacet"
      }
     },
     "sources": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/MonitorSource"
      }
     },
     "running": {
      "type": "boolean",
      "description": "A sync is running for this project."
     }
    },
    "required": [
     "monitors",
     "total",
     "facets",
     "sources",
     "running"
    ],
    "additionalProperties": false
   },
   "MonitorsSyncStarted": {
    "type": "object",
    "properties": {
     "started": {
      "type": "boolean",
      "description": "False when a cycle was already running; it announces when done too."
     }
    },
    "required": [
     "started"
    ],
    "additionalProperties": false
   },
   "MonitorSummary": {
    "type": "object",
    "properties": {
     "id": {
      "type": "string"
     },
     "source": {
      "type": "string"
     },
     "name": {
      "type": "string"
     },
     "kind": {
      "type": "string"
     },
     "target": {
      "type": "string"
     },
     "app": {
      "type": [
       "string",
       "null"
      ]
     },
     "environment": {
      "type": [
       "string",
       "null"
      ]
     },
     "condition": {
      "type": "string"
     },
     "threshold": {
      "type": [
       "number",
       "null"
      ]
     },
     "warningThreshold": {
      "type": [
       "number",
       "null"
      ]
     },
     "status": {
      "type": "string",
      "description": "`ok`, `warning`, `critical` or `muted`."
     },
     "url": {
      "type": [
       "string",
       "null"
      ],
      "description": "The monitor in its own tool."
     },
     "lastIncidentAt": {
      "type": [
       "string",
       "null"
      ]
     },
     "lastIncidentEndedAt": {
      "type": [
       "string",
       "null"
      ]
     },
     "incidents": {
      "type": "number",
      "description": "Incidents in the last 14 days."
     },
     "open": {
      "type": "boolean",
      "description": "Whether an incident is open now."
     },
     "platform": {
      "type": [
       "string",
       "null"
      ],
      "description": "The Sentry platform of the monitor's project, for its icon."
     },
     "muted": {
      "type": "boolean",
      "description": "Muted here (`monitor.mute`): its incidents are kept, but it notifies nobody and raises no automation event. A monitor its own tool muted has the status `muted` without this."
     },
     "mutedUntil": {
      "type": [
       "string",
       "null"
      ],
      "description": "RFC 3339; null while muted until unmuted, or not muted."
     }
    },
    "required": [
     "id",
     "source",
     "name",
     "kind",
     "target",
     "app",
     "environment",
     "condition",
     "threshold",
     "warningThreshold",
     "status",
     "url",
     "lastIncidentAt",
     "lastIncidentEndedAt",
     "incidents",
     "open",
     "platform",
     "muted",
     "mutedUntil"
    ],
    "additionalProperties": false
   },
   "MonitorView": {
    "type": "object",
    "properties": {
     "monitor": {
      "$ref": "#/components/schemas/MonitorSummary"
     },
     "raw": {
      "$ref": "#/components/schemas/Record_string_unknown",
      "description": "What the tool said about the monitor, for the details list."
     },
     "incidents": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/MonitorIncident"
      }
     },
     "total": {
      "type": "number"
     },
     "page": {
      "type": "number"
     },
     "size": {
      "type": "number"
     },
     "period": {
      "type": "string"
     },
     "series": {
      "anyOf": [
       {
        "$ref": "#/components/schemas/MonitorSeries"
       },
       {
        "type": "null"
       }
      ]
     },
     "seriesNote": {
      "type": [
       "string",
       "null"
      ],
      "description": "Why there is no chart, when there is none."
     }
    },
    "required": [
     "monitor",
     "raw",
     "incidents",
     "total",
     "page",
     "size",
     "period",
     "series",
     "seriesNote"
    ],
    "additionalProperties": false
   },
   "NeedsCredentials": {
    "type": "object",
    "properties": {
     "provider": {
      "type": "string"
     },
     "prefill": {
      "$ref": "#/components/schemas/Record_string_unknown",
      "description": "The template's place (`site`, `workspace`, …) to prefill the connect form."
     }
    },
    "required": [
     "provider",
     "prefill"
    ],
    "additionalProperties": false
   },
   "Neighbour": {
    "type": "object",
    "properties": {
     "id": {
      "type": "string"
     },
     "kind": {
      "type": "string"
     },
     "when": {
      "type": "string"
     },
     "status": {
      "type": [
       "string",
       "null"
      ]
     },
     "after": {
      "type": "boolean",
      "description": "Whether it happened after the event being read — the difference between a cause and a consequence."
     }
    },
    "required": [
     "id",
     "kind",
     "when",
     "status",
     "after"
    ],
    "additionalProperties": false
   },
   "NewThread": {
    "type": "object",
    "properties": {
     "thread": {
      "type": "string"
     }
    },
    "required": [
     "thread"
    ],
    "additionalProperties": false
   },
   "NoArgs": {
    "$ref": "#/components/schemas/Record_string_never"
   },
   "NotificationKind": {
    "type": "object",
    "properties": {
     "id": {
      "type": "string"
     },
     "section": {
      "type": "string",
      "description": "The sidebar section it happens in."
     },
     "label": {
      "type": "string"
     },
     "description": {
      "type": "string"
     },
     "defaultOn": {
      "type": "boolean"
     }
    },
    "required": [
     "id",
     "section",
     "label",
     "description",
     "defaultOn"
    ],
    "additionalProperties": false
   },
   "Notifications": {
    "type": "object",
    "properties": {
     "unread": {
      "type": "number",
      "description": "What the bell counts."
     },
     "items": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/InboxItem"
      }
     }
    },
    "required": [
     "unread",
     "items"
    ],
    "additionalProperties": false
   },
   "OutputLine": {
    "type": "object",
    "properties": {
     "service": {
      "type": "string"
     },
     "at": {
      "type": [
       "string",
       "null"
      ],
      "description": "RFC 3339, when the source stamps its lines (Compose does, processes do not)."
     },
     "text": {
      "type": "string"
     }
    },
    "required": [
     "service",
     "at",
     "text"
    ],
    "additionalProperties": false
   },
   "OverviewSuggestion": {
    "type": "object",
    "properties": {
     "name": {
      "type": "string"
     },
     "color": {
      "type": "string",
      "description": "A colour token."
     },
     "params": {
      "type": "object",
      "additionalProperties": {
       "type": "string"
      },
      "description": "The Overview parameters the preset would hold."
     },
     "reasons": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/SuggestionReason"
      }
     },
     "existing": {
      "type": [
       "string",
       "null"
      ],
      "description": "The id of an Overview preset already named so."
     }
    },
    "required": [
     "name",
     "color",
     "params",
     "reasons",
     "existing"
    ],
    "additionalProperties": false
   },
   "PlanAccepted": {
    "type": "object",
    "properties": {
     "run": {
      "type": "string",
      "description": "The implementation run."
     }
    },
    "required": [
     "run"
    ],
    "additionalProperties": false
   },
   "PlanOutcomes": {
    "type": "object",
    "properties": {
     "versions": {
      "type": "number"
     },
     "accepted": {
      "type": "number"
     },
     "versionsPerAccepted": {
      "type": [
       "number",
       "null"
      ]
     }
    },
    "required": [
     "versions",
     "accepted",
     "versionsPerAccepted"
    ],
    "additionalProperties": false
   },
   "PlanProposal": {
    "type": "object",
    "properties": {
     "id": {
      "type": "string",
      "description": "The review run that produced it; what `plan.accept`, `plan.revise` and `plan.keep` name as `review`."
     },
     "version": {
      "type": "number"
     },
     "state": {
      "type": "string",
      "description": "The review run's state."
     },
     "text": {
      "type": "string",
      "description": "The plan, as the model wrote it."
     },
     "summary": {
      "type": "string"
     },
     "execution": {
      "type": [
       "string",
       "null"
      ],
      "description": "The implementation run started from it, once accepted."
     },
     "target": {
      "type": "string"
     },
     "ready": {
      "type": "boolean",
      "description": "Whether it can be accepted: finished, valid, and nothing newer."
     },
     "informational": {
      "type": "boolean",
      "description": "A re-plan that found nothing changing the accepted plan; offered as \"keep\"."
     }
    },
    "required": [
     "id",
     "version",
     "state",
     "text",
     "summary",
     "execution",
     "target",
     "ready",
     "informational"
    ],
    "additionalProperties": false
   },
   "PlanTracking": {
    "type": "object",
    "properties": {
     "enabled": {
      "type": "boolean"
     },
     "checked": {
      "type": [
       "number",
       "null"
      ],
      "description": "Unix seconds of the last look at the ticket."
     },
     "error": {
      "type": [
       "string",
       "null"
      ]
     }
    },
    "required": [
     "enabled",
     "checked",
     "error"
    ],
    "additionalProperties": false
   },
   "PortStop": {
    "type": "object",
    "properties": {
     "stopped": {
      "type": "boolean",
      "description": "SIGTERM was sent."
     },
     "needsConfirmation": {
      "type": "boolean"
     },
     "process": {
      "type": "string"
     }
    },
    "required": [
     "stopped",
     "needsConfirmation",
     "process"
    ],
    "additionalProperties": false
   },
   "Preset": {
    "type": "object",
    "properties": {
     "id": {
      "type": "string"
     },
     "screen": {
      "type": "string"
     },
     "name": {
      "type": "string"
     },
     "color": {
      "type": [
       "string",
       "null"
      ],
      "description": "A colour token (`--green`), shown as a dot."
     },
     "params": {
      "type": "object",
      "additionalProperties": {
       "type": "string"
      },
      "description": "The screen's filter parameters, as they sit in its URL."
     },
     "isDefault": {
      "type": "boolean"
     },
     "createdAt": {
      "type": "string"
     },
     "updatedAt": {
      "type": "string"
     }
    },
    "required": [
     "id",
     "screen",
     "name",
     "color",
     "params",
     "isDefault",
     "createdAt",
     "updatedAt"
    ],
    "additionalProperties": false
   },
   "PreviousRelease": {
    "type": "object",
    "properties": {
     "id": {
      "type": "string"
     },
     "name": {
      "type": "string"
     },
     "date": {
      "type": [
       "string",
       "null"
      ]
     }
    },
    "required": [
     "id",
     "name",
     "date"
    ],
    "additionalProperties": false
   },
   "Project": {
    "type": "object",
    "properties": {
     "id": {
      "type": "string"
     },
     "slug": {
      "type": "string",
      "description": "The URL-safe name the site puts first in its paths. See `slug`."
     },
     "name": {
      "type": "string"
     },
     "region": {
      "type": [
       "string",
       "null"
      ]
     },
     "active": {
      "type": "boolean",
      "description": "The project the sync loop follows and the CLI opens."
     }
    },
    "required": [
     "id",
     "slug",
     "name",
     "region",
     "active"
    ],
    "additionalProperties": false
   },
   "ProjectCounts": {
    "type": "object",
    "properties": {
     "openTasks": {
      "type": "number"
     },
     "issues": {
      "type": "number"
     },
     "pulls": {
      "type": "number"
     },
     "activeRuns": {
      "type": "number"
     }
    },
    "required": [
     "openTasks",
     "issues",
     "pulls",
     "activeRuns"
    ],
    "additionalProperties": false
   },
   "ProjectData": {
    "type": "object",
    "properties": {
     "directory": {
      "type": "string",
      "description": "The data directory every project lives in."
     },
     "database": {
      "type": "string",
      "description": "This project's database file."
     },
     "databaseBytes": {
      "type": "number"
     },
     "projectBytes": {
      "type": "number",
      "description": "The database with its write-ahead log, which is often the larger of the two and is what Finder counts."
     },
     "totalBytes": {
      "type": "number",
      "description": "Every file in the data directory, all projects included."
     },
     "issues": {
      "type": "number"
     },
     "tasks": {
      "type": "number"
     },
     "events": {
      "type": "number"
     },
     "documents": {
      "type": "number"
     }
    },
    "required": [
     "directory",
     "database",
     "databaseBytes",
     "projectBytes",
     "totalBytes",
     "issues",
     "tasks",
     "events",
     "documents"
    ],
    "additionalProperties": false
   },
   "ProjectIntegrations": {
    "type": "object",
    "properties": {
     "integrations": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/Integration"
      }
     },
     "schemas": {
      "$ref": "#/components/schemas/JsonValue",
      "description": "The connect form for each provider: fields, help text, auth kind. Core's own shape, passed through."
     }
    },
    "required": [
     "integrations",
     "schemas"
    ],
    "additionalProperties": false
   },
   "ProjectPreferences": {
    "type": "object",
    "properties": {
     "dateOrder": {
      "type": "string",
      "description": "`international` (day first), `us` (month first) or `iso`."
     },
     "dateLength": {
      "type": "string",
      "description": "`short`, `medium` or `long`."
     },
     "branchTemplate": {
      "type": [
       "string",
       "null"
      ],
      "description": "How a task's branch is named. `null` reads as the default template."
     },
     "runBudgetCents": {
      "type": "number",
      "description": "What one run may spend, in US cents. Zero is no cap."
     }
    },
    "required": [
     "dateOrder",
     "dateLength",
     "branchTemplate",
     "runBudgetCents"
    ],
    "additionalProperties": false
   },
   "ProjectSetup": {
    "type": "object",
    "properties": {
     "steps": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/SetupStep"
      }
     },
     "completed": {
      "type": "boolean",
      "description": "Whether the person has dismissed setup, whatever the steps say."
     }
    },
    "required": [
     "steps",
     "completed"
    ],
    "additionalProperties": false
   },
   "ProjectSummary": {
    "type": "object",
    "properties": {
     "id": {
      "type": "string"
     },
     "slug": {
      "type": "string",
      "description": "The first segment of the project's URLs on the site."
     },
     "name": {
      "type": "string"
     },
     "region": {
      "type": [
       "string",
       "null"
      ]
     },
     "default": {
      "type": "boolean",
      "description": "The registry's default project: where `devdash open` lands."
     },
     "integrations": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/ConnectedIntegration"
      }
     },
     "lastSync": {
      "type": [
       "string",
       "null"
      ],
      "description": "The most recent successful sync of any integration."
     },
     "counts": {
      "$ref": "#/components/schemas/ProjectCounts"
     },
     "setupComplete": {
      "type": "boolean"
     },
     "error": {
      "type": [
       "string",
       "null"
      ],
      "description": "Why the project's database could not be read, if it could not. The project is still listed so it can be repaired or removed."
     },
     "icon": {
      "type": [
       "string",
       "null"
      ],
      "description": "A short name from the site's icon set, e.g. `folder` or `rocket`."
     },
     "color": {
      "type": [
       "string",
       "null"
      ],
      "description": "A CSS colour, e.g. `#7c5cff`."
     }
    },
    "required": [
     "id",
     "slug",
     "name",
     "region",
     "default",
     "integrations",
     "lastSync",
     "counts",
     "setupComplete",
     "error",
     "icon",
     "color"
    ],
    "additionalProperties": false
   },
   "ProposalText": {
    "type": "object",
    "properties": {
     "version": {
      "type": "number"
     },
     "text": {
      "type": "string"
     }
    },
    "required": [
     "version",
     "text"
    ],
    "additionalProperties": false
   },
   "PullBuild": {
    "type": "object",
    "properties": {
     "key": {
      "type": "string"
     },
     "name": {
      "type": "string"
     },
     "state": {
      "type": "string",
      "description": "`successful`, `failed`, `inprogress` or `stopped`."
     },
     "kind": {
      "type": "string",
      "description": "`pipeline` for Bitbucket Pipelines, `build` for any other CI."
     },
     "url": {
      "type": [
       "string",
       "null"
      ]
     },
     "started": {
      "type": [
       "string",
       "null"
      ],
      "description": "RFC 3339."
     },
     "updated": {
      "type": [
       "string",
       "null"
      ],
      "description": "RFC 3339: when it last reported."
     },
     "seconds": {
      "type": [
       "number",
       "null"
      ],
      "description": "How long it took; `null` while it is still running."
     }
    },
    "required": [
     "key",
     "name",
     "state",
     "kind",
     "url",
     "started",
     "updated",
     "seconds"
    ],
    "additionalProperties": false
   },
   "PullChange": {
    "type": "object",
    "properties": {
     "files": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/PullDiffFile"
      }
     },
     "unread": {
      "type": "number",
      "description": "Files the budget stopped before. Reported rather than dropped: a pane showing eleven of four hundred files while looking like all of them is the failure this exists to prevent."
     }
    },
    "required": [
     "files",
     "unread"
    ],
    "additionalProperties": false
   },
   "PullCommit": {
    "type": "object",
    "properties": {
     "short": {
      "type": "string"
     },
     "subject": {
      "type": "string"
     },
     "at": {
      "type": "string"
     },
     "author": {
      "type": "string"
     }
    },
    "required": [
     "short",
     "subject",
     "at",
     "author"
    ],
    "additionalProperties": false
   },
   "PullDetail": {
    "type": "object",
    "properties": {
     "reference": {
      "type": "string"
     },
     "provider": {
      "type": "string",
      "description": "The forge: `bitbucket`, `github`."
     },
     "title": {
      "type": "string"
     },
     "repository": {
      "type": "string"
     },
     "number": {
      "type": "string",
      "description": "`#42`."
     },
     "state": {
      "type": "string"
     },
     "author": {
      "type": "string"
     },
     "branch": {
      "type": "string"
     },
     "target": {
      "type": "string"
     },
     "url": {
      "type": [
       "string",
       "null"
      ]
     },
     "head": {
      "type": "string",
      "description": "The commit the change is at (12 characters): the only thing that identifies what a review actually read."
     },
     "reviewers": {
      "type": "array",
      "items": {
       "type": "string"
      }
     },
     "approvedBy": {
      "type": "array",
      "items": {
       "type": "string"
      }
     },
     "issues": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/LinkedIssue"
      },
      "description": "The tickets this pull request names, as this project holds them."
     },
     "updated": {
      "type": "string",
      "description": "RFC 3339, as stored."
     }
    },
    "required": [
     "reference",
     "provider",
     "title",
     "repository",
     "number",
     "state",
     "author",
     "branch",
     "target",
     "url",
     "head",
     "reviewers",
     "approvedBy",
     "issues",
     "updated"
    ],
    "additionalProperties": false
   },
   "PullDiffFile": {
    "type": "object",
    "properties": {
     "path": {
      "type": "string"
     },
     "added": {
      "type": "number"
     },
     "removed": {
      "type": "number"
     },
     "binary": {
      "type": "boolean"
     },
     "truncated": {
      "type": "boolean",
      "description": "The parser stopped early; the site says so rather than implying the rest is unchanged."
     },
     "hunks": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/DiffHunk"
      }
     }
    },
    "required": [
     "path",
     "added",
     "removed",
     "binary",
     "truncated",
     "hunks"
    ],
    "additionalProperties": false
   },
   "PullEvent": {
    "type": "object",
    "properties": {
     "kind": {
      "type": "string",
      "description": "`approved`, `changes_requested`, `commented`, `merged`, `declined`, `updated` — Bitbucket's own vocabulary."
     },
     "at": {
      "type": "string"
     },
     "actor": {
      "type": "string"
     },
     "text": {
      "type": [
       "string",
       "null"
      ],
      "description": "The comment, where the event was one."
     },
     "path": {
      "type": "string",
      "description": "The file an inline comment is on, and its line."
     },
     "line": {
      "type": "number"
     },
     "resolved": {
      "type": "boolean",
      "description": "An inline comment whose thread was resolved."
     },
     "reply": {
      "type": "boolean",
      "description": "A reply in a thread, not the comment that opened it."
     },
     "id": {
      "type": "number",
      "description": "The comment's id, and the id of the comment it answers: Bitbucket nests replies."
     },
     "parent": {
      "type": "number"
     }
    },
    "required": [
     "kind",
     "at",
     "actor",
     "text",
     "resolved",
     "reply"
    ],
    "additionalProperties": false
   },
   "PullFile": {
    "type": "object",
    "properties": {
     "path": {
      "type": "string"
     },
     "status": {
      "type": "string"
     },
     "added": {
      "type": "number"
     },
     "removed": {
      "type": "number"
     }
    },
    "required": [
     "path",
     "status",
     "added",
     "removed"
    ],
    "additionalProperties": false
   },
   "PullLive": {
    "type": "object",
    "properties": {
     "events": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/PullEvent"
      }
     },
     "commits": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/PullCommit"
      }
     },
     "files": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/PullFile"
      }
     },
     "error": {
      "type": [
       "string",
       "null"
      ],
      "description": "Why the reads failed, where they did. A tab that is empty because Bitbucket is not connected is not the same as one that is empty."
     },
     "status": {
      "anyOf": [
       {
        "$ref": "#/components/schemas/PullStatus"
       },
       {
        "type": "null"
       }
      ],
      "description": "Builds, verdicts and mergeability, read fresh. Only `pull.live` asks for it; the drawer's own read (`screen.pull`) leaves it `null`."
     },
     "statusError": {
      "type": [
       "string",
       "null"
      ],
      "description": "Why the status read failed, in a sentence, where it did."
     }
    },
    "required": [
     "events",
     "commits",
     "files",
     "error",
     "status",
     "statusError"
    ],
    "additionalProperties": false
   },
   "PullOutcomes": {
    "type": "object",
    "properties": {
     "total": {
      "type": "number"
     },
     "merged": {
      "type": "number"
     },
     "declined": {
      "type": "number"
     },
     "open": {
      "type": "number"
     },
     "mergeRate": {
      "type": [
       "number",
       "null"
      ],
      "description": "Merged of merged and declined."
     },
     "medianHoursToMerge": {
      "type": [
       "number",
       "null"
      ],
      "description": "From the task's first run to the merge."
     }
    },
    "required": [
     "total",
     "merged",
     "declined",
     "open",
     "mergeRate",
     "medianHoursToMerge"
    ],
    "additionalProperties": false
   },
   "PullRequestPlan": {
    "type": "object",
    "properties": {
     "title": {
      "type": "string"
     },
     "url": {
      "type": [
       "string",
       "null"
      ],
      "description": "A compare URL that opens the provider's own \"create pull request\" page, or none where the remote is not one this knows how to link to."
     }
    },
    "required": [
     "title",
     "url"
    ],
    "additionalProperties": false
   },
   "PullReviewer": {
    "type": "object",
    "properties": {
     "name": {
      "type": "string"
     },
     "reviewer": {
      "type": "boolean",
      "description": "Asked to review, rather than a participant who gave a verdict anyway."
     },
     "state": {
      "type": "string",
      "description": "`approved`, `changes_requested` or `pending`."
     }
    },
    "required": [
     "name",
     "reviewer",
     "state"
    ],
    "additionalProperties": false
   },
   "PullScreen": {
    "type": "object",
    "properties": {
     "pull": {
      "$ref": "#/components/schemas/PullDetail",
      "description": "The pull request, with the issues its title, branch and description name."
     },
     "live": {
      "anyOf": [
       {
        "$ref": "#/components/schemas/PullLive"
       },
       {
        "type": "null"
       }
      ],
      "description": "Activity, commits and files, fetched from the forge (cached by update time)."
     },
     "review": {
      "anyOf": [
       {
        "$ref": "#/components/schemas/ReviewRun"
       },
       {
        "type": "null"
       }
      ],
      "description": "The latest agent review, or `null` when it has never been reviewed."
     },
     "automated": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/AutomatedReview"
      },
      "description": "What automations made of it: the reports their runs wrote (nothing goes back to the forge)."
     },
     "errors": {
      "type": "array",
      "items": {
       "type": "string"
      }
     }
    },
    "required": [
     "pull",
     "live",
     "review",
     "automated",
     "errors"
    ],
    "additionalProperties": false
   },
   "PullsRefreshed": {
    "type": "object",
    "properties": {
     "checked": {
      "type": "number",
      "description": "Pull requests the forge was asked about."
     },
     "changed": {
      "type": "number",
      "description": "Of those, ones whose state had changed (merged, declined) and is now stored so."
     },
     "errors": {
      "type": "array",
      "items": {
       "type": "string"
      },
      "description": "What could not be read, one sentence each."
     }
    },
    "required": [
     "checked",
     "changed",
     "errors"
    ],
    "additionalProperties": false
   },
   "PullStatus": {
    "type": "object",
    "properties": {
     "state": {
      "type": "string",
      "description": "Bitbucket's `OPEN`, `MERGED`, `DECLINED`, `SUPERSEDED`."
     },
     "source": {
      "type": "string"
     },
     "target": {
      "type": "string"
     },
     "builds": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/PullBuild"
      }
     },
     "reviewers": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/PullReviewer"
      }
     },
     "conflicts": {
      "type": "array",
      "items": {
       "type": "string"
      },
      "description": "Files that do not merge cleanly into the target."
     },
     "conflicted": {
      "type": "boolean",
      "description": "The branch conflicts with its target, where the forge says so without naming the files (GitHub); `conflicts` is then empty."
     },
     "behind": {
      "type": [
       "number",
       "null"
      ],
      "description": "Commits on the target the branch does not have; `null` when not known."
     },
     "behindCapped": {
      "type": "boolean",
      "description": "The count stopped at a page: \"at least\" `behind`."
     },
     "openTasks": {
      "type": [
       "number",
       "null"
      ]
     },
     "readAt": {
      "type": "string",
      "description": "RFC 3339: when this was read."
     }
    },
    "required": [
     "state",
     "source",
     "target",
     "builds",
     "reviewers",
     "conflicts",
     "conflicted",
     "behind",
     "behindCapped",
     "openTasks",
     "readAt"
    ],
    "additionalProperties": false
   },
   "PullTicket": {
    "type": "object",
    "properties": {
     "key": {
      "type": "string"
     },
     "title": {
      "type": "string"
     },
     "status": {
      "type": "string",
      "description": "The tracker's own status name."
     },
     "lane": {
      "type": "string",
      "description": "The board lane it reads as (`todo`, `progress`, `review`, `done`, `cancelled`)."
     }
    },
    "required": [
     "key",
     "title",
     "status",
     "lane"
    ],
    "additionalProperties": false
   },
   "PullWritten": {
    "type": "object",
    "properties": {
     "message": {
      "type": "string",
      "description": "What happened, in a sentence."
     }
    },
    "required": [
     "message"
    ],
    "additionalProperties": false
   },
   "RecipeCall": {
    "type": "object",
    "properties": {
     "tool": {
      "type": "string"
     },
     "args": {},
     "result": {
      "anyOf": [
       {
        "$ref": "#/components/schemas/Record_string_unknown"
       },
       {
        "type": "null"
       }
      ]
     },
     "error": {
      "type": [
       "string",
       "null"
      ]
     }
    },
    "required": [
     "tool",
     "args",
     "result",
     "error"
    ],
    "additionalProperties": false
   },
   "RecipeInfo": {
    "type": "object",
    "properties": {
     "id": {
      "type": "string"
     },
     "name": {
      "type": "string"
     },
     "description": {
      "type": "string"
     },
     "serverHints": {
      "type": "array",
      "items": {
       "type": "string"
      }
     },
     "tools": {
      "type": "array",
      "items": {
       "type": "string"
      }
     },
     "verified": {
      "type": "boolean",
      "description": "Checked against the real server's output."
     },
     "params": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/RecipeParam"
      }
     },
     "definition": {
      "$ref": "#/components/schemas/Record_string_unknown",
      "description": "The whole recipe, to start a custom one from."
     }
    },
    "required": [
     "id",
     "name",
     "description",
     "serverHints",
     "tools",
     "verified",
     "params",
     "definition"
    ],
    "additionalProperties": false
   },
   "RecipeParam": {
    "type": "object",
    "properties": {
     "name": {
      "type": "string"
     },
     "label": {
      "type": "string"
     },
     "required": {
      "type": "boolean"
     },
     "help": {
      "type": [
       "string",
       "null"
      ]
     }
    },
    "required": [
     "name",
     "label",
     "required",
     "help"
    ],
    "additionalProperties": false
   },
   "Reclaimed": {
    "type": "object",
    "properties": {
     "cachedDocuments": {
      "type": "number"
     },
     "freedBytes": {
      "type": "number"
     }
    },
    "required": [
     "cachedDocuments",
     "freedBytes"
    ],
    "additionalProperties": false
   },
   "Record_string_never": {
    "type": "object",
    "additionalProperties": {
     "not": {}
    }
   },
   "Record_string_number": {
    "type": "object",
    "additionalProperties": {
     "type": "number"
    }
   },
   "Record_string_string": {
    "type": "object",
    "additionalProperties": {
     "type": "array",
     "items": {
      "type": "string"
     }
    }
   },
   "Record_string_string_null": {
    "type": "object",
    "additionalProperties": {
     "type": [
      "string",
      "null"
     ]
    }
   },
   "Record_string_unknown": {
    "type": "object",
    "additionalProperties": {}
   },
   "RefChoice": {
    "type": "object",
    "properties": {
     "ref": {
      "type": "string",
      "description": "A branch, remote branch, tag or commit to read instead of the detected one."
     },
     "base": {
      "type": "string",
      "description": "Where the range starts instead of the detected base."
     }
    },
    "additionalProperties": false
   },
   "RelatedBranch": {
    "type": "object",
    "properties": {
     "repository": {
      "type": "string",
      "description": "The repository's name in this project."
     },
     "name": {
      "type": "string",
      "description": "`ENGR-9212-fix` locally, `origin/ENGR-9212-fix` for a remote branch."
     },
     "remote": {
      "type": "boolean"
     },
     "current": {
      "type": "boolean",
      "description": "Whether it is the repository's checked-out branch."
     },
     "checkout": {
      "type": [
       "string",
       "null"
      ],
      "description": "The worktree it is checked out in, if any."
     }
    },
    "required": [
     "repository",
     "name",
     "remote",
     "current",
     "checkout"
    ],
    "additionalProperties": false
   },
   "RelatedBranches": {
    "type": "object",
    "properties": {
     "rows": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/RelatedBranch"
      }
     },
     "errors": {
      "type": "array",
      "items": {
       "type": "string"
      },
      "description": "Repositories git could not read, each with why."
     }
    },
    "required": [
     "rows",
     "errors"
    ],
    "additionalProperties": false
   },
   "ReleaseAbout": {
    "type": "object",
    "properties": {
     "assignees": {
      "type": "array",
      "items": {
       "type": "string"
      }
     },
     "reporters": {
      "type": "array",
      "items": {
       "type": "string"
      }
     },
     "priorities": {
      "type": "array",
      "items": {
       "type": "string"
      }
     },
     "statuses": {
      "type": "array",
      "items": {
       "type": "string"
      }
     },
     "labels": {
      "type": "array",
      "items": {
       "type": "string"
      }
     }
    },
    "required": [
     "assignees",
     "reporters",
     "priorities",
     "statuses",
     "labels"
    ],
    "additionalProperties": false
   },
   "ReleaseBuild": {
    "type": "object",
    "properties": {
     "release": {
      "$ref": "#/components/schemas/BuildRelease"
     },
     "repositories": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/BuildRepo"
      }
     },
     "tasks": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/BuildTask"
      }
     },
     "statuses": {
      "type": "array",
      "items": {
       "type": "string"
      },
      "description": "The statuses the tasks are in, for the filter."
     },
     "run": {
      "anyOf": [
       {
        "$ref": "#/components/schemas/BuildRun"
       },
       {
        "type": "null"
       }
      ],
      "description": "The run in the repository asked for (else the newest one)."
     },
     "runs": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/BuildRunBrief"
      },
      "description": "The newest run in each repository this release is built in."
     },
     "branches": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/BuildBranch"
      },
      "description": "The release branch chosen for each repository."
     }
    },
    "required": [
     "release",
     "repositories",
     "tasks",
     "statuses",
     "run",
     "runs",
     "branches"
    ],
    "additionalProperties": false
   },
   "ReleaseContents": {
    "type": "object",
    "properties": {
     "release": {
      "type": "string"
     },
     "date": {
      "type": [
       "string",
       "null"
      ],
      "description": "The tracker's release date, `YYYY-MM-DD`."
     },
     "previous": {
      "anyOf": [
       {
        "$ref": "#/components/schemas/PreviousRelease"
       },
       {
        "type": "null"
       }
      ],
      "description": "The release before this one in the same tracker project, by date."
     },
     "planned": {
      "type": "number",
      "description": "Issues in the release's scope."
     },
     "missing": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/ContentIssue"
      },
      "description": "Planned issues with no commit on any repository that was read."
     },
     "repositories": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/RepoContents"
      }
     },
     "projectKeys": {
      "type": "array",
      "items": {
       "type": "string"
      },
      "description": "The Jira projects a key must belong to; empty when any key counts."
     },
     "notes": {
      "type": "array",
      "items": {
       "type": "string"
      },
      "description": "Which repositories were read and why, in sentences."
     }
    },
    "required": [
     "release",
     "date",
     "previous",
     "planned",
     "missing",
     "repositories",
     "projectKeys",
     "notes"
    ],
    "additionalProperties": false
   },
   "ReleaseDelivery": {
    "type": "object",
    "properties": {
     "pulls": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/DeliveredPull"
      },
      "description": "Merged first, then open, then the rest."
     },
     "repositories": {
      "type": "array",
      "items": {
       "type": "string"
      },
      "description": "The repositories those pull requests are in."
     },
     "deployments": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/Deployment"
      },
      "description": "What those repositories deployed since, newest first."
     },
     "since": {
      "type": [
       "string",
       "null"
      ],
      "description": "When the earliest pull request for this release was last touched: the point after which a deployment could possibly carry it."
     }
    },
    "required": [
     "pulls",
     "repositories",
     "deployments",
     "since"
    ],
    "additionalProperties": false
   },
   "ReleaseFetched": {
    "type": "object",
    "properties": {
     "fetched": {
      "type": "number",
      "description": "Repositories fetched."
     },
     "errors": {
      "type": "array",
      "items": {
       "type": "string"
      },
      "description": "Repositories that could not be, with why."
     }
    },
    "required": [
     "fetched",
     "errors"
    ],
    "additionalProperties": false
   },
   "ReleaseGateDef": {
    "type": "object",
    "properties": {
     "id": {
      "type": "string"
     },
     "versionId": {
      "type": "string",
      "description": "Empty for a project template, the release's id for a gate only that release has."
     },
     "label": {
      "type": "string"
     },
     "scope": {
      "type": "string",
      "description": "`release` (one gate) or `repo` (one for each repository of the release)."
     },
     "kind": {
      "type": "string",
      "description": "`manual`, `changed`, `if_changed` or `monitors`."
     },
     "repo": {
      "type": "string",
      "description": "Limits a repository gate to this repository (its id); empty means every repository."
     },
     "paths": {
      "type": "array",
      "items": {
       "type": "string"
      }
     },
     "position": {
      "type": "number"
     },
     "enabled": {
      "type": "boolean"
     },
     "off": {
      "type": "boolean",
      "description": "A template switched off for this release."
     }
    },
    "required": [
     "id",
     "versionId",
     "label",
     "scope",
     "kind",
     "repo",
     "paths",
     "position",
     "enabled",
     "off"
    ],
    "additionalProperties": false
   },
   "ReleaseGateSettings": {
    "type": "object",
    "properties": {
     "defs": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/ReleaseGateDef"
      },
      "description": "The project's gates and the ones only this release has, with the templates switched off here marked."
     }
    },
    "required": [
     "defs"
    ],
    "additionalProperties": false
   },
   "ReleaseReview": {
    "type": "object",
    "properties": {
     "turn": {
      "$ref": "#/components/schemas/AiTurn"
     },
     "current": {
      "type": "boolean",
      "description": "Whether it still describes the release: the verdict, the gates passed, how much is measured and how much is done are what they were."
     },
     "generatedAt": {
      "type": "string",
      "description": "RFC 3339."
     }
    },
    "required": [
     "turn",
     "current",
     "generatedAt"
    ],
    "additionalProperties": false
   },
   "ReleaseRow": {
    "type": "object",
    "properties": {
     "id": {
      "type": "string",
      "description": "The tracker's id for the version, which `release` keys on. The name is not unique across projects; the id is."
     },
     "name": {
      "type": "string"
     },
     "project": {
      "type": "string"
     },
     "date": {
      "type": [
       "string",
       "null"
      ],
      "description": "`YYYY-MM-DD`."
     },
     "days": {
      "type": [
       "number",
       "null"
      ],
      "description": "Days from today. Negative is in the past. Absent where there is no date."
     },
     "released": {
      "type": "boolean"
     },
     "issues": {
      "type": "number",
      "description": "How many issues carry this version."
     },
     "done": {
      "type": "number",
      "description": "Of those: finished, being worked, not started. Measured by the index, which may not cover every issue — see `shareDone`."
     },
     "doing": {
      "type": "number"
     },
     "todo": {
      "type": "number"
     },
     "shareDone": {
      "type": [
       "number",
       "null"
      ],
      "description": "The finished share, only when the measurements account for every issue. Missing coverage stays unknown rather than reading as 0%."
     },
     "about": {
      "$ref": "#/components/schemas/ReleaseAbout"
     }
    },
    "required": [
     "id",
     "name",
     "project",
     "date",
     "days",
     "released",
     "issues",
     "done",
     "doing",
     "todo",
     "shareDone",
     "about"
    ],
    "additionalProperties": false
   },
   "ReleaseSprints": {
    "type": "object",
    "properties": {
     "counts": {
      "type": "object",
      "additionalProperties": {
       "type": "number"
      },
      "description": "By issue key: how many sprints it has been in. An issue in none is absent."
     },
     "note": {
      "type": [
       "string",
       "null"
      ],
      "description": "Why there are no counts, when there are none to show."
     }
    },
    "required": [
     "counts",
     "note"
    ],
    "additionalProperties": false
   },
   "ReleasesScreen": {
    "type": "object",
    "properties": {
     "releases": {
      "anyOf": [
       {
        "type": "array",
        "items": {
         "$ref": "#/components/schemas/ReleaseRow"
        }
       },
       {
        "type": "null"
       }
      ]
     },
     "readiness": {
      "anyOf": [
       {
        "$ref": "#/components/schemas/JsonValue"
       },
       {
        "type": "null"
       }
      ],
      "description": "Core's readiness document for the selected release."
     },
     "timeline": {
      "anyOf": [
       {
        "$ref": "#/components/schemas/JsonValue"
       },
       {
        "type": "null"
       }
      ],
      "description": "Core's timeline for the selected release."
     },
     "errors": {
      "type": "array",
      "items": {
       "type": "string"
      }
     }
    },
    "required": [
     "releases",
     "readiness",
     "timeline",
     "errors"
    ],
    "additionalProperties": false
   },
   "RemoteApproval": {
    "type": "object",
    "properties": {
     "project": {
      "type": "string"
     },
     "projectName": {
      "type": "string"
     },
     "kind": {
      "type": "string",
      "description": "`run` or `automation`."
     },
     "id": {
      "type": "string"
     },
     "task": {
      "type": [
       "string",
       "null"
      ]
     },
     "key": {
      "type": [
       "string",
       "null"
      ]
     },
     "title": {
      "type": "string"
     },
     "detail": {
      "type": "string"
     },
     "commit": {
      "type": "boolean"
     },
     "since": {
      "type": "string"
     }
    },
    "required": [
     "project",
     "projectName",
     "kind",
     "id",
     "task",
     "key",
     "title",
     "detail",
     "commit",
     "since"
    ],
    "additionalProperties": false
   },
   "RemoteDevice": {
    "type": "object",
    "properties": {
     "id": {
      "type": "string"
     },
     "name": {
      "type": "string"
     },
     "createdAt": {
      "type": "string"
     },
     "lastSeen": {
      "type": [
       "string",
       "null"
      ]
     }
    },
    "required": [
     "id",
     "name",
     "createdAt",
     "lastSeen"
    ],
    "additionalProperties": false
   },
   "RemoteEnable": {
    "type": "object",
    "properties": {
     "enabled": {
      "type": "boolean"
     },
     "relay": {
      "type": "string",
      "description": "`wss://…`; absent keeps the current relay."
     }
    },
    "required": [
     "enabled"
    ],
    "additionalProperties": false
   },
   "RemoteForget": {
    "type": "object",
    "properties": {
     "device": {
      "type": "string"
     }
    },
    "required": [
     "device"
    ],
    "additionalProperties": false
   },
   "RemotePairArgs": {
    "type": "object",
    "properties": {
     "name": {
      "type": "string",
      "description": "What the phone is called in the list."
     }
    },
    "required": [
     "name"
    ],
    "additionalProperties": false
   },
   "RemotePaired": {
    "type": "object",
    "properties": {
     "device": {
      "$ref": "#/components/schemas/RemoteDevice"
     },
     "url": {
      "type": "string",
      "description": "Opens the remote page on the phone. Shown once; it holds the phone's key."
     },
     "qr": {
      "type": "string",
      "description": "The link as an SVG QR code."
     }
    },
    "required": [
     "device",
     "url",
     "qr"
    ],
    "additionalProperties": false
   },
   "RemoteStatus": {
    "type": "object",
    "properties": {
     "enabled": {
      "type": "boolean"
     },
     "relay": {
      "type": "string"
     },
     "hostId": {
      "type": [
       "string",
       "null"
      ],
      "description": "This service on the relay; none until a key was made."
     },
     "connected": {
      "type": "boolean"
     },
     "error": {
      "type": [
       "string",
       "null"
      ],
      "description": "Why it is not connected, when it tried."
     },
     "devices": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/RemoteDevice"
      }
     }
    },
    "required": [
     "enabled",
     "relay",
     "hostId",
     "connected",
     "error",
     "devices"
    ],
    "additionalProperties": false
   },
   "Removed": {
    "type": "object",
    "properties": {
     "removed": {
      "type": "boolean"
     }
    },
    "required": [
     "removed"
    ],
    "additionalProperties": false
   },
   "RemoveOutcome": {
    "type": "object",
    "properties": {
     "removed": {
      "type": "boolean"
     },
     "confirm": {
      "type": [
       "string",
       "null"
      ],
      "description": "Present on the first call: send it back within a minute to remove."
     },
     "expiresIn": {
      "type": [
       "number",
       "null"
      ]
     },
     "counts": {
      "$ref": "#/components/schemas/ProjectCounts",
      "description": "What would be lost, so the confirmation can say so."
     }
    },
    "required": [
     "removed",
     "confirm",
     "expiresIn",
     "counts"
    ],
    "additionalProperties": false
   },
   "RepoBranch": {
    "type": "object",
    "properties": {
     "name": {
      "type": "string"
     },
     "remote": {
      "type": "boolean"
     },
     "current": {
      "type": "boolean"
     },
     "upstream": {
      "type": [
       "string",
       "null"
      ]
     },
     "sha": {
      "type": "string"
     },
     "at": {
      "type": "string"
     },
     "author": {
      "type": "string"
     },
     "subject": {
      "type": "string"
     },
     "ahead": {
      "type": [
       "number",
       "null"
      ],
      "description": "Commits on this branch and not on the base, and the other way round. `null` where the base is missing."
     },
     "behind": {
      "type": [
       "number",
       "null"
      ]
     },
     "pull": {
      "anyOf": [
       {
        "$ref": "#/components/schemas/BranchPull"
       },
       {
        "type": "null"
       }
      ]
     },
     "task": {
      "anyOf": [
       {
        "$ref": "#/components/schemas/BranchTask"
       },
       {
        "type": "null"
       }
      ]
     },
     "issue": {
      "type": [
       "string",
       "null"
      ],
      "description": "An issue key the branch name carries."
     }
    },
    "required": [
     "name",
     "remote",
     "current",
     "upstream",
     "sha",
     "at",
     "author",
     "subject",
     "ahead",
     "behind",
     "pull",
     "task",
     "issue"
    ],
    "additionalProperties": false
   },
   "RepoBranchCreated": {
    "type": "object",
    "properties": {
     "name": {
      "type": "string"
     },
     "from": {
      "type": "string"
     },
     "pushed": {
      "type": "boolean"
     },
     "message": {
      "type": "string",
      "description": "What happened, in a sentence."
     }
    },
    "required": [
     "name",
     "from",
     "pushed",
     "message"
    ],
    "additionalProperties": false
   },
   "RepoBranches": {
    "type": "object",
    "properties": {
     "base": {
      "type": [
       "string",
       "null"
      ],
      "description": "What ahead and behind are counted against."
     },
     "branches": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/RepoBranch"
      }
     },
     "total": {
      "type": "number",
      "description": "Branches matching the query, across pages."
     },
     "page": {
      "type": "number"
     },
     "pageSize": {
      "type": "number"
     }
    },
    "required": [
     "base",
     "branches",
     "total",
     "page",
     "pageSize"
    ],
    "additionalProperties": false
   },
   "RepoBranchTree": {
    "type": "object",
    "properties": {
     "prefix": {
      "type": "string"
     },
     "base": {
      "type": [
       "string",
       "null"
      ],
      "description": "What ahead and behind are counted against."
     },
     "folders": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/BranchFolder"
      }
     },
     "branches": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/RepoBranch"
      }
     },
     "branchCount": {
      "type": "number",
      "description": "Branches at this level (or matching the query), across \"show more\"."
     },
     "offset": {
      "type": "number"
     },
     "hasMore": {
      "type": "boolean"
     }
    },
    "required": [
     "prefix",
     "base",
     "folders",
     "branches",
     "branchCount",
     "offset",
     "hasMore"
    ],
    "additionalProperties": false
   },
   "RepoCommit": {
    "type": "object",
    "properties": {
     "sha": {
      "type": "string"
     },
     "shortSha": {
      "type": "string"
     },
     "author": {
      "type": "string"
     },
     "authorEmail": {
      "type": "string"
     },
     "at": {
      "type": "string",
      "description": "RFC 3339."
     },
     "subject": {
      "type": "string"
     }
    },
    "required": [
     "sha",
     "shortSha",
     "author",
     "authorEmail",
     "at",
     "subject"
    ],
    "additionalProperties": false
   },
   "RepoCommitDetail": {
    "type": "object",
    "properties": {
     "commit": {
      "$ref": "#/components/schemas/RepoCommit"
     },
     "body": {
      "type": "string"
     },
     "parents": {
      "type": "array",
      "items": {
       "type": "string"
      }
     },
     "committer": {
      "type": "string"
     },
     "committedAt": {
      "type": "string"
     },
     "change": {
      "$ref": "#/components/schemas/PullChange"
     },
     "cut": {
      "type": "boolean",
      "description": "The diff was longer than the service reads; the rest is not shown."
     },
     "webUrl": {
      "type": [
       "string",
       "null"
      ]
     }
    },
    "required": [
     "commit",
     "body",
     "parents",
     "committer",
     "committedAt",
     "change",
     "cut",
     "webUrl"
    ],
    "additionalProperties": false
   },
   "RepoCommits": {
    "type": "object",
    "properties": {
     "commits": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/RepoCommit"
      }
     },
     "page": {
      "type": "number"
     },
     "hasMore": {
      "type": "boolean"
     },
     "ref": {
      "type": "string"
     }
    },
    "required": [
     "commits",
     "page",
     "hasMore",
     "ref"
    ],
    "additionalProperties": false
   },
   "RepoContents": {
    "type": "object",
    "properties": {
     "id": {
      "type": "string",
      "description": "The repository's id (core's workspace id)."
     },
     "name": {
      "type": "string"
     },
     "local": {
      "type": "boolean"
     },
     "ref": {
      "anyOf": [
       {
        "$ref": "#/components/schemas/ContentRef"
       },
       {
        "type": "null"
       }
      ]
     },
     "base": {
      "anyOf": [
       {
        "$ref": "#/components/schemas/ContentRef"
       },
       {
        "type": "null"
       }
      ],
      "description": "`null` with a ref: the range is the ref's whole history, up to the cap."
     },
     "error": {
      "type": [
       "string",
       "null"
      ],
      "description": "Why this repository could not be read."
     },
     "issues": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/ContentIssue"
      },
      "description": "Included first, then unplanned, by key."
     },
     "unlinked": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/ContentCommit"
      },
      "description": "Commits naming no issue of this project, newest first."
     },
     "commits": {
      "type": "number",
      "description": "Commits in the range, as read."
     },
     "truncated": {
      "type": "boolean",
      "description": "The range held more than the cap of commits read."
     },
     "included": {
      "type": "number"
     },
     "unplanned": {
      "type": "number"
     }
    },
    "required": [
     "id",
     "name",
     "local",
     "ref",
     "base",
     "error",
     "issues",
     "unlinked",
     "commits",
     "truncated",
     "included",
     "unplanned"
    ],
    "additionalProperties": false
   },
   "RepoDeployment": {
    "type": "object",
    "properties": {
     "id": {
      "type": "string"
     },
     "state": {
      "type": "string"
     },
     "status": {
      "type": [
       "string",
       "null"
      ]
     },
     "release": {
      "type": [
       "string",
       "null"
      ]
     },
     "commit": {
      "type": [
       "string",
       "null"
      ]
     },
     "pipeline": {
      "type": [
       "string",
       "null"
      ]
     },
     "startedOn": {
      "type": [
       "string",
       "null"
      ]
     },
     "completedOn": {
      "type": [
       "string",
       "null"
      ]
     }
    },
    "required": [
     "id",
     "state",
     "status",
     "release",
     "commit",
     "pipeline",
     "startedOn",
     "completedOn"
    ],
    "additionalProperties": false
   },
   "RepoEntry": {
    "type": "object",
    "properties": {
     "name": {
      "type": "string"
     },
     "path": {
      "type": "string"
     },
     "kind": {
      "type": "string",
      "description": "`dir`, `file`, `symlink` or `submodule`."
     },
     "size": {
      "type": [
       "number",
       "null"
      ]
     },
     "lastCommit": {
      "anyOf": [
       {
        "$ref": "#/components/schemas/RepoCommit"
       },
       {
        "type": "null"
       }
      ],
      "description": "The newest commit to touch it, where the walk reached it."
     }
    },
    "required": [
     "name",
     "path",
     "kind",
     "size",
     "lastCommit"
    ],
    "additionalProperties": false
   },
   "RepoEnvironment": {
    "type": "object",
    "properties": {
     "id": {
      "type": "string"
     },
     "name": {
      "type": "string"
     },
     "kind": {
      "type": [
       "string",
       "null"
      ]
     },
     "deployments": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/RepoDeployment"
      },
      "description": "Newest first, at most five."
     }
    },
    "required": [
     "id",
     "name",
     "kind",
     "deployments"
    ],
    "additionalProperties": false
   },
   "RepoFile": {
    "type": "object",
    "properties": {
     "path": {
      "type": "string"
     },
     "source": {
      "type": "string"
     },
     "ref": {
      "type": "string"
     },
     "commit": {
      "type": [
       "string",
       "null"
      ]
     },
     "size": {
      "type": "number"
     },
     "binary": {
      "type": [
       "boolean",
       "null"
      ],
      "description": "`null` when the file was too large to look at."
     },
     "tooLarge": {
      "type": "boolean"
     },
     "limit": {
      "type": "number",
      "description": "The preview limit, in bytes."
     },
     "text": {
      "type": [
       "string",
       "null"
      ]
     },
     "symlink": {
      "type": "boolean",
      "description": "A symbolic link: `text` is its target, which is never followed."
     },
     "lastCommit": {
      "anyOf": [
       {
        "$ref": "#/components/schemas/RepoCommit"
       },
       {
        "type": "null"
       }
      ]
     },
     "openable": {
      "type": "boolean",
      "description": "The file is in this Mac's work tree, so it can be opened in an editor."
     },
     "webUrl": {
      "type": [
       "string",
       "null"
      ]
     }
    },
    "required": [
     "path",
     "source",
     "ref",
     "commit",
     "size",
     "binary",
     "tooLarge",
     "limit",
     "text",
     "symlink",
     "lastCommit",
     "openable",
     "webUrl"
    ],
    "additionalProperties": false
   },
   "RepoInfo": {
    "type": "object",
    "properties": {
     "id": {
      "type": "string"
     },
     "name": {
      "type": "string"
     },
     "slug": {
      "type": [
       "string",
       "null"
      ],
      "description": "`workspace/repo` on the remote's host."
     },
     "provider": {
      "type": [
       "string",
       "null"
      ],
      "description": "`bitbucket`, `gitlab`, `github`…"
     },
     "remoteUrl": {
      "type": [
       "string",
       "null"
      ]
     },
     "webUrl": {
      "type": [
       "string",
       "null"
      ],
      "description": "The repository's page on its host."
     },
     "root": {
      "type": "string"
     },
     "local": {
      "type": "boolean",
      "description": "The clone is on this Mac and is a git work tree."
     },
     "defaultBranch": {
      "type": [
       "string",
       "null"
      ],
      "description": "The branch DevDash treats as the default (tasks are cut from it)."
     },
     "currentBranch": {
      "type": [
       "string",
       "null"
      ]
     },
     "sections": {
      "type": "array",
      "items": {
       "type": "string"
      },
      "description": "The sections this repository can show, in order: `source`, `commits`, `branches`, `pulls`, `pipelines`, `deployments`, `issues`."
     },
     "notes": {
      "type": "array",
      "items": {
       "type": "string"
      },
      "description": "Why a section is missing or limited, in sentences."
     }
    },
    "required": [
     "id",
     "name",
     "slug",
     "provider",
     "remoteUrl",
     "webUrl",
     "root",
     "local",
     "defaultBranch",
     "currentBranch",
     "sections",
     "notes"
    ],
    "additionalProperties": false
   },
   "RepoOpened": {
    "type": "object",
    "properties": {
     "editor": {
      "type": "string",
      "description": "The application it was opened in."
     }
    },
    "required": [
     "editor"
    ],
    "additionalProperties": false
   },
   "RepoPipeline": {
    "type": "object",
    "properties": {
     "id": {
      "type": "string"
     },
     "number": {
      "type": "number"
     },
     "state": {
      "type": "string"
     },
     "result": {
      "type": [
       "string",
       "null"
      ]
     },
     "refName": {
      "type": [
       "string",
       "null"
      ]
     },
     "refKind": {
      "type": "string"
     },
     "pattern": {
      "type": [
       "string",
       "null"
      ]
     },
     "commit": {
      "type": [
       "string",
       "null"
      ]
     },
     "creator": {
      "type": [
       "string",
       "null"
      ]
     },
     "trigger": {
      "type": [
       "string",
       "null"
      ]
     },
     "createdOn": {
      "type": [
       "string",
       "null"
      ]
     },
     "completedOn": {
      "type": [
       "string",
       "null"
      ]
     },
     "durationSeconds": {
      "type": [
       "number",
       "null"
      ]
     },
     "url": {
      "type": "string"
     }
    },
    "required": [
     "id",
     "number",
     "state",
     "result",
     "refName",
     "refKind",
     "pattern",
     "commit",
     "creator",
     "trigger",
     "createdOn",
     "completedOn",
     "durationSeconds",
     "url"
    ],
    "additionalProperties": false
   },
   "RepoPipelineDetail": {
    "type": "object",
    "properties": {
     "pipeline": {
      "$ref": "#/components/schemas/RepoPipeline"
     },
     "steps": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/RepoStep"
      }
     },
     "step": {
      "type": [
       "string",
       "null"
      ],
      "description": "The step whose log is included."
     },
     "log": {
      "type": [
       "string",
       "null"
      ]
     },
     "logCut": {
      "type": "boolean",
      "description": "The log's start was cut; this is its end."
     }
    },
    "required": [
     "pipeline",
     "steps",
     "step",
     "log",
     "logCut"
    ],
    "additionalProperties": false
   },
   "RepoPipelines": {
    "type": "object",
    "properties": {
     "pipelines": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/RepoPipeline"
      }
     },
     "page": {
      "type": "number"
     },
     "hasMore": {
      "type": "boolean"
     }
    },
    "required": [
     "pipelines",
     "page",
     "hasMore"
    ],
    "additionalProperties": false
   },
   "RepoPullCreated": {
    "type": "object",
    "properties": {
     "reference": {
      "type": "string",
      "description": "`<repository>#<number>`, the id the pull request screens use."
     },
     "number": {
      "type": "number"
     },
     "url": {
      "type": "string"
     }
    },
    "required": [
     "reference",
     "number",
     "url"
    ],
    "additionalProperties": false
   },
   "RepoRefs": {
    "type": "object",
    "properties": {
     "source": {
      "type": "string",
      "description": "`local` or `bitbucket`."
     },
     "defaultRef": {
      "type": "string",
      "description": "The ref a view opens on."
     },
     "branches": {
      "type": "array",
      "items": {
       "type": "string"
      }
     },
     "remoteBranches": {
      "type": "array",
      "items": {
       "type": "string"
      },
      "description": "`origin/main` and the like."
     },
     "tags": {
      "type": "array",
      "items": {
       "type": "string"
      }
     },
     "truncated": {
      "type": "boolean",
      "description": "More refs exist than were listed."
     }
    },
    "required": [
     "source",
     "defaultRef",
     "branches",
     "remoteBranches",
     "tags",
     "truncated"
    ],
    "additionalProperties": false
   },
   "Report": {
    "type": "object",
    "properties": {
     "id": {
      "type": "string"
     },
     "automationId": {
      "type": "string"
     },
     "automationName": {
      "type": "string"
     },
     "runId": {
      "type": "string"
     },
     "title": {
      "type": "string"
     },
     "bodyMd": {
      "type": "string",
      "description": "Markdown, as the agent wrote it."
     },
     "createdAt": {
      "type": "number"
     },
     "readAt": {
      "type": [
       "number",
       "null"
      ]
     }
    },
    "required": [
     "id",
     "automationId",
     "automationName",
     "runId",
     "title",
     "bodyMd",
     "createdAt",
     "readAt"
    ],
    "additionalProperties": false
   },
   "ReportAutomation": {
    "type": "object",
    "properties": {
     "automationId": {
      "type": "string"
     },
     "automationName": {
      "type": "string"
     },
     "count": {
      "type": "number"
     },
     "unread": {
      "type": "number"
     }
    },
    "required": [
     "automationId",
     "automationName",
     "count",
     "unread"
    ],
    "additionalProperties": false
   },
   "ReportDetail": {
    "type": "object",
    "properties": {
     "report": {
      "$ref": "#/components/schemas/Report"
     },
     "previous": {
      "type": [
       "string",
       "null"
      ],
      "description": "The same automation's report before this one."
     },
     "next": {
      "type": [
       "string",
       "null"
      ],
      "description": "And after it."
     }
    },
    "required": [
     "report",
     "previous",
     "next"
    ],
    "additionalProperties": false
   },
   "ReportsPage": {
    "type": "object",
    "properties": {
     "reports": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/ReportSummary"
      }
     },
     "total": {
      "type": "number"
     },
     "page": {
      "type": "number"
     },
     "pages": {
      "type": "number"
     },
     "automations": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/ReportAutomation"
      },
      "description": "Every automation with reports, for the facet; unfiltered."
     },
     "unread": {
      "type": "number",
      "description": "Unread reports in all; unfiltered."
     }
    },
    "required": [
     "reports",
     "total",
     "page",
     "pages",
     "automations",
     "unread"
    ],
    "additionalProperties": false
   },
   "ReportSummary": {
    "type": "object",
    "properties": {
     "id": {
      "type": "string"
     },
     "automationId": {
      "type": "string"
     },
     "automationName": {
      "type": "string"
     },
     "runId": {
      "type": "string",
      "description": "The automation run that wrote it."
     },
     "title": {
      "type": "string"
     },
     "createdAt": {
      "type": "number",
      "description": "Unix seconds."
     },
     "readAt": {
      "type": [
       "number",
       "null"
      ]
     }
    },
    "required": [
     "id",
     "automationId",
     "automationName",
     "runId",
     "title",
     "createdAt",
     "readAt"
    ],
    "additionalProperties": false
   },
   "RepoScreen": {
    "type": "object",
    "properties": {
     "repo": {
      "$ref": "#/components/schemas/RepoInfo"
     },
     "refs": {
      "anyOf": [
       {
        "$ref": "#/components/schemas/RepoRefs"
       },
       {
        "type": "null"
       }
      ]
     },
     "tree": {
      "anyOf": [
       {
        "$ref": "#/components/schemas/RepoTree"
       },
       {
        "type": "null"
       }
      ],
      "description": "The first view: the default ref's root, or the asked-for path."
     },
     "errors": {
      "type": "array",
      "items": {
       "type": "string"
      }
     }
    },
    "required": [
     "repo",
     "refs",
     "tree",
     "errors"
    ],
    "additionalProperties": false
   },
   "RepositoryMapping": {
    "type": "object",
    "properties": {
     "key": {
      "type": "string",
      "description": "The template repository's `key`."
     },
     "workspaceId": {
      "type": "string",
      "description": "One of this project's repositories…"
     },
     "path": {
      "type": "string",
      "description": "…or a folder inside home, registered as a repository first."
     }
    },
    "required": [
     "key"
    ],
    "additionalProperties": false
   },
   "RepositoryProposal": {
    "type": "object",
    "properties": {
     "repository": {
      "$ref": "#/components/schemas/TemplateRepository"
     },
     "candidates": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/CloneCandidate"
      },
      "description": "Best first. Empty when no clone was found: pick a folder or clone it."
     }
    },
    "required": [
     "repository",
     "candidates"
    ],
    "additionalProperties": false
   },
   "RepositoryScope": {
    "type": "object",
    "properties": {
     "slug": {
      "type": "string",
      "description": "The repository slug within the Bitbucket workspace."
     },
     "production": {
      "type": "array",
      "items": {
       "type": "string"
      }
     },
     "uat": {
      "type": "array",
      "items": {
       "type": "string"
      }
     }
    },
    "required": [
     "slug",
     "production",
     "uat"
    ],
    "additionalProperties": false
   },
   "RepoStep": {
    "type": "object",
    "properties": {
     "id": {
      "type": "string"
     },
     "name": {
      "type": "string"
     },
     "state": {
      "type": "string"
     },
     "result": {
      "type": [
       "string",
       "null"
      ]
     },
     "startedOn": {
      "type": [
       "string",
       "null"
      ]
     },
     "completedOn": {
      "type": [
       "string",
       "null"
      ]
     },
     "durationSeconds": {
      "type": [
       "number",
       "null"
      ]
     },
     "image": {
      "type": [
       "string",
       "null"
      ]
     },
     "commands": {
      "type": "array",
      "items": {
       "type": "string"
      }
     }
    },
    "required": [
     "id",
     "name",
     "state",
     "result",
     "startedOn",
     "completedOn",
     "durationSeconds",
     "image",
     "commands"
    ],
    "additionalProperties": false
   },
   "RepoTree": {
    "type": "object",
    "properties": {
     "source": {
      "type": "string"
     },
     "ref": {
      "type": "string"
     },
     "commit": {
      "type": [
       "string",
       "null"
      ]
     },
     "path": {
      "type": "string"
     },
     "kind": {
      "type": "string",
      "description": "`dir` or `file`: a path naming a file answers with `file` set."
     },
     "entries": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/RepoEntry"
      }
     },
     "readme": {
      "anyOf": [
       {
        "$ref": "#/components/schemas/RepoFile"
       },
       {
        "type": "null"
       }
      ]
     },
     "file": {
      "anyOf": [
       {
        "$ref": "#/components/schemas/RepoFile"
       },
       {
        "type": "null"
       }
      ]
     },
     "truncated": {
      "type": "boolean"
     }
    },
    "required": [
     "source",
     "ref",
     "commit",
     "path",
     "kind",
     "entries",
     "readme",
     "file",
     "truncated"
    ],
    "additionalProperties": false
   },
   "Restarting": {
    "type": "object",
    "properties": {
     "restarting": {
      "type": "boolean"
     }
    },
    "required": [
     "restarting"
    ],
    "additionalProperties": false
   },
   "Resumed": {
    "type": "object",
    "properties": {
     "terminal": {
      "type": "string",
      "description": "The terminal it opened in."
     },
     "group": {
      "type": "string"
     },
     "command": {
      "type": "string"
     }
    },
    "required": [
     "terminal",
     "group",
     "command"
    ],
    "additionalProperties": false
   },
   "ReviewFinding": {
    "type": "object",
    "properties": {
     "severity": {
      "type": "string",
      "description": "`P0` blocks merge, `P3` is minor."
     },
     "title": {
      "type": "string"
     },
     "file": {
      "type": [
       "string",
       "null"
      ]
     },
     "detail": {
      "type": "string"
     },
     "pass": {
      "type": "string",
      "description": "Which pass found it."
     }
    },
    "required": [
     "severity",
     "title",
     "file",
     "detail",
     "pass"
    ],
    "additionalProperties": false
   },
   "ReviewOutcomes": {
    "type": "object",
    "properties": {
     "runs": {
      "type": "number"
     },
     "findings": {
      "type": "number"
     },
     "serious": {
      "type": "number",
      "description": "P0 and P1."
     }
    },
    "required": [
     "runs",
     "findings",
     "serious"
    ],
    "additionalProperties": false
   },
   "ReviewPass": {
    "type": "object",
    "properties": {
     "label": {
      "type": "string"
     },
     "state": {
      "type": "string"
     },
     "error": {
      "type": [
       "string",
       "null"
      ]
     }
    },
    "required": [
     "label",
     "state",
     "error"
    ],
    "additionalProperties": false
   },
   "ReviewRun": {
    "type": "object",
    "properties": {
     "runId": {
      "type": "string"
     },
     "queueState": {
      "type": "string"
     },
     "passes": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/ReviewPass"
      }
     },
     "findings": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/ReviewFinding"
      },
      "description": "Worst first."
     },
     "verdict": {
      "type": [
       "string",
       "null"
      ],
      "description": "The worst verdict any pass gave, which is the one that matters."
     },
     "cost": {
      "type": [
       "string",
       "null"
      ],
      "description": "`$1.23`, where anything was spent."
     }
    },
    "required": [
     "runId",
     "queueState",
     "passes",
     "findings",
     "verdict",
     "cost"
    ],
    "additionalProperties": false
   },
   "ReviewStart": {
    "type": "object",
    "properties": {
     "runId": {
      "type": "string"
     },
     "directory": {
      "type": "string",
      "description": "Where the change was checked out, so the pane can say what is being read."
     }
    },
    "required": [
     "runId",
     "directory"
    ],
    "additionalProperties": false
   },
   "RevokeArgs": {
    "type": "object",
    "properties": {
     "id": {
      "type": "string",
      "description": "A session id from `sessions.list`, or `current` for this browser."
     }
    },
    "required": [
     "id"
    ],
    "additionalProperties": false
   },
   "RunAutomation": {
    "type": "object",
    "properties": {
     "id": {
      "type": "string"
     },
     "name": {
      "type": "string"
     },
     "runId": {
      "type": "string",
      "description": "The rule's run (`automation_runs.id`), for its card on Automations → Runs."
     }
    },
    "required": [
     "id",
     "name",
     "runId"
    ],
    "additionalProperties": false
   },
   "RunFacetValue": {
    "type": "object",
    "properties": {
     "value": {
      "type": "string"
     },
     "label": {
      "type": "string"
     },
     "count": {
      "type": "number"
     }
    },
    "required": [
     "value",
     "label",
     "count"
    ],
    "additionalProperties": false
   },
   "RunOutcomes": {
    "type": "object",
    "properties": {
     "started": {
      "type": "number"
     },
     "done": {
      "type": "number"
     },
     "failed": {
      "type": "number"
     },
     "stopped": {
      "type": "number"
     },
     "active": {
      "type": "number",
      "description": "Running or waiting."
     },
     "retried": {
      "type": "number",
      "description": "Took more than one attempt."
     },
     "successRate": {
      "type": [
       "number",
       "null"
      ],
      "description": "Done of the finished (done, failed, stopped); none before any finished."
     },
     "medianMinutes": {
      "type": [
       "number",
       "null"
      ]
     }
    },
    "required": [
     "started",
     "done",
     "failed",
     "stopped",
     "active",
     "retried",
     "successRate",
     "medianMinutes"
    ],
    "additionalProperties": false
   },
   "SandboxBuilt": {
    "type": "object",
    "properties": {
     "message": {
      "type": "string"
     }
    },
    "required": [
     "message"
    ],
    "additionalProperties": false
   },
   "SandboxStatus": {
    "type": "object",
    "properties": {
     "docker": {
      "type": [
       "string",
       "null"
      ],
      "description": "The Docker server's version; none when Docker is missing or not running."
     },
     "dockerError": {
      "type": [
       "string",
       "null"
      ]
     },
     "image": {
      "type": "boolean",
      "description": "`defaultImage` is built."
     },
     "token": {
      "type": "boolean",
      "description": "A Claude token is stored."
     },
     "defaultImage": {
      "type": "string"
     },
     "dockerfile": {
      "type": "string",
      "description": "What `sandbox.build` builds."
     }
    },
    "required": [
     "docker",
     "dockerError",
     "image",
     "token",
     "defaultImage",
     "dockerfile"
    ],
    "additionalProperties": false
   },
   "SandboxToken": {
    "type": "object",
    "properties": {
     "token": {
      "type": "string",
      "description": "What `claude setup-token` printed."
     }
    },
    "required": [
     "token"
    ],
    "additionalProperties": false
   },
   "SaveBitbucketScope": {
    "type": "object",
    "properties": {
     "repositories": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/RepositoryScope"
      }
     },
     "environments": {
      "$ref": "#/components/schemas/DeployLanes"
     }
    },
    "required": [
     "repositories",
     "environments"
    ],
    "additionalProperties": false
   },
   "SavedServer": {
    "type": "object",
    "properties": {
     "id": {
      "type": "string"
     }
    },
    "required": [
     "id"
    ],
    "additionalProperties": false
   },
   "ScopeTest": {
    "type": "object",
    "properties": {
     "matches": {
      "type": [
       "number",
       "null"
      ],
      "description": "How many issues Jira says the scope matches, or `null` for the whole site."
     }
    },
    "required": [
     "matches"
    ],
    "additionalProperties": false
   },
   "SearchFacet": {
    "type": "object",
    "properties": {
     "kind": {
      "type": "string"
     },
     "provider": {
      "type": "string"
     },
     "count": {
      "type": "number"
     }
    },
    "required": [
     "kind",
     "provider",
     "count"
    ],
    "additionalProperties": false
   },
   "SearchResults": {
    "type": "object",
    "properties": {
     "groups": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/HitGroup"
      }
     },
     "facets": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/SearchFacet"
      },
      "description": "Matches per kind and provider, over every match."
     }
    },
    "required": [
     "groups",
     "facets"
    ],
    "additionalProperties": false
   },
   "Section": {
    "type": "string",
    "enum": [
     "work",
     "reviews"
    ]
   },
   "SecurityCheckStarted": {
    "type": "object",
    "properties": {
     "started": {
      "type": "boolean",
      "description": "False when a check was already running; it announces when done too."
     }
    },
    "required": [
     "started"
    ],
    "additionalProperties": false
   },
   "SecurityFindingDetail": {
    "type": "object",
    "properties": {
     "finding": {
      "$ref": "#/components/schemas/SecurityFindingRow"
     },
     "path": {
      "type": "string",
      "description": "The concrete path, the full id. An enumeration's busiest path."
     },
     "ips": {
      "type": "array",
      "items": {
       "type": "string"
      },
      "description": "Distinct client IPs, busiest first."
     },
     "devices": {
      "type": "array",
      "items": {
       "type": "string"
      },
      "description": "People's devices: what the rule counts."
     },
     "clients": {
      "type": "array",
      "items": {
       "type": "string"
      },
      "description": "Server and library clients seen on it (nginx, Node, curl…), not counted as devices."
     },
     "countries": {
      "type": "array",
      "items": {
       "type": "string"
      }
     },
     "asns": {
      "type": "array",
      "items": {
       "type": "string"
      }
     },
     "samples": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/SecuritySample"
      },
      "description": "Newest first."
     },
     "geo": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/IpGeo"
      },
      "description": "Location and network of each IP, from the IP geolocation databases when installed (`geoip`); empty without them."
     },
     "geoInstalled": {
      "type": "boolean",
      "description": "The databases are installed (the drawer offers them otherwise)."
     },
     "firstAt": {
      "type": "number",
      "description": "The first and last request of the last check that found it, seconds."
     },
     "lastAt": {
      "type": "number"
     }
    },
    "required": [
     "finding",
     "path",
     "ips",
     "devices",
     "clients",
     "countries",
     "asns",
     "samples",
     "geo",
     "geoInstalled",
     "firstAt",
     "lastAt"
    ],
    "additionalProperties": false
   },
   "SecurityFindingRow": {
    "type": "object",
    "properties": {
     "id": {
      "type": "string"
     },
     "kind": {
      "type": "string",
      "description": "`shared_link` or `enumeration`."
     },
     "kindLabel": {
      "type": "string"
     },
     "rule": {
      "type": "string",
      "description": "The rule that made it, and its name when it was made."
     },
     "ruleName": {
      "type": [
       "string",
       "null"
      ]
     },
     "severity": {
      "type": "string",
      "description": "`low`, `medium` or `high`."
     },
     "status": {
      "type": "string",
      "description": "`open` or `resolved`."
     },
     "host": {
      "type": [
       "string",
       "null"
      ]
     },
     "masked": {
      "type": "string",
      "description": "The path with its id masked."
     },
     "route": {
      "type": "string",
      "description": "The route, ids as `:id`."
     },
     "title": {
      "type": "string"
     },
     "why": {
      "type": "string"
     },
     "requests": {
      "type": "number"
     },
     "ipCount": {
      "type": "number"
     },
     "ips": {
      "type": "array",
      "items": {
       "type": "string"
      },
      "description": "The IPs, busiest first, for the list's search; the incident view keeps them masked."
     },
     "deviceCount": {
      "type": "number"
     },
     "countries": {
      "type": "array",
      "items": {
       "type": "string"
      }
     },
     "asnCount": {
      "type": "number"
     },
     "ids": {
      "type": "number",
      "description": "Enumeration: the distinct ids one IP asked for."
     },
     "firstSeen": {
      "type": "number",
      "description": "Seconds."
     },
     "lastSeen": {
      "type": "number"
     },
     "resolvedAt": {
      "type": [
       "number",
       "null"
      ]
     },
     "sources": {
      "type": "array",
      "items": {
       "type": "string"
      },
      "description": "`logs:<source>` or `cloudflare:<zone>`."
     },
     "incidentId": {
      "type": "string",
      "description": "The Incident view of its current episode."
     }
    },
    "required": [
     "id",
     "kind",
     "kindLabel",
     "rule",
     "ruleName",
     "severity",
     "status",
     "host",
     "masked",
     "route",
     "title",
     "why",
     "requests",
     "ipCount",
     "ips",
     "deviceCount",
     "countries",
     "asnCount",
     "ids",
     "firstSeen",
     "lastSeen",
     "resolvedAt",
     "sources",
     "incidentId"
    ],
    "additionalProperties": false
   },
   "SecurityIpRequests": {
    "type": "object",
    "properties": {
     "ip": {
      "type": "string"
     },
     "hours": {
      "type": "number"
     },
     "from": {
      "type": "number",
      "description": "Seconds."
     },
     "to": {
      "type": "number"
     },
     "geo": {
      "anyOf": [
       {
        "$ref": "#/components/schemas/IpGeo"
       },
       {
        "type": "null"
       }
      ]
     },
     "total": {
      "type": "number"
     },
     "distinctPaths": {
      "type": "number",
      "description": "Distinct paths among all the requests found."
     },
     "paths": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/IpPath"
      },
      "description": "The busiest paths."
     },
     "requests": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/SecuritySample"
      },
      "description": "Newest first."
     },
     "sources": {
      "type": "array",
      "items": {
       "type": "string"
      },
      "description": "The `logs:<source>` and `cloudflare:<zone>` that answered."
     },
     "notes": {
      "type": "array",
      "items": {
       "type": "string"
      }
     },
     "errors": {
      "type": "array",
      "items": {
       "type": "string"
      }
     }
    },
    "required": [
     "ip",
     "hours",
     "from",
     "to",
     "geo",
     "total",
     "distinctPaths",
     "paths",
     "requests",
     "sources",
     "notes",
     "errors"
    ],
    "additionalProperties": false
   },
   "SecurityRepository": {
    "type": "object",
    "properties": {
     "workspace": {
      "type": [
       "string",
       "null"
      ]
     },
     "remembered": {
      "type": "boolean"
     },
     "workspaces": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/SentryWorkspace"
      }
     }
    },
    "required": [
     "workspace",
     "remembered",
     "workspaces"
    ],
    "additionalProperties": false
   },
   "SecurityRuleRow": {
    "type": "object",
    "properties": {
     "kindLabel": {
      "type": "string"
     },
     "builtin": {
      "type": "boolean",
      "description": "One of the two every project starts with: can be edited and switched off, not deleted."
     },
     "openFindings": {
      "type": "number",
      "description": "Findings of this rule that are open now."
     },
     "id": {
      "type": "string",
      "description": "Empty on a new rule: the service gives it one."
     },
     "name": {
      "type": "string"
     },
     "kind": {
      "type": "string",
      "description": "`shared_link`, `enumeration`, `burst` or `failures`."
     },
     "enabled": {
      "type": "boolean"
     },
     "routes": {
      "type": "array",
      "items": {
       "type": "string"
      },
      "description": "`/products/:id`, or a prefix ending in `*`; empty reads every route."
     },
     "windowMinutes": {
      "type": "number",
      "description": "Minutes, 1–120."
     },
     "severity": {
      "type": "string",
      "description": "`low`, `medium` or `high`: the least severity its findings have."
     },
     "minIps": {
      "type": "number",
      "description": "`shared_link`: distinct IPs, at least 2."
     },
     "minDevices": {
      "type": "number",
      "description": "`shared_link`: distinct devices, at least 2."
     },
     "ids": {
      "type": "number",
      "description": "`enumeration`: distinct ids from one IP, at least 5."
     },
     "requests": {
      "type": "number",
      "description": "`burst` and `failures`: requests from one IP, at least 5."
     },
     "statuses": {
      "type": "array",
      "items": {
       "type": "number"
      },
      "description": "`failures`: the response statuses that count."
     }
    },
    "required": [
     "kindLabel",
     "builtin",
     "openFindings",
     "id",
     "name",
     "kind",
     "enabled",
     "routes",
     "windowMinutes",
     "severity",
     "minIps",
     "minDevices",
     "ids",
     "requests",
     "statuses"
    ],
    "additionalProperties": false
   },
   "SecurityRules": {
    "type": "object",
    "properties": {
     "rules": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/SecurityRuleRow"
      }
     },
     "id": {
      "type": "string",
      "description": "The id the saved rule has."
     }
    },
    "required": [
     "rules",
     "id"
    ],
    "additionalProperties": false
   },
   "SecuritySample": {
    "type": "object",
    "properties": {
     "at": {
      "type": "number",
      "description": "Seconds."
     },
     "host": {
      "type": [
       "string",
       "null"
      ]
     },
     "path": {
      "type": "string",
      "description": "The concrete path, id unmasked."
     },
     "masked": {
      "type": "string",
      "description": "The path with its ids masked: what the drawer shows until the full URL is asked for."
     },
     "method": {
      "type": [
       "string",
       "null"
      ]
     },
     "status": {
      "type": [
       "number",
       "null"
      ]
     },
     "ip": {
      "type": [
       "string",
       "null"
      ]
     },
     "device": {
      "type": [
       "string",
       "null"
      ],
      "description": "The device, or the server or library client when `automated`."
     },
     "automated": {
      "type": "boolean",
      "description": "A server or library client (nginx, Node, curl…, or anything from a cloud or hosting network), not a person's device."
     },
     "server": {
      "type": "boolean",
      "description": "From a cloud or hosting network."
     },
     "userAgent": {
      "type": [
       "string",
       "null"
      ]
     },
     "country": {
      "type": [
       "string",
       "null"
      ]
     },
     "asn": {
      "type": [
       "string",
       "null"
      ]
     },
     "asnName": {
      "type": [
       "string",
       "null"
      ],
      "description": "The network's name as the source gave it (Cloudflare's), for when IP geolocation isn't installed to name it."
     },
     "source": {
      "type": "string"
     },
     "count": {
      "type": "number"
     }
    },
    "required": [
     "at",
     "host",
     "path",
     "masked",
     "method",
     "status",
     "ip",
     "device",
     "automated",
     "server",
     "userAgent",
     "country",
     "asn",
     "asnName",
     "source",
     "count"
    ],
    "additionalProperties": false
   },
   "SecurityScreen": {
    "type": "object",
    "properties": {
     "findings": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/SecurityFindingRow"
      },
      "description": "Open first (most severe first), then resolved (most recent first)."
     },
     "hasData": {
      "type": "boolean",
      "description": "Something to read: Cloudflare is connected, or a check read requests from Logs lately."
     },
     "cloudflare": {
      "type": "boolean"
     },
     "sources": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/SecuritySource"
      }
     },
     "checkedAt": {
      "type": [
       "number",
       "null"
      ],
      "description": "The last check, seconds."
     },
     "running": {
      "type": "boolean"
     },
     "counted": {
      "type": "number",
      "description": "Requests on id URLs the last check counted."
     },
     "skipped": {
      "$ref": "#/components/schemas/SecuritySkipped"
     },
     "settings": {
      "$ref": "#/components/schemas/SecuritySettings"
     },
     "rules": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/SecurityRuleRow"
      }
     },
     "notes": {
      "type": "array",
      "items": {
       "type": "string"
      }
     },
     "errors": {
      "type": "array",
      "items": {
       "type": "string"
      }
     }
    },
    "required": [
     "findings",
     "hasData",
     "cloudflare",
     "sources",
     "checkedAt",
     "running",
     "counted",
     "skipped",
     "settings",
     "rules",
     "notes",
     "errors"
    ],
    "additionalProperties": false
   },
   "SecuritySettings": {
    "type": "object",
    "properties": {
     "enabled": {
      "type": "boolean"
     },
     "excludePrivate": {
      "type": "boolean",
      "description": "Leave out private and internal IP ranges."
     },
     "ignore": {
      "type": "array",
      "items": {
       "type": "string"
      },
      "description": "Routes left out: `/products/:id`, or a prefix ending in `*`."
     }
    },
    "required": [
     "enabled",
     "excludePrivate",
     "ignore"
    ],
    "additionalProperties": false
   },
   "SecuritySkipped": {
    "type": "object",
    "properties": {
     "bots": {
      "type": "number"
     },
     "health": {
      "type": "number"
     },
     "assets": {
      "type": "number"
     },
     "private": {
      "type": "number"
     },
     "ignored": {
      "type": "number"
     },
     "noId": {
      "type": "number"
     },
     "noise": {
      "type": "number",
      "description": "Tracking-link chains and Cloudflare's own paths, never a private link."
     }
    },
    "required": [
     "bots",
     "health",
     "assets",
     "private",
     "ignored",
     "noId",
     "noise"
    ],
    "additionalProperties": false
   },
   "SecuritySource": {
    "type": "object",
    "properties": {
     "id": {
      "type": "string",
      "description": "`logs:<source key>` or `cloudflare:<zone>`."
     },
     "label": {
      "type": "string"
     },
     "seenAt": {
      "type": "number",
      "description": "Seconds: the last check that read requests from it."
     }
    },
    "required": [
     "id",
     "label",
     "seenAt"
    ],
    "additionalProperties": false
   },
   "Selection": {
    "type": "object",
    "properties": {
     "selection": {
      "$ref": "#/components/schemas/Record_string_string"
     },
     "default": {
      "$ref": "#/components/schemas/Record_string_string",
      "description": "The section's default, for a Reset control."
     }
    },
    "required": [
     "selection",
     "default"
    ],
    "additionalProperties": false
   },
   "SentryAssignee": {
    "type": "object",
    "properties": {
     "id": {
      "type": "string",
      "description": "`user:<id>` or `team:<id>`: what `sentry.issues.update` takes."
     },
     "name": {
      "type": "string"
     },
     "detail": {
      "type": [
       "string",
       "null"
      ],
      "description": "An email for a person, `#slug` for a team."
     },
     "team": {
      "type": "boolean"
     }
    },
    "required": [
     "id",
     "name",
     "detail",
     "team"
    ],
    "additionalProperties": false
   },
   "SentryAssignees": {
    "type": "object",
    "properties": {
     "people": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/SentryAssignee"
      }
     },
     "teams": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/SentryAssignee"
      }
     },
     "errors": {
      "type": "array",
      "items": {
       "type": "string"
      }
     }
    },
    "required": [
     "people",
     "teams",
     "errors"
    ],
    "additionalProperties": false
   },
   "SentryBreadcrumb": {
    "type": "object",
    "properties": {
     "at": {
      "type": [
       "string",
       "null"
      ]
     },
     "category": {
      "type": [
       "string",
       "null"
      ]
     },
     "level": {
      "type": [
       "string",
       "null"
      ]
     },
     "message": {
      "type": [
       "string",
       "null"
      ]
     }
    },
    "required": [
     "at",
     "category",
     "level",
     "message"
    ],
    "additionalProperties": false
   },
   "SentryEvent": {
    "type": "object",
    "properties": {
     "id": {
      "type": "string"
     },
     "at": {
      "type": [
       "string",
       "null"
      ]
     },
     "title": {
      "type": [
       "string",
       "null"
      ]
     },
     "message": {
      "type": [
       "string",
       "null"
      ]
     },
     "level": {
      "type": [
       "string",
       "null"
      ]
     },
     "environment": {
      "type": [
       "string",
       "null"
      ]
     },
     "release": {
      "type": [
       "string",
       "null"
      ]
     },
     "request": {
      "type": [
       "string",
       "null"
      ],
      "description": "`POST https://…`, where the event happened in a request."
     },
     "user": {
      "type": [
       "string",
       "null"
      ],
      "description": "The user it happened to: a name, email, username, id or address."
     },
     "issueId": {
      "type": [
       "string",
       "null"
      ],
      "description": "The issue Sentry grouped it into."
     },
     "exceptions": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/SentryException"
      },
      "description": "The raised exception first, then its causes."
     },
     "tags": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/SentryTag"
      }
     },
     "breadcrumbs": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/SentryBreadcrumb"
      },
      "description": "Oldest first: the last twenty on an issue's latest event, the last hundred on an event read for itself."
     }
    },
    "required": [
     "id",
     "at",
     "title",
     "message",
     "level",
     "environment",
     "release",
     "request",
     "user",
     "issueId",
     "exceptions",
     "tags",
     "breadcrumbs"
    ],
    "additionalProperties": false
   },
   "SentryEventRow": {
    "type": "object",
    "properties": {
     "id": {
      "type": "string"
     },
     "at": {
      "type": [
       "string",
       "null"
      ],
      "description": "RFC 3339."
     },
     "title": {
      "type": "string"
     },
     "level": {
      "type": "string"
     },
     "project": {
      "type": "string",
      "description": "The project's slug."
     },
     "environment": {
      "type": [
       "string",
       "null"
      ]
     },
     "release": {
      "type": [
       "string",
       "null"
      ]
     },
     "user": {
      "type": [
       "string",
       "null"
      ]
     },
     "url": {
      "type": [
       "string",
       "null"
      ],
      "description": "The event in Sentry."
     },
     "transaction": {
      "type": [
       "string",
       "null"
      ]
     },
     "culprit": {
      "type": [
       "string",
       "null"
      ]
     },
     "issue": {
      "type": [
       "string",
       "null"
      ],
      "description": "The issue's short id and numeric id."
     },
     "issueId": {
      "type": [
       "string",
       "null"
      ]
     }
    },
    "required": [
     "id",
     "at",
     "title",
     "level",
     "project",
     "environment",
     "release",
     "user",
     "url",
     "transaction",
     "culprit",
     "issue",
     "issueId"
    ],
    "additionalProperties": false
   },
   "SentryEventsScreen": {
    "type": "object",
    "properties": {
     "connected": {
      "type": "boolean",
      "description": "False when the project has not connected Sentry; nothing else is read."
     },
     "events": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/SentryEventRow"
      },
      "description": "Newest first."
     },
     "total": {
      "type": "number",
      "description": "Events that pass the filters in the period."
     },
     "page": {
      "type": "number"
     },
     "size": {
      "type": "number"
     },
     "facets": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/SentryFacet"
      },
      "description": "Project, environment, release and level, each counted with the other sections' choices."
     },
     "projects": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/SentryProject"
      }
     },
     "source": {
      "anyOf": [
       {
        "$ref": "#/components/schemas/SentryLogSource"
       },
       {
        "type": "null"
       }
      ],
      "description": "Absent when the project has no Sentry log source (it was removed)."
     }
    },
    "required": [
     "connected",
     "events",
     "total",
     "page",
     "size",
     "facets",
     "projects",
     "source"
    ],
    "additionalProperties": false
   },
   "SentryException": {
    "type": "object",
    "properties": {
     "kind": {
      "type": "string"
     },
     "value": {
      "type": [
       "string",
       "null"
      ]
     },
     "handled": {
      "type": [
       "boolean",
       "null"
      ]
     },
     "frames": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/SentryFrame"
      },
      "description": "The top of the stack first."
     }
    },
    "required": [
     "kind",
     "value",
     "handled",
     "frames"
    ],
    "additionalProperties": false
   },
   "SentryFacet": {
    "type": "object",
    "properties": {
     "id": {
      "type": "string",
      "description": "`project`, `environment`, `release` or `level`: the argument it filters."
     },
     "label": {
      "type": "string"
     },
     "values": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/SentryFacetValue"
      }
     }
    },
    "required": [
     "id",
     "label",
     "values"
    ],
    "additionalProperties": false
   },
   "SentryFacetValue": {
    "type": "object",
    "properties": {
     "value": {
      "type": "string"
     },
     "label": {
      "type": [
       "string",
       "null"
      ]
     },
     "count": {
      "type": [
       "number",
       "null"
      ],
      "description": "Absent where it cannot be counted (environments of issues)."
     },
     "selected": {
      "type": "boolean"
     }
    },
    "required": [
     "value",
     "label",
     "count",
     "selected"
    ],
    "additionalProperties": false
   },
   "SentryFrame": {
    "type": "object",
    "properties": {
     "function": {
      "type": [
       "string",
       "null"
      ]
     },
     "location": {
      "type": [
       "string",
       "null"
      ],
      "description": "The module, or the file."
     },
     "line": {
      "type": [
       "number",
       "null"
      ]
     },
     "column": {
      "type": [
       "number",
       "null"
      ]
     },
     "inApp": {
      "type": "boolean"
     },
     "code": {
      "type": [
       "string",
       "null"
      ]
     }
    },
    "required": [
     "function",
     "location",
     "line",
     "column",
     "inApp",
     "code"
    ],
    "additionalProperties": false
   },
   "SentryIssue": {
    "type": "object",
    "properties": {
     "id": {
      "type": "string"
     },
     "shortId": {
      "type": "string"
     },
     "title": {
      "type": "string"
     },
     "culprit": {
      "type": "string"
     },
     "level": {
      "type": "string"
     },
     "project": {
      "type": "string",
      "description": "The project's slug."
     },
     "count": {
      "type": "number",
      "description": "Events in the period."
     },
     "userCount": {
      "type": "number",
      "description": "Users affected in the period (over 14 days for `7d`)."
     },
     "firstSeen": {
      "type": [
       "string",
       "null"
      ],
      "description": "RFC 3339."
     },
     "lastSeen": {
      "type": [
       "string",
       "null"
      ]
     },
     "trend": {
      "type": "array",
      "items": {
       "type": "number"
      },
      "description": "Events per bucket, oldest first: hourly for `24h`, daily otherwise."
     },
     "permalink": {
      "type": [
       "string",
       "null"
      ]
     },
     "jira": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/SentryJiraLink"
      }
     },
     "status": {
      "type": [
       "string",
       "null"
      ],
      "description": "`unresolved`, `resolved` or `ignored`."
     },
     "assignee": {
      "type": [
       "string",
       "null"
      ],
      "description": "A person's or a team's name."
     },
     "bookmarked": {
      "type": "boolean"
     }
    },
    "required": [
     "id",
     "shortId",
     "title",
     "culprit",
     "level",
     "project",
     "count",
     "userCount",
     "firstSeen",
     "lastSeen",
     "trend",
     "permalink",
     "jira",
     "status",
     "assignee",
     "bookmarked"
    ],
    "additionalProperties": false
   },
   "SentryIssueDetail": {
    "type": "object",
    "properties": {
     "issue": {
      "$ref": "#/components/schemas/SentryIssue"
     },
     "status": {
      "type": [
       "string",
       "null"
      ]
     },
     "substatus": {
      "type": [
       "string",
       "null"
      ]
     },
     "platform": {
      "type": [
       "string",
       "null"
      ]
     },
     "kind": {
      "type": [
       "string",
       "null"
      ],
      "description": "The exception class Sentry grouped on, and its message."
     },
     "message": {
      "type": [
       "string",
       "null"
      ]
     },
     "assignee": {
      "type": [
       "string",
       "null"
      ]
     },
     "firstRelease": {
      "type": [
       "string",
       "null"
      ]
     },
     "lastRelease": {
      "type": [
       "string",
       "null"
      ]
     },
     "event": {
      "anyOf": [
       {
        "$ref": "#/components/schemas/SentryEvent"
       },
       {
        "type": "null"
       }
      ],
      "description": "The latest event, absent when Sentry kept none."
     },
     "errors": {
      "type": "array",
      "items": {
       "type": "string"
      }
     }
    },
    "required": [
     "issue",
     "status",
     "substatus",
     "platform",
     "kind",
     "message",
     "assignee",
     "firstRelease",
     "lastRelease",
     "event",
     "errors"
    ],
    "additionalProperties": false
   },
   "SentryJiraIssueType": {
    "type": "object",
    "properties": {
     "id": {
      "type": "string"
     },
     "name": {
      "type": "string"
     }
    },
    "required": [
     "id",
     "name"
    ],
    "additionalProperties": false
   },
   "SentryJiraLink": {
    "type": "object",
    "properties": {
     "key": {
      "type": "string"
     },
     "url": {
      "type": [
       "string",
       "null"
      ],
      "description": "Sentry's link, or the connected Jira site's."
     },
     "known": {
      "type": "boolean",
      "description": "This project has the issue, so the task drawer can open it."
     }
    },
    "required": [
     "key",
     "url",
     "known"
    ],
    "additionalProperties": false
   },
   "SentryJiraLinked": {
    "type": "object",
    "properties": {
     "key": {
      "type": "string"
     },
     "url": {
      "type": [
       "string",
       "null"
      ]
     },
     "linkedInSentry": {
      "type": "boolean",
      "description": "Linked in Sentry too, through Sentry's Jira integration."
     },
     "note": {
      "type": [
       "string",
       "null"
      ],
      "description": "Why it was not linked in Sentry, when it was not."
     }
    },
    "required": [
     "key",
     "url",
     "linkedInSentry",
     "note"
    ],
    "additionalProperties": false
   },
   "SentryJiraOptions": {
    "type": "object",
    "properties": {
     "connected": {
      "type": "boolean",
      "description": "False when the project has not connected Jira."
     },
     "projects": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/SentryJiraProject"
      },
      "description": "Tracked projects first, then the rest the connection may create in."
     },
     "project": {
      "type": [
       "string",
       "null"
      ],
      "description": "The project the issue types belong to."
     },
     "issueTypes": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/SentryJiraIssueType"
      }
     }
    },
    "required": [
     "connected",
     "projects",
     "project",
     "issueTypes"
    ],
    "additionalProperties": false
   },
   "SentryJiraProject": {
    "type": "object",
    "properties": {
     "key": {
      "type": "string"
     },
     "name": {
      "type": "string"
     },
     "tracked": {
      "type": "boolean",
      "description": "One of the projects this DevDash project tracks."
     }
    },
    "required": [
     "key",
     "name",
     "tracked"
    ],
    "additionalProperties": false
   },
   "SentryLogSource": {
    "type": "object",
    "properties": {
     "key": {
      "type": "string"
     },
     "name": {
      "type": "string"
     },
     "enabled": {
      "type": "boolean"
     },
     "automatic": {
      "type": "boolean",
      "description": "DevDash made it when Sentry was connected."
     }
    },
    "required": [
     "key",
     "name",
     "enabled",
     "automatic"
    ],
    "additionalProperties": false
   },
   "SentryProject": {
    "type": "object",
    "properties": {
     "slug": {
      "type": "string"
     },
     "name": {
      "type": "string"
     },
     "platform": {
      "type": [
       "string",
       "null"
      ],
      "description": "Sentry's platform id (`javascript-nextjs`, `python-django`), for its icon."
     }
    },
    "required": [
     "slug",
     "name",
     "platform"
    ],
    "additionalProperties": false
   },
   "SentryRepository": {
    "type": "object",
    "properties": {
     "workspace": {
      "type": [
       "string",
       "null"
      ],
      "description": "The workspace to investigate in: remembered, or matched by name. Absent when neither settles it and the person has to choose."
     },
     "remembered": {
      "type": "boolean",
      "description": "The choice was made before and remembered."
     },
     "workspaces": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/SentryWorkspace"
      },
      "description": "Every workspace that can be chosen."
     }
    },
    "required": [
     "workspace",
     "remembered",
     "workspaces"
    ],
    "additionalProperties": false
   },
   "SentryScreen": {
    "type": "object",
    "properties": {
     "connected": {
      "type": "boolean",
      "description": "False when the project has not connected Sentry; nothing else is read."
     },
     "org": {
      "type": [
       "string",
       "null"
      ],
      "description": "The organization slug."
     },
     "issues": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/SentryIssue"
      },
      "description": "The issues that pass the filters, in the chosen order."
     },
     "facets": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/SentryFacet"
      }
     },
     "total": {
      "type": "number",
      "description": "Unresolved issues seen in the period, before the filters."
     },
     "projects": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/SentryProject"
      },
      "description": "The organisation's projects, by name."
     },
     "sync": {
      "$ref": "#/components/schemas/SentrySync"
     }
    },
    "required": [
     "connected",
     "org",
     "issues",
     "facets",
     "total",
     "projects",
     "sync"
    ],
    "additionalProperties": false
   },
   "SentrySync": {
    "type": "object",
    "properties": {
     "syncedAt": {
      "type": [
       "string",
       "null"
      ],
      "description": "The last cycle, successful or not. Absent before the first."
     },
     "error": {
      "type": [
       "string",
       "null"
      ],
      "description": "Why the last cycle failed; the rows are from the one before."
     },
     "running": {
      "type": "boolean",
      "description": "A cycle is running now."
     }
    },
    "required": [
     "syncedAt",
     "error",
     "running"
    ],
    "additionalProperties": false
   },
   "SentrySyncStarted": {
    "type": "object",
    "properties": {
     "started": {
      "type": "boolean",
      "description": "False when a cycle was already running; it announces when done too."
     }
    },
    "required": [
     "started"
    ],
    "additionalProperties": false
   },
   "SentryTag": {
    "type": "object",
    "properties": {
     "key": {
      "type": "string"
     },
     "value": {
      "type": "string"
     }
    },
    "required": [
     "key",
     "value"
    ],
    "additionalProperties": false
   },
   "SentryUpdated": {
    "type": "object",
    "properties": {
     "updated": {
      "type": "number"
     }
    },
    "required": [
     "updated"
    ],
    "additionalProperties": false
   },
   "SentryWorkspace": {
    "type": "object",
    "properties": {
     "id": {
      "type": "string"
     },
     "name": {
      "type": "string"
     }
    },
    "required": [
     "id",
     "name"
    ],
    "additionalProperties": false
   },
   "ServiceConfig": {
    "type": "object",
    "properties": {
     "origins": {
      "anyOf": [
       {
        "type": "array",
        "items": {
         "type": "string"
        }
       },
       {
        "type": "null"
       }
      ],
      "description": "Replaces the allowed origins. Applied on restart."
     },
     "startAtLogin": {
      "type": [
       "boolean",
       "null"
      ],
      "description": "Installs or removes the LaunchAgent now."
     },
     "port": {
      "type": [
       "number",
       "null"
      ],
      "description": "Applied on restart."
     }
    },
    "required": [
     "origins",
     "startAtLogin",
     "port"
    ],
    "additionalProperties": false
   },
   "ServicesScreen": {
    "type": "object",
    "properties": {
     "fleet": {
      "$ref": "#/components/schemas/Fleet"
     },
     "tracked": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/TrackedEntity"
      },
      "description": "The applications chosen for tracking, read from the stored config — no call to New Relic, so the screen costs one local query."
     },
     "credential": {
      "type": "boolean",
      "description": "Whether a New Relic credential is in the keychain for this project."
     }
    },
    "required": [
     "fleet",
     "tracked",
     "credential"
    ],
    "additionalProperties": false
   },
   "ServiceStatus": {
    "type": "object",
    "properties": {
     "version": {
      "type": "string"
     },
     "uptimeSeconds": {
      "type": "number"
     },
     "port": {
      "type": "number"
     },
     "dataDir": {
      "type": "string"
     },
     "logPath": {
      "type": [
       "string",
       "null"
      ]
     },
     "site": {
      "type": "string"
     },
     "downloads": {
      "type": "string"
     },
     "origins": {
      "type": "array",
      "items": {
       "type": "string"
      }
     },
     "startAtLogin": {
      "type": "boolean"
     },
     "underLaunchd": {
      "type": "boolean",
      "description": "Whether launchd started this process (so a restart goes through it)."
     },
     "engines": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/EngineState"
      }
     },
     "update": {
      "$ref": "#/components/schemas/UpdateCheck"
     }
    },
    "required": [
     "version",
     "uptimeSeconds",
     "port",
     "dataDir",
     "logPath",
     "site",
     "downloads",
     "origins",
     "startAtLogin",
     "underLaunchd",
     "engines",
     "update"
    ],
    "additionalProperties": false
   },
   "SessionArgs": {
    "type": "object",
    "properties": {
     "id": {
      "type": "string"
     },
     "page": {
      "type": "number"
     },
     "perPage": {
      "type": "number"
     }
    },
    "required": [
     "id"
    ],
    "additionalProperties": false
   },
   "SessionsArgs": {
    "type": "object",
    "properties": {
     "systems": {
      "type": "array",
      "items": {
       "type": "string"
      },
      "description": "Sessions of any of these systems; absent for all."
     },
     "projects": {
      "type": "array",
      "items": {
       "type": "string"
      },
      "description": "Any of these projects."
     },
     "models": {
      "type": "array",
      "items": {
       "type": "string"
      },
      "description": "Any of these models."
     },
     "from": {
      "type": "string",
      "description": "`YYYY-MM-DD`, inclusive."
     },
     "to": {
      "type": "string"
     },
     "query": {
      "type": "string"
     },
     "page": {
      "type": "number"
     },
     "perPage": {
      "type": "number"
     }
    },
    "additionalProperties": false
   },
   "SetupFile": {
    "type": "object",
    "properties": {
     "label": {
      "type": "string"
     },
     "createdAt": {
      "type": [
       "string",
       "null"
      ]
     },
     "bytes": {
      "type": "number"
     }
    },
    "required": [
     "label",
     "createdAt",
     "bytes"
    ],
    "additionalProperties": false
   },
   "SetupRestored": {
    "type": "object",
    "properties": {
     "connected": {
      "type": "number",
      "description": "How many providers were connected from the file."
     },
     "needsCredential": {
      "type": "array",
      "items": {
       "type": "string"
      },
      "description": "Providers whose settings were restored without a credential: each waits to be connected again."
     },
     "refused": {
      "type": "array",
      "items": {
       "type": "string"
      },
      "description": "Providers the file names that this project refused, in sentences."
     }
    },
    "required": [
     "connected",
     "needsCredential",
     "refused"
    ],
    "additionalProperties": false
   },
   "SetupStep": {
    "type": "object",
    "properties": {
     "id": {
      "type": "string"
     },
     "label": {
      "type": "string"
     },
     "done": {
      "type": "boolean"
     }
    },
    "required": [
     "id",
     "label",
     "done"
    ],
    "additionalProperties": false
   },
   "ShellCounts": {
    "type": "object",
    "properties": {
     "inboxUnread": {
      "type": [
       "number",
       "null"
      ]
     },
     "myTasks": {
      "type": [
       "number",
       "null"
      ]
     },
     "notificationsUnread": {
      "type": [
       "number",
       "null"
      ]
     },
     "approvalsWaiting": {
      "type": [
       "number",
       "null"
      ]
     }
    },
    "required": [
     "inboxUnread",
     "myTasks",
     "notificationsUnread",
     "approvalsWaiting"
    ],
    "additionalProperties": false
   },
   "ShellIntegrations": {
    "type": "object",
    "properties": {
     "newRelic": {
      "type": "boolean"
     },
     "sentry": {
      "type": "boolean"
     },
     "cloudflare": {
      "type": "boolean"
     },
     "security": {
      "type": "boolean",
      "description": "Monitoring → Security has something to read: Cloudflare, or Logs request lines lately."
     },
     "kubernetes": {
      "type": "boolean"
     },
     "kubernetesDetected": {
      "type": "boolean",
      "description": "This Mac has a kubeconfig with a context, connected or not: the sidebar offers Kubernetes, leading to its connect page until it is connected."
     }
    },
    "required": [
     "newRelic",
     "sentry",
     "cloudflare",
     "security",
     "kubernetes"
    ],
    "additionalProperties": false
   },
   "ShellProject": {
    "type": "object",
    "properties": {
     "id": {
      "type": "string"
     },
     "slug": {
      "type": "string"
     },
     "name": {
      "type": "string"
     },
     "icon": {
      "type": [
       "string",
       "null"
      ]
     },
     "color": {
      "type": [
       "string",
       "null"
      ]
     }
    },
    "required": [
     "id",
     "slug",
     "name",
     "icon",
     "color"
    ],
    "additionalProperties": false
   },
   "ShellRepository": {
    "type": "object",
    "properties": {
     "id": {
      "type": "string"
     },
     "name": {
      "type": "string"
     }
    },
    "required": [
     "id",
     "name"
    ],
    "additionalProperties": false
   },
   "ShellScreen": {
    "type": "object",
    "properties": {
     "project": {
      "$ref": "#/components/schemas/ShellProject",
      "description": "The project this shell is drawn for."
     },
     "projects": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/ShellProject"
      }
     },
     "repositories": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/ShellRepository"
      }
     },
     "counts": {
      "$ref": "#/components/schemas/ShellCounts"
     },
     "user": {
      "$ref": "#/components/schemas/ShellUser"
     },
     "host": {
      "type": [
       "string",
       "null"
      ],
      "description": "This Mac's name (`Alexei's MacBook Pro`), when macOS reports one."
     },
     "integrations": {
      "$ref": "#/components/schemas/ShellIntegrations"
     },
     "errors": {
      "type": "array",
      "items": {
       "type": "string"
      }
     }
    },
    "required": [
     "project",
     "projects",
     "repositories",
     "counts",
     "user",
     "host",
     "integrations",
     "errors"
    ],
    "additionalProperties": false
   },
   "ShellUser": {
    "type": "object",
    "properties": {
     "name": {
      "type": "string"
     },
     "initials": {
      "type": "string",
      "description": "One or two letters for the avatar."
     },
     "source": {
      "type": "string",
      "description": "Where the name came from: `tracker`, `macos` or `login`."
     }
    },
    "required": [
     "name",
     "initials",
     "source"
    ],
    "additionalProperties": false
   },
   "ShortText": {
    "type": "object",
    "properties": {
     "short": {
      "type": "string"
     },
     "full": {
      "type": "string"
     }
    },
    "required": [
     "short",
     "full"
    ],
    "additionalProperties": false
   },
   "Signal": {
    "type": "object",
    "properties": {
     "id": {
      "type": "string"
     },
     "title": {
      "type": "string"
     },
     "summary": {
      "type": "string",
      "description": "What it is and what happens if nobody acts, in the detector's words."
     },
     "whyYou": {
      "type": [
       "string",
       "null"
      ],
      "description": "Why it landed in *your* queue."
     },
     "tone": {
      "type": "string",
      "description": "`high`, `medium`, `low`."
     },
     "kind": {
      "type": "string",
      "description": "Which detector raised it — `blocker`, `stale`, `leak`…"
     },
     "severity": {
      "type": "string"
     },
     "waiting": {
      "type": "string",
      "description": "How long it has been waiting, already in words."
     },
     "unread": {
      "type": "boolean"
     },
     "taskId": {
      "type": [
       "string",
       "null"
      ],
      "description": "The task it is about, where it is about one."
     }
    },
    "required": [
     "id",
     "title",
     "summary",
     "whyYou",
     "tone",
     "kind",
     "severity",
     "waiting",
     "unread",
     "taskId"
    ],
    "additionalProperties": false
   },
   "SkillArgs": {
    "type": "object",
    "properties": {
     "path": {
      "type": "string",
      "description": "The skill's `SKILL.md`, as `ai.skills` lists it."
     }
    },
    "required": [
     "path"
    ],
    "additionalProperties": false
   },
   "SkillInstall": {
    "type": "object",
    "properties": {
     "name": {
      "type": "string",
      "description": "A built-in skill's name."
     },
     "system": {
      "type": "string",
      "description": "The Claude Code profile (a system id) that gets it."
     }
    },
    "required": [
     "name",
     "system"
    ],
    "additionalProperties": false
   },
   "SkillSave": {
    "type": "object",
    "properties": {
     "system": {
      "type": "string",
      "description": "The Claude Code profile (a system id) a new skill goes in."
     },
     "name": {
      "type": "string"
     },
     "description": {
      "type": "string"
     },
     "body": {
      "type": "string"
     },
     "path": {
      "type": "string",
      "description": "Present to change an existing skill; absent to make a new one."
     }
    },
    "required": [
     "system",
     "name",
     "description",
     "body"
    ],
    "additionalProperties": false
   },
   "SkillSaved": {
    "type": "object",
    "properties": {
     "path": {
      "type": "string"
     }
    },
    "required": [
     "path"
    ],
    "additionalProperties": false
   },
   "SpecSource": {
    "type": "object",
    "properties": {
     "root": {
      "type": "string"
     },
     "file": {
      "type": "string"
     },
     "path": {
      "type": "string"
     },
     "source": {
      "type": "string"
     }
    },
    "required": [
     "root",
     "file",
     "path",
     "source"
    ],
    "additionalProperties": false
   },
   "Started": {
    "type": "object",
    "properties": {
     "id": {
      "type": "string",
      "description": "The new task's id."
     }
    },
    "required": [
     "id"
    ],
    "additionalProperties": false
   },
   "StatsArgs": {
    "type": "object",
    "properties": {
     "system": {
      "type": "string",
      "description": "Absent for every system together."
     },
     "range": {
      "type": "number",
      "description": "Days: 7, 30 or 90."
     },
     "projects": {
      "type": "array",
      "items": {
       "type": "string"
      },
      "description": "Narrow to these projects (`(unknown)` for sessions without one)."
     },
     "models": {
      "type": "array",
      "items": {
       "type": "string"
      },
      "description": "Narrow to these models."
     },
     "tools": {
      "type": "array",
      "items": {
       "type": "string"
      },
      "description": "Narrow to the sessions that called any of these tools."
     }
    },
    "additionalProperties": false
   },
   "StatusArgs": {
    "type": "object",
    "properties": {
     "offline": {
      "type": "boolean",
      "description": "Skip the network check for a newer release."
     }
    },
    "required": [
     "offline"
    ],
    "additionalProperties": false
   },
   "StepProgress": {
    "type": "object",
    "properties": {
     "label": {
      "type": "string"
     },
     "state": {
      "type": "string"
     }
    },
    "required": [
     "label",
     "state"
    ],
    "additionalProperties": false
   },
   "StoredBrief": {
    "type": "object",
    "properties": {
     "turn": {
      "$ref": "#/components/schemas/AiTurn"
     },
     "fingerprint": {
      "type": "string",
      "description": "What the ticket looked like when this was written."
     },
     "model": {
      "type": [
       "string",
       "null"
      ],
      "description": "`backend/model` that answered."
     },
     "readAt": {
      "type": "string",
      "description": "RFC 3339."
     },
     "current": {
      "type": [
       "boolean",
       "null"
      ],
      "description": "Whether it still describes the ticket; `null` when no fingerprint was given."
     }
    },
    "required": [
     "turn",
     "fingerprint",
     "model",
     "readAt",
     "current"
    ],
    "additionalProperties": false
   },
   "Subject": {
    "type": "object",
    "properties": {
     "id": {
      "type": "string"
     },
     "name": {
      "type": "string"
     },
     "tone": {
      "type": "string",
      "description": "The worst thing about it right now, so a list can lead with it."
     },
     "measures": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/Measure"
      }
     }
    },
    "required": [
     "id",
     "name",
     "tone",
     "measures"
    ],
    "additionalProperties": false
   },
   "Subtasks": {
    "type": "object",
    "properties": {
     "done": {
      "type": "number"
     },
     "total": {
      "type": "number"
     }
    },
    "required": [
     "done",
     "total"
    ],
    "additionalProperties": false
   },
   "SuggestionReason": {
    "type": "object",
    "properties": {
     "source": {
      "type": "string",
      "description": "`Sentry`, `New Relic`, `Cloudflare`, `Bitbucket`, `Logs`, `Database`, `Log alerts`."
     },
     "value": {
      "type": "string"
     },
     "why": {
      "type": "string"
     }
    },
    "required": [
     "source",
     "value",
     "why"
    ],
    "additionalProperties": false
   },
   "SummaryFigure": {
    "type": "object",
    "properties": {
     "label": {
      "type": "string"
     },
     "value": {
      "type": "string"
     }
    },
    "required": [
     "label",
     "value"
    ],
    "additionalProperties": false
   },
   "SystemArgs": {
    "type": "object",
    "properties": {
     "id": {
      "type": "string"
     }
    },
    "required": [
     "id"
    ],
    "additionalProperties": false
   },
   "TaskChanges": {
    "type": "object",
    "properties": {
     "files": {
      "type": "array",
      "items": {
       "type": "string"
      },
      "description": "Every path the branch touched. No per-file counts: git gives totals for the branch, and a count per row would have to be invented."
     },
     "commits": {
      "type": "number"
     },
     "insertions": {
      "type": "number",
      "description": "Branch totals."
     },
     "deletions": {
      "type": "number"
     },
     "unpushed": {
      "type": [
       "number",
       "null"
      ],
      "description": "Commits not on the upstream; `null` where the branch has never been pushed, which is not the same as level with it."
     },
     "hasRemote": {
      "type": "boolean"
     },
     "branch": {
      "type": [
       "string",
       "null"
      ],
      "description": "The branch this work is on, and what it is measured against. The totals mean nothing without them."
     },
     "base": {
      "type": [
       "string",
       "null"
      ]
     },
     "added": {
      "type": "number",
      "description": "The diff of `file`, or of the whole change."
     },
     "removed": {
      "type": "number"
     },
     "binary": {
      "type": "boolean"
     },
     "truncated": {
      "type": "boolean",
      "description": "The diff stopped early; the site says so rather than implying the rest is unchanged."
     },
     "hunks": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/DiffHunk"
      }
     }
    },
    "required": [
     "files",
     "commits",
     "insertions",
     "deletions",
     "unpushed",
     "hasRemote",
     "branch",
     "base",
     "added",
     "removed",
     "binary",
     "truncated",
     "hunks"
    ],
    "additionalProperties": false
   },
   "TaskChoice": {
    "type": "object",
    "properties": {
     "id": {
      "type": "string"
     },
     "workspaceId": {
      "type": "string"
     },
     "key": {
      "type": "string"
     },
     "label": {
      "type": "string"
     }
    },
    "required": [
     "id",
     "workspaceId",
     "key",
     "label"
    ],
    "additionalProperties": false
   },
   "TaskOutcome": {
    "type": "object",
    "properties": {
     "taskId": {
      "type": "string"
     },
     "key": {
      "type": [
       "string",
       "null"
      ]
     },
     "title": {
      "type": "string"
     },
     "runs": {
      "type": "number"
     },
     "costUsd": {
      "type": "number"
     },
     "pullState": {
      "type": [
       "string",
       "null"
      ],
      "description": "`MERGED`, `DECLINED` or `OPEN`, when it has a PR."
     },
     "pullUrl": {
      "type": [
       "string",
       "null"
      ]
     }
    },
    "required": [
     "taskId",
     "key",
     "title",
     "runs",
     "costUsd",
     "pullState",
     "pullUrl"
    ],
    "additionalProperties": false
   },
   "TaskParentChoice": {
    "type": "object",
    "properties": {
     "id": {
      "type": "string"
     },
     "title": {
      "type": "string"
     },
     "status": {
      "type": "string"
     }
    },
    "required": [
     "id",
     "title",
     "status"
    ],
    "additionalProperties": false
   },
   "TasksConfig": {
    "type": "object",
    "properties": {
     "branchTemplate": {
      "type": [
       "string",
       "null"
      ],
      "description": "`null` when nobody has chosen; `defaultBranchTemplate` applies."
     },
     "statusThresholds": {
      "$ref": "#/components/schemas/Record_string_number",
      "description": "Days an issue may stay in a status before it is flagged as stale, by status name."
     },
     "defaultBranchTemplate": {
      "type": "string"
     },
     "jira": {
      "$ref": "#/components/schemas/JiraTasksConfig"
     },
     "bitbucket": {
      "$ref": "#/components/schemas/BitbucketTasksConfig"
     },
     "github": {
      "$ref": "#/components/schemas/BitbucketTasksConfig",
      "description": "GitHub's, in the same shape."
     }
    },
    "required": [
     "branchTemplate",
     "statusThresholds",
     "defaultBranchTemplate",
     "jira",
     "bitbucket",
     "github"
    ],
    "additionalProperties": false
   },
   "TaskScreen": {
    "type": "object",
    "properties": {
     "task": {
      "anyOf": [
       {
        "$ref": "#/components/schemas/JsonValue"
       },
       {
        "type": "null"
       }
      ],
      "description": "Core's task context with `workspaceId` and the latest `run` snapshot."
     },
     "delivery": {
      "anyOf": [
       {
        "$ref": "#/components/schemas/Delivery"
       },
       {
        "type": "null"
       }
      ]
     },
     "changes": {
      "anyOf": [
       {
        "$ref": "#/components/schemas/TaskScreenChanges"
       },
       {
        "type": "null"
       }
      ]
     },
     "proposals": {
      "anyOf": [
       {
        "type": "array",
        "items": {
         "$ref": "#/components/schemas/TaskScreenProposal"
        }
       },
       {
        "type": "null"
       }
      ]
     },
     "planWatch": {
      "anyOf": [
       {
        "$ref": "#/components/schemas/TaskScreenPlanWatch"
       },
       {
        "type": "null"
       }
      ]
     },
     "terminals": {
      "anyOf": [
       {
        "type": "array",
        "items": {
         "$ref": "#/components/schemas/TerminalSession"
        }
       },
       {
        "type": "null"
       }
      ]
     },
     "issue": {
      "anyOf": [
       {
        "$ref": "#/components/schemas/IssueDetail"
       },
       {
        "type": "null"
       }
      ],
      "description": "The tracker's issue, when the task has a key and it is synced."
     },
     "errors": {
      "type": "array",
      "items": {
       "type": "string"
      }
     }
    },
    "required": [
     "task",
     "delivery",
     "changes",
     "proposals",
     "planWatch",
     "terminals",
     "issue",
     "errors"
    ],
    "additionalProperties": false
   },
   "TaskScreenChanges": {
    "type": "object",
    "properties": {
     "files": {
      "type": "array",
      "items": {
       "type": "string"
      }
     },
     "commits": {
      "type": "number"
     },
     "insertions": {
      "type": "number"
     },
     "deletions": {
      "type": "number"
     },
     "unpushed": {
      "type": [
       "number",
       "null"
      ],
      "description": "`null` where the branch has never been pushed."
     },
     "hasRemote": {
      "type": "boolean"
     },
     "branch": {
      "type": [
       "string",
       "null"
      ]
     },
     "base": {
      "type": [
       "string",
       "null"
      ]
     }
    },
    "required": [
     "files",
     "commits",
     "insertions",
     "deletions",
     "unpushed",
     "hasRemote",
     "branch",
     "base"
    ],
    "additionalProperties": false
   },
   "TaskScreenPlanWatch": {
    "type": "object",
    "properties": {
     "enabled": {
      "type": "boolean"
     },
     "checked": {
      "type": [
       "number",
       "null"
      ],
      "description": "When the ticket was last compared, in Unix seconds."
     },
     "error": {
      "type": [
       "string",
       "null"
      ]
     }
    },
    "required": [
     "enabled",
     "checked",
     "error"
    ],
    "additionalProperties": false
   },
   "TaskScreenProposal": {
    "type": "object",
    "properties": {
     "id": {
      "type": "string",
      "description": "The plan-review run."
     },
     "version": {
      "type": "number"
     },
     "state": {
      "type": "string"
     },
     "text": {
      "type": "string"
     },
     "summary": {
      "type": "string"
     },
     "execution": {
      "type": [
       "string",
       "null"
      ],
      "description": "The run executing this plan, once accepted."
     },
     "target": {
      "type": "string"
     },
     "ready": {
      "type": "boolean"
     },
     "informational": {
      "type": "boolean"
     }
    },
    "required": [
     "id",
     "version",
     "state",
     "text",
     "summary",
     "execution",
     "target",
     "ready",
     "informational"
    ],
    "additionalProperties": false
   },
   "TaskTestHistory": {
    "type": "object",
    "properties": {
     "runId": {
      "type": "string"
     },
     "at": {
      "type": "string"
     },
     "result": {
      "$ref": "#/components/schemas/TestResultRow"
     }
    },
    "required": [
     "runId",
     "at",
     "result"
    ],
    "additionalProperties": false
   },
   "TaskTests": {
    "type": "object",
    "properties": {
     "key": {
      "type": [
       "string",
       "null"
      ]
     },
     "specs": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/TestSpecRow"
      },
      "description": "Specs tagged `@task:KEY`."
     },
     "byEnv": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/TestEnvStatus"
      },
      "description": "Newest result per environment for any of them."
     },
     "latestFailure": {
      "anyOf": [
       {
        "$ref": "#/components/schemas/TaskTestHistory"
       },
       {
        "type": "null"
       }
      ]
     },
     "history": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/TaskTestHistory"
      }
     },
     "envs": {
      "type": "array",
      "items": {
       "type": "string"
      }
     },
     "ready": {
      "type": "boolean"
     }
    },
    "required": [
     "key",
     "specs",
     "byEnv",
     "latestFailure",
     "history",
     "envs",
     "ready"
    ],
    "additionalProperties": false
   },
   "TelemetryPoint": {
    "type": "object",
    "properties": {
     "at": {
      "type": "string",
      "description": "RFC 3339."
     },
     "value": {
      "type": "number"
     }
    },
    "required": [
     "at",
     "value"
    ],
    "additionalProperties": false
   },
   "TemplateExport": {
    "type": "object",
    "properties": {
     "file": {
      "type": "string",
      "description": "The encrypted template, as the file's contents. Opaque without `key`."
     },
     "fileName": {
      "type": "string",
      "description": "A file name to offer when saving it."
     },
     "key": {
      "type": "string",
      "description": "The key that opens it: URL-safe base64, 256 bits. Share it separately."
     }
    },
    "required": [
     "file",
     "fileName",
     "key"
    ],
    "additionalProperties": false
   },
   "TemplateIdentity": {
    "type": "object",
    "properties": {
     "name": {
      "type": "string"
     },
     "icon": {
      "type": [
       "string",
       "null"
      ]
     },
     "color": {
      "type": [
       "string",
       "null"
      ]
     }
    },
    "required": [
     "name",
     "icon",
     "color"
    ],
    "additionalProperties": false
   },
   "TemplateImport": {
    "type": "object",
    "properties": {
     "envelope": {
      "type": "string"
     },
     "key": {
      "type": "string"
     },
     "name": {
      "type": "string",
      "description": "Absent takes the template's project name."
     },
     "slug": {
      "type": "string",
      "description": "Absent derives one from the name."
     }
    },
    "required": [
     "envelope",
     "key"
    ],
    "additionalProperties": false
   },
   "TemplateImported": {
    "type": "object",
    "properties": {
     "id": {
      "type": "string"
     },
     "slug": {
      "type": "string"
     },
     "report": {
      "$ref": "#/components/schemas/ImportReport"
     }
    },
    "required": [
     "id",
     "slug",
     "report"
    ],
    "additionalProperties": false
   },
   "TemplateLink": {
    "type": "object",
    "properties": {
     "url": {
      "type": "string",
      "description": "`https://devdash.pro/t/<id>#k=<key>`; the key never reaches the server."
     }
    },
    "required": [
     "url"
    ],
    "additionalProperties": false
   },
   "TemplateOpen": {
    "type": "object",
    "properties": {
     "envelope": {
      "type": "string",
      "description": "The file's contents."
     },
     "key": {
      "type": "string"
     }
    },
    "required": [
     "envelope",
     "key"
    ],
    "additionalProperties": false
   },
   "TemplatePreview": {
    "type": "object",
    "properties": {
     "project": {
      "$ref": "#/components/schemas/TemplateIdentity"
     },
     "integrations": {
      "type": "array",
      "items": {
       "type": "string"
      },
      "description": "Provider ids the template configures."
     },
     "workflows": {
      "type": "array",
      "items": {
       "type": "string"
      }
     },
     "agents": {
      "type": "array",
      "items": {
       "type": "string"
      }
     },
     "automations": {
      "type": "array",
      "items": {
       "type": "string"
      }
     },
     "expectations": {
      "type": "number"
     },
     "repositories": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/TemplateRepository"
      }
     },
     "jiraProjects": {
      "type": "array",
      "items": {
       "type": "string"
      },
      "description": "Jira project keys the template syncs, when it narrows Jira."
     }
    },
    "required": [
     "project",
     "integrations",
     "workflows",
     "agents",
     "automations",
     "expectations",
     "repositories",
     "jiraProjects"
    ],
    "additionalProperties": false
   },
   "TemplateRepository": {
    "type": "object",
    "properties": {
     "key": {
      "type": "string",
      "description": "How the template refers to it; what `template.repositories.apply` maps."
     },
     "name": {
      "type": "string"
     },
     "remoteUrl": {
      "type": [
       "string",
       "null"
      ]
     },
     "defaultBranch": {
      "type": [
       "string",
       "null"
      ]
     }
    },
    "required": [
     "key",
     "name",
     "remoteUrl",
     "defaultBranch"
    ],
    "additionalProperties": false
   },
   "TerminalAttention": {
    "type": "object",
    "properties": {
     "state": {
      "type": "string",
      "description": "`waiting`, `notWaiting` or `unknown`."
     },
     "waitingFor": {
      "type": [
       "string",
       "null"
      ],
      "description": "The CLI's own word for what it is asking, when it said."
     }
    },
    "required": [
     "state",
     "waitingFor"
    ],
    "additionalProperties": false
   },
   "TerminalGroup": {
    "type": "object",
    "properties": {
     "id": {
      "type": "string"
     },
     "name": {
      "type": "string"
     },
     "cwd": {
      "type": [
       "string",
       "null"
      ],
      "description": "Where its terminals open. `None` is the home directory."
     },
     "open": {
      "type": "number",
      "description": "Sessions recorded against it that have not ended."
     },
     "layout": {
      "type": [
       "string",
       "null"
      ],
      "description": "The pane tree the site saved, opaque here."
     },
     "restorable": {
      "type": "number",
      "description": "How many terminals from before the last restart can be put back."
     }
    },
    "required": [
     "id",
     "name",
     "cwd",
     "open",
     "layout",
     "restorable"
    ],
    "additionalProperties": false
   },
   "TerminalGroupView": {
    "type": "object",
    "properties": {
     "sessions": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/TerminalSession"
      },
      "description": "Its live sessions; empty when the group is closed."
     },
     "id": {
      "type": "string"
     },
     "name": {
      "type": "string"
     },
     "cwd": {
      "type": [
       "string",
       "null"
      ],
      "description": "Where its terminals open. `None` is the home directory."
     },
     "open": {
      "type": "number",
      "description": "Sessions recorded against it that have not ended."
     },
     "layout": {
      "type": [
       "string",
       "null"
      ],
      "description": "The pane tree the site saved, opaque here."
     },
     "restorable": {
      "type": "number",
      "description": "How many terminals from before the last restart can be put back."
     }
    },
    "required": [
     "sessions",
     "id",
     "name",
     "cwd",
     "open",
     "layout",
     "restorable"
    ],
    "additionalProperties": false
   },
   "TerminalSession": {
    "type": "object",
    "properties": {
     "id": {
      "type": "string"
     },
     "taskId": {
      "type": "string",
      "description": "Empty for a group's terminal, which belongs to no task."
     },
     "kind": {
      "type": "string",
      "description": "The profile's kind: `shell`, `claude`, `codex`…"
     },
     "label": {
      "type": [
       "string",
       "null"
      ]
     },
     "cwd": {
      "type": "string"
     },
     "startedAt": {
      "type": "string",
      "description": "RFC 3339."
     },
     "attention": {
      "$ref": "#/components/schemas/TerminalAttention"
     }
    },
    "required": [
     "id",
     "taskId",
     "kind",
     "label",
     "cwd",
     "startedAt",
     "attention"
    ],
    "additionalProperties": false
   },
   "TerminalsRestored": {
    "type": "object",
    "properties": {
     "restored": {
      "type": "number",
      "description": "How many terminals came back."
     }
    },
    "required": [
     "restored"
    ],
    "additionalProperties": false
   },
   "TerminalsScreen": {
    "type": "object",
    "properties": {
     "groups": {
      "anyOf": [
       {
        "type": "array",
        "items": {
         "$ref": "#/components/schemas/TerminalGroupView"
        }
       },
       {
        "type": "null"
       }
      ]
     },
     "profiles": {
      "anyOf": [
       {
        "type": "array",
        "items": {
         "$ref": "#/components/schemas/EnabledProfile"
        }
       },
       {
        "type": "null"
       }
      ],
      "description": "The agent profiles a new terminal can start with."
     },
     "errors": {
      "type": "array",
      "items": {
       "type": "string"
      }
     }
    },
    "required": [
     "groups",
     "profiles",
     "errors"
    ],
    "additionalProperties": false
   },
   "TerminalSuggestion": {
    "type": "object",
    "properties": {
     "command": {
      "type": "string"
     },
     "warning": {
      "type": [
       "string",
       "null"
      ],
      "description": "Why to read it before running: it changes or deletes something."
     },
     "examples": {
      "type": "number",
      "description": "How many earlier commands from the shell's history were shown to the model."
     }
    },
    "required": [
     "command",
     "warning",
     "examples"
    ],
    "additionalProperties": false
   },
   "TestAttachment": {
    "type": "object",
    "properties": {
     "contentType": {
      "type": "string"
     },
     "data": {
      "type": "string",
      "description": "Base64."
     },
     "bytes": {
      "type": "number"
     }
    },
    "required": [
     "contentType",
     "data",
     "bytes"
    ],
    "additionalProperties": false
   },
   "TestEnvRow": {
    "type": "object",
    "properties": {
     "name": {
      "type": "string"
     },
     "label": {
      "type": "string"
     },
     "baseUrl": {
      "type": "string"
     },
     "authKind": {
      "type": "string",
      "description": "none | header | storage | setup"
     },
     "authConfig": {
      "$ref": "#/components/schemas/JsonValue",
      "description": "header: `{ header, prefix, secret }`; storage: `{ path }`; setup: `{ spec }`."
     },
     "secrets": {
      "type": "array",
      "items": {
       "type": "string"
      }
     },
     "stored": {
      "type": "array",
      "items": {
       "type": "string"
      },
      "description": "Which secrets have a value in the keychain (never the values)."
     },
     "lane": {
      "type": "boolean"
     }
    },
    "required": [
     "name",
     "label",
     "baseUrl",
     "authKind",
     "authConfig",
     "secrets",
     "stored",
     "lane"
    ],
    "additionalProperties": false
   },
   "TestEnvStatus": {
    "type": "object",
    "properties": {
     "env": {
      "type": "string"
     },
     "status": {
      "type": "string"
     },
     "at": {
      "type": "string"
     },
     "runId": {
      "type": "string"
     },
     "durationMs": {
      "type": "number"
     }
    },
    "required": [
     "env",
     "status",
     "at",
     "runId",
     "durationMs"
    ],
    "additionalProperties": false
   },
   "TestResultRow": {
    "type": "object",
    "properties": {
     "file": {
      "type": "string"
     },
     "title": {
      "type": "string"
     },
     "fullTitle": {
      "type": "string"
     },
     "env": {
      "type": [
       "string",
       "null"
      ]
     },
     "tags": {
      "type": "array",
      "items": {
       "type": "string"
      }
     },
     "status": {
      "type": "string"
     },
     "durationMs": {
      "type": "number"
     },
     "retries": {
      "type": "number"
     },
     "error": {
      "type": [
       "string",
       "null"
      ]
     },
     "attachments": {
      "$ref": "#/components/schemas/JsonValue",
      "description": "`[{ name, contentType, path }]`; fetch with `tests.attachment`."
     }
    },
    "required": [
     "file",
     "title",
     "fullTitle",
     "env",
     "tags",
     "status",
     "durationMs",
     "retries",
     "error",
     "attachments"
    ],
    "additionalProperties": false
   },
   "TestRoot": {
    "type": "object",
    "properties": {
     "id": {
      "type": "string",
      "description": "`managed`, or a repository id."
     },
     "name": {
      "type": "string"
     },
     "path": {
      "type": "string"
     },
     "error": {
      "type": [
       "string",
       "null"
      ]
     }
    },
    "required": [
     "id",
     "name",
     "path",
     "error"
    ],
    "additionalProperties": false
   },
   "TestRunDetail": {
    "type": "object",
    "properties": {
     "run": {
      "$ref": "#/components/schemas/TestRunRow"
     },
     "results": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/TestResultRow"
      }
     },
     "output": {
      "type": "string"
     }
    },
    "required": [
     "run",
     "results",
     "output"
    ],
    "additionalProperties": false
   },
   "TestRunner": {
    "type": "object",
    "properties": {
     "id": {
      "type": "string"
     },
     "name": {
      "type": "string"
     },
     "available": {
      "type": "boolean"
     },
     "note": {
      "type": "string"
     }
    },
    "required": [
     "id",
     "name",
     "available",
     "note"
    ],
    "additionalProperties": false
   },
   "TestRunRow": {
    "type": "object",
    "properties": {
     "id": {
      "type": "string"
     },
     "kind": {
      "type": "string",
      "description": "`playwright`, `check` or `setup`."
     },
     "checkId": {
      "type": [
       "string",
       "null"
      ]
     },
     "env": {
      "type": [
       "string",
       "null"
      ]
     },
     "runner": {
      "type": "string"
     },
     "trigger": {
      "type": "string"
     },
     "selector": {
      "type": "string"
     },
     "taskKey": {
      "type": [
       "string",
       "null"
      ]
     },
     "status": {
      "type": "string",
      "description": "queued | running | passed | failed | error | cancelled | offline"
     },
     "startedAt": {
      "type": "string"
     },
     "endedAt": {
      "type": [
       "string",
       "null"
      ]
     },
     "durationMs": {
      "type": [
       "number",
       "null"
      ]
     },
     "summary": {
      "$ref": "#/components/schemas/JsonValue"
     },
     "error": {
      "type": [
       "string",
       "null"
      ]
     }
    },
    "required": [
     "id",
     "kind",
     "checkId",
     "env",
     "runner",
     "trigger",
     "selector",
     "taskKey",
     "status",
     "startedAt",
     "endedAt",
     "durationMs",
     "summary",
     "error"
    ],
    "additionalProperties": false
   },
   "TestRunsPage": {
    "type": "object",
    "properties": {
     "runs": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/TestRunRow"
      }
     },
     "total": {
      "type": "number"
     }
    },
    "required": [
     "runs",
     "total"
    ],
    "additionalProperties": false
   },
   "TestsBase": {
    "type": "object",
    "properties": {
     "baseUrl": {
      "type": "string"
     }
    },
    "required": [
     "baseUrl"
    ],
    "additionalProperties": false
   },
   "TestsList": {
    "type": "object",
    "properties": {
     "specs": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/TestSpecRow"
      }
     },
     "roots": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/TestRoot"
      }
     },
     "setup": {
      "$ref": "#/components/schemas/TestsSetup"
     }
    },
    "required": [
     "specs",
     "roots",
     "setup"
    ],
    "additionalProperties": false
   },
   "TestSpecRow": {
    "type": "object",
    "properties": {
     "root": {
      "type": "string"
     },
     "file": {
      "type": "string"
     },
     "line": {
      "type": "number"
     },
     "title": {
      "type": "string"
     },
     "fullTitle": {
      "type": "string"
     },
     "tags": {
      "type": "array",
      "items": {
       "type": "string"
      }
     },
     "kind": {
      "type": [
       "string",
       "null"
      ],
      "description": "`api`, `ui` or none."
     },
     "tasks": {
      "type": "array",
      "items": {
       "type": "string"
      }
     },
     "envs": {
      "type": "array",
      "items": {
       "type": "string"
      },
      "description": "From `@env:`; empty means every environment."
     },
     "monitor": {
      "type": "boolean"
     },
     "last": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/TestEnvStatus"
      }
     },
     "flips": {
      "type": "number",
      "description": "Outcome changes in the last 20 results."
     }
    },
    "required": [
     "root",
     "file",
     "line",
     "title",
     "fullTitle",
     "tags",
     "kind",
     "tasks",
     "envs",
     "monitor",
     "last",
     "flips"
    ],
    "additionalProperties": false
   },
   "TestsScreen": {
    "type": "object",
    "properties": {
     "setup": {
      "$ref": "#/components/schemas/TestsSetup"
     },
     "monitors": {
      "type": "number"
     },
     "monitorsDown": {
      "type": "number"
     },
     "openIncidents": {
      "type": "number"
     },
     "lastRun": {
      "anyOf": [
       {
        "$ref": "#/components/schemas/TestRunRow"
       },
       {
        "type": "null"
       }
      ]
     },
     "running": {
      "type": "number"
     },
     "envs": {
      "type": "array",
      "items": {
       "type": "string"
      }
     },
     "errors": {
      "type": "array",
      "items": {
       "type": "string"
      }
     }
    },
    "required": [
     "setup",
     "monitors",
     "monitorsDown",
     "openIncidents",
     "lastRun",
     "running",
     "envs",
     "errors"
    ],
    "additionalProperties": false
   },
   "TestsSetup": {
    "type": "object",
    "properties": {
     "node": {
      "type": [
       "string",
       "null"
      ]
     },
     "nodeVersion": {
      "type": [
       "string",
       "null"
      ]
     },
     "npx": {
      "type": [
       "string",
       "null"
      ]
     },
     "scaffolded": {
      "type": "boolean"
     },
     "installed": {
      "type": "boolean"
     },
     "playwrightVersion": {
      "type": [
       "string",
       "null"
      ]
     },
     "browsers": {
      "type": "boolean"
     },
     "dir": {
      "type": "string"
     },
     "ready": {
      "type": "boolean",
      "description": "Node, Playwright and a browser are all present."
     }
    },
    "required": [
     "node",
     "nodeVersion",
     "npx",
     "scaffolded",
     "installed",
     "playwrightVersion",
     "browsers",
     "dir",
     "ready"
    ],
    "additionalProperties": false
   },
   "TestTemplate": {
    "type": "object",
    "properties": {
     "id": {
      "type": "string"
     },
     "name": {
      "type": "string"
     },
     "kind": {
      "type": "string"
     },
     "description": {
      "type": "string"
     }
    },
    "required": [
     "id",
     "name",
     "kind",
     "description"
    ],
    "additionalProperties": false
   },
   "TimelineDigest": {
    "type": "object",
    "properties": {
     "from": {
      "type": "number"
     },
     "to": {
      "type": "number"
     },
     "bucketMs": {
      "type": "number"
     },
     "live": {
      "type": "boolean"
     },
     "volumes": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/DigestVolume"
      }
     },
     "correlations": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/DigestCorrelation"
      }
     },
     "deploys": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/DigestEvent"
      },
      "description": "Deploys and pipelines, oldest first."
     },
     "issues": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/DigestIssue"
      }
     },
     "patterns": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/DigestPattern"
      }
     },
     "incidents": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/DigestEvent"
      }
     },
     "monitors": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/DigestEvent"
      },
      "description": "Monitor incidents open at some moment of the window (every source but Cloudflare), cited `M1`, `M2`…; `ref` is the incident (`type` `incident`), `parent` its monitor."
     },
     "watches": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/DigestWatch"
      }
     },
     "releases": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/DigestEvent"
      }
     },
     "alerts": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/DigestEvent"
      }
     },
     "runs": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/DigestEvent"
      }
     },
     "cloudflare": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/DigestCloudflare"
      },
      "description": "Cloudflare issues open in the window, most severe first."
     },
     "totals": {
      "$ref": "#/components/schemas/DigestTotals",
      "description": "How many there were before the lists were cut."
     },
     "errors": {
      "type": "array",
      "items": {
       "type": "string"
      },
      "description": "Sources that could not be read, each in a sentence."
     },
     "text": {
      "type": "string",
      "description": "Exactly what `timeline.explain` sends."
     },
     "chars": {
      "type": "number",
      "description": "`text`'s length in characters."
     },
     "empty": {
      "type": "boolean",
      "description": "Nothing happened in the window: no volume and no events."
     },
     "anchor": {
      "anyOf": [
       {
        "$ref": "#/components/schemas/DigestAnchor"
       },
       {
        "type": "null"
       }
      ],
      "description": "The moment the digest is about, when it is about one (an incident): what touches it is listed first."
     },
     "related": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/DigestRelated"
      },
      "description": "With an anchor from the Incident view: its top-ranked related items, best first."
     },
     "key": {
      "type": "string",
      "description": "The explanation's key: the project, window, filters and `text`, hashed."
     }
    },
    "required": [
     "from",
     "to",
     "bucketMs",
     "live",
     "volumes",
     "correlations",
     "deploys",
     "issues",
     "patterns",
     "incidents",
     "monitors",
     "watches",
     "releases",
     "alerts",
     "runs",
     "cloudflare",
     "totals",
     "errors",
     "text",
     "chars",
     "empty",
     "anchor",
     "key"
    ],
    "additionalProperties": false
   },
   "TimelineExplainState": {
    "type": "object",
    "properties": {
     "digest": {
      "$ref": "#/components/schemas/TimelineDigest"
     },
     "explanation": {
      "anyOf": [
       {
        "$ref": "#/components/schemas/TimelineExplanation"
       },
       {
        "type": "null"
       }
      ],
      "description": "The kept or running answer for this digest, if any."
     }
    },
    "required": [
     "digest",
     "explanation"
    ],
    "additionalProperties": false
   },
   "TimelineExplanation": {
    "type": "object",
    "properties": {
     "key": {
      "type": "string"
     },
     "running": {
      "type": "boolean"
     },
     "preview": {
      "type": [
       "string",
       "null"
      ],
      "description": "The answer so far, while it is written."
     },
     "text": {
      "type": [
       "string",
       "null"
      ],
      "description": "The answer, markdown."
     },
     "error": {
      "type": [
       "string",
       "null"
      ],
      "description": "Why it has no answer."
     },
     "model": {
      "type": [
       "string",
       "null"
      ],
      "description": "What answered: `claude · haiku`, `anthropic/claude-…`."
     },
     "startedAt": {
      "type": [
       "number",
       "null"
      ],
      "description": "When it was asked, ms."
     },
     "finishedAt": {
      "type": [
       "number",
       "null"
      ],
      "description": "When it finished, ms."
     }
    },
    "required": [
     "key",
     "running",
     "preview",
     "text",
     "error",
     "model",
     "startedAt",
     "finishedAt"
    ],
    "additionalProperties": false
   },
   "TimelineFacet": {
    "type": "object",
    "properties": {
     "id": {
      "type": "string",
      "description": "The `filters` field it sets, e.g. `sentryEnvironment`, `newrelicHost`, `pipelineResult`."
     },
     "label": {
      "type": "string",
      "description": "Short: the lane (`source`) names the system."
     },
     "source": {
      "type": "string",
      "description": "The lane it narrows."
     },
     "help": {
      "type": "string",
      "description": "What it filters and what its counts are, or why it has none."
     },
     "unit": {
      "type": "string",
      "description": "What the counts are in (`events`, `issues`, `errors`, `runs`…); empty without counts."
     },
     "values": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/TimelineFacetValue"
      }
     }
    },
    "required": [
     "id",
     "label",
     "source",
     "help",
     "unit",
     "values"
    ],
    "additionalProperties": false
   },
   "TimelineFacetValue": {
    "type": "object",
    "properties": {
     "value": {
      "type": "string"
     },
     "label": {
      "type": [
       "string",
       "null"
      ]
     },
     "count": {
      "type": [
       "number",
       "null"
      ],
      "description": "How many of the facet's `unit` in the window, where it is known."
     },
     "selected": {
      "type": "boolean"
     },
     "icon": {
      "type": "string",
      "description": "A Sentry project's platform (`javascript-nextjs`), for its icon."
     }
    },
    "required": [
     "value",
     "label",
     "count",
     "selected"
    ],
    "additionalProperties": false
   },
   "TimelineFilters": {
    "type": "object",
    "properties": {
     "sentryProject": {
      "type": "array",
      "items": {
       "type": "string"
      },
      "description": "Sentry project slugs."
     },
     "sentryLevel": {
      "type": "array",
      "items": {
       "type": "string"
      },
      "description": "Sentry levels: `fatal`, `error`, `warning`, `info`, `debug`."
     },
     "newrelicEntity": {
      "type": "array",
      "items": {
       "type": "string"
      },
      "description": "New Relic application names."
     },
     "repository": {
      "type": "array",
      "items": {
       "type": "string"
      },
      "description": "Repository ids (pipelines and deployments)."
     },
     "cloudflareZone": {
      "type": "array",
      "items": {
       "type": "string"
      },
      "description": "Cloudflare zone ids (the traffic series; deployments are not per zone)."
     },
     "sentryEnvironment": {
      "type": "array",
      "items": {
       "type": "string"
      },
      "description": "Sentry environments: the copied error events' `environment`, and the issues those events belong to."
     },
     "deployLane": {
      "type": "array",
      "items": {
       "type": "string"
      },
      "description": "Deploy lanes, `production`, `uat` or `dev`: pipelines by branch, deployments by environment."
     },
     "watchSource": {
      "type": "array",
      "items": {
       "type": "string"
      },
      "description": "Database query (source) ids, for the watches lane."
     },
     "alert": {
      "type": "array",
      "items": {
       "type": "string"
      },
      "description": "Log alert ids, for the alerts lane."
     },
     "logSource": {
      "type": "array",
      "items": {
       "type": "string"
      },
      "description": "The log errors lane's sources."
     },
     "logService": {
      "type": "array",
      "items": {
       "type": "string"
      },
      "description": "The log errors lane's services."
     },
     "logEnvironment": {
      "type": "array",
      "items": {
       "type": "string"
      },
      "description": "The log errors lane's `environment` attribute values."
     },
     "logQuery": {
      "type": "string",
      "description": "A logs query AND-ed into the log errors lane."
     },
     "sentryRelease": {
      "type": "array",
      "items": {
       "type": "string"
      },
      "description": "Sentry releases: the copied error events' `release`, and the issues those events belong to."
     },
     "sentryCategory": {
      "type": "array",
      "items": {
       "type": "string"
      },
      "description": "Sentry issue categories: `error`, `performance`, `metric`, `uptime`, `cron`, `feedback`, `unknown`."
     },
     "sentryStatus": {
      "type": "array",
      "items": {
       "type": "string"
      },
      "description": "Sentry issue statuses: `unresolved`, `ignored`, `resolved`."
     },
     "sentryAssignee": {
      "type": "array",
      "items": {
       "type": "string"
      },
      "description": "Sentry assignees as the issue copy names them; `unassigned` for none."
     },
     "sentryAge": {
      "type": "array",
      "items": {
       "type": "string"
      },
      "description": "`new` (first seen in the window) or `ongoing`."
     },
     "newrelicHost": {
      "type": "array",
      "items": {
       "type": "string"
      },
      "description": "New Relic hosts, for the error count."
     },
     "newrelicTransaction": {
      "type": "array",
      "items": {
       "type": "string"
      },
      "description": "New Relic transaction names, for the error count."
     },
     "newrelicPriority": {
      "type": "array",
      "items": {
       "type": "string"
      },
      "description": "New Relic incident priorities: `critical`, `high`, `medium`, `low`."
     },
     "newrelicDeployApp": {
      "type": "array",
      "items": {
       "type": "string"
      },
      "description": "The applications New Relic deploys were recorded for."
     },
     "cloudflareProject": {
      "type": "array",
      "items": {
       "type": "string"
      },
      "description": "Cloudflare Pages projects and Worker scripts, for the deployments."
     },
     "cloudflareStatus": {
      "type": "array",
      "items": {
       "type": "string"
      },
      "description": "Cloudflare deployment statuses: `success`, `failure`, `canceled`, `building`."
     },
     "cloudflareHost": {
      "type": "array",
      "items": {
       "type": "string"
      },
      "description": "Cloudflare hosts: the series' requests and the issues on them."
     },
     "cloudflareIssueType": {
      "type": "array",
      "items": {
       "type": "string"
      },
      "description": "Cloudflare issue types: `failing`, `origin`, `slow`, `cache`, `firewall`…"
     },
     "cloudflareStatusClass": {
      "type": "array",
      "items": {
       "type": "string"
      },
      "description": "`5xx` or `4xx`: what the series counts, and the issues about them."
     },
     "cloudflareCache": {
      "type": "array",
      "items": {
       "type": "string"
      },
      "description": "Cloudflare cache statuses (`hit`, `miss`, `expired`, `bypass`, `dynamic`): the series' requests and the cache issues."
     },
     "cloudflareFirewallAction": {
      "type": "array",
      "items": {
       "type": "string"
      },
      "description": "Firewall actions (`block`, `managed_challenge`, `log`…) of the firewall issues."
     },
     "pipelineResult": {
      "type": "array",
      "items": {
       "type": "string"
      },
      "description": "Pipeline and deployment results: `success`, `failed`, `stopped`, `running`."
     },
     "pipelineBranch": {
      "type": "array",
      "items": {
       "type": "string"
      },
      "description": "Pipeline branches."
     },
     "releaseProject": {
      "type": "array",
      "items": {
       "type": "string"
      },
      "description": "Jira projects of the releases."
     },
     "releaseState": {
      "type": "array",
      "items": {
       "type": "string"
      },
      "description": "`yes` (released) or `no`."
     },
     "watchSeverity": {
      "type": "array",
      "items": {
       "type": "string"
      },
      "description": "Watch severities: `critical`, `error`, `warning`, `info`."
     },
     "alertState": {
      "type": "array",
      "items": {
       "type": "string"
      },
      "description": "Log alert firings: `firing` or `resolved`."
     },
     "logLevel": {
      "type": "array",
      "items": {
       "type": "string"
      },
      "description": "The log errors lane's levels (`fatal`, `error`, `warn`…), AND-ed with its `level:>=error`."
     },
     "logHost": {
      "type": "array",
      "items": {
       "type": "string"
      },
      "description": "The log errors lane's hosts."
     },
     "logAttr": {
      "type": "array",
      "items": {
       "type": "string"
      },
      "description": "The log errors lane's attributes, each `key=value` (`http.status_code=500`)."
     },
     "monitorSource": {
      "type": "array",
      "items": {
       "type": "string"
      },
      "description": "Monitor incidents' sources: `sentry`, `newrelic`, `devdash-check`, `devdash-alert`."
     },
     "monitorSeverity": {
      "type": "array",
      "items": {
       "type": "string"
      },
      "description": "Monitor incidents' severities: `critical`, `warning`, `info`."
     },
     "monitor": {
      "type": "array",
      "items": {
       "type": "string"
      },
      "description": "Monitor ids (`sentry:detector:42`)."
     }
    },
    "additionalProperties": false
   },
   "TimelineIncident": {
    "type": "object",
    "properties": {
     "id": {
      "type": "string",
      "description": "The incident's id, for the Incident view (`incident`)."
     },
     "monitorId": {
      "type": "string"
     },
     "monitor": {
      "type": "string",
      "description": "The monitor's name."
     },
     "source": {
      "type": "string",
      "description": "`sentry`, `newrelic`, `devdash-check` or `devdash-alert`."
     },
     "kind": {
      "type": "string",
      "description": "The monitor's kind: `metric`, `uptime`, `cron`, `error`, `check`, `log-alert`."
     },
     "start": {
      "type": "number",
      "description": "ms."
     },
     "end": {
      "type": [
       "number",
       "null"
      ],
      "description": "ms; null while open."
     },
     "severity": {
      "type": "string",
      "description": "`critical`, `warning` or `info`."
     },
     "value": {
      "type": [
       "number",
       "null"
      ],
      "description": "What it measured: Sentry's evaluated value, a check's failures, a log alert's count."
     },
     "threshold": {
      "type": [
       "number",
       "null"
      ],
      "description": "The threshold it crossed."
     },
     "figure": {
      "type": [
       "string",
       "null"
      ],
      "description": "The value against the threshold in a few words: `p95 6,014 ms > 6,000`."
     },
     "label": {
      "type": "string",
      "description": "The band's label: `/api/v1/orders response time · critical · p95 6,014 ms > 6,000`."
     },
     "environment": {
      "type": [
       "string",
       "null"
      ]
     },
     "app": {
      "type": [
       "string",
       "null"
      ]
     },
     "url": {
      "type": [
       "string",
       "null"
      ],
      "description": "The incident in its own tool."
     },
     "sentryIssueId": {
      "type": [
       "string",
       "null"
      ]
     }
    },
    "required": [
     "id",
     "monitorId",
     "monitor",
     "source",
     "kind",
     "start",
     "end",
     "severity",
     "value",
     "threshold",
     "figure",
     "label",
     "environment",
     "app",
     "url",
     "sentryIssueId"
    ],
    "additionalProperties": false
   },
   "TimelineLane": {
    "type": "object",
    "properties": {
     "id": {
      "type": "string"
     },
     "label": {
      "type": "string"
     },
     "color": {
      "type": "string",
      "description": "A colour token, e.g. `--rose`."
     },
     "unit": {
      "type": "string",
      "description": "What the series counts (`events`, `errors`, `findings`, `lines`); empty for a lane of markers only."
     },
     "total": {
      "type": "number",
      "description": "The series' sum, or the marker count for a lane of markers only."
     },
     "series": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/TimelinePoint"
      },
      "description": "One point per bucket, empty for a lane of markers only."
     },
     "base": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/TimelinePoint"
      },
      "description": "What the series is a part of, per bucket (Cloudflare's requests beside its 5xx); empty when the lane has no such whole."
     },
     "baseUnit": {
      "type": "string",
      "description": "What `base` counts (`requests`); empty without one."
     },
     "markers": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/TimelineMarker"
      },
      "description": "Oldest first, inside the window."
     },
     "truncated": {
      "type": "boolean",
      "description": "More markers fell in the window than are listed."
     }
    },
    "required": [
     "id",
     "label",
     "color",
     "unit",
     "total",
     "series",
     "base",
     "baseUnit",
     "markers",
     "truncated"
    ],
    "additionalProperties": false
   },
   "TimelineMarker": {
    "type": "object",
    "properties": {
     "t": {
      "type": "number",
      "description": "ms."
     },
     "kind": {
      "type": "string",
      "description": "`issue`, `regression`, `deploy`, `incident`, `release`, `pipeline`, `deployment`, `finding`, `alert`, `run` or `event`."
     },
     "title": {
      "type": "string"
     },
     "detail": {
      "type": [
       "string",
       "null"
      ]
     },
     "severity": {
      "type": "string",
      "description": "`error`, `warning`, `success` or `info`."
     },
     "ref": {
      "$ref": "#/components/schemas/TimelineRef"
     }
    },
    "required": [
     "t",
     "kind",
     "title",
     "detail",
     "severity",
     "ref"
    ],
    "additionalProperties": false
   },
   "TimelineOverview": {
    "type": "object",
    "properties": {
     "from": {
      "type": "number"
     },
     "to": {
      "type": "number"
     },
     "bucketMs": {
      "type": "number"
     },
     "points": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/TimelinePoint"
      },
      "description": "The read lanes' volume (series, or markers for a lane without one) per coarse bucket."
     }
    },
    "required": [
     "from",
     "to",
     "bucketMs",
     "points"
    ],
    "additionalProperties": false
   },
   "TimelinePoint": {
    "type": "object",
    "properties": {
     "t": {
      "type": "number",
      "description": "Bucket start, ms."
     },
     "n": {
      "type": "number"
     }
    },
    "required": [
     "t",
     "n"
    ],
    "additionalProperties": false
   },
   "TimelineRef": {
    "type": "object",
    "properties": {
     "type": {
      "type": "string"
     },
     "id": {
      "type": "string"
     },
     "parent": {
      "type": [
       "string",
       "null"
      ]
     },
     "url": {
      "type": [
       "string",
       "null"
      ],
      "description": "The page at the provider, where there is one."
     }
    },
    "required": [
     "type",
     "id",
     "parent",
     "url"
    ],
    "additionalProperties": false
   },
   "TimelineScreen": {
    "type": "object",
    "properties": {
     "from": {
      "type": "number"
     },
     "to": {
      "type": "number"
     },
     "bucketMs": {
      "type": "number"
     },
     "live": {
      "type": "boolean",
      "description": "The window ends now and moves with it (a `range` was asked)."
     },
     "lanes": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/TimelineLane"
      }
     },
     "incidents": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/TimelineIncident"
      },
      "description": "Monitor incidents open at some moment of the window, oldest start first; empty when the `monitors` source is not read."
     },
     "incidentsTruncated": {
      "type": "boolean",
      "description": "More incidents fell in the window than are listed."
     },
     "overview": {
      "$ref": "#/components/schemas/TimelineOverview"
     },
     "sources": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/TimelineSource"
      },
      "description": "The lanes that can be shown: connected providers and local sources with data, and `monitors` (the incidents, drawn as bands) when there is a monitor."
     },
     "facets": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/TimelineFacet"
      }
     },
     "errors": {
      "type": "array",
      "items": {
       "type": "string"
      },
      "description": "Sources that failed, each in a sentence. The other lanes still show."
     }
    },
    "required": [
     "from",
     "to",
     "bucketMs",
     "live",
     "lanes",
     "incidents",
     "incidentsTruncated",
     "overview",
     "sources",
     "facets",
     "errors"
    ],
    "additionalProperties": false
   },
   "TimelineSource": {
    "type": "object",
    "properties": {
     "id": {
      "type": "string"
     },
     "label": {
      "type": "string"
     },
     "color": {
      "type": "string"
     },
     "selected": {
      "type": "boolean",
      "description": "Read in this answer."
     },
     "optional": {
      "type": "boolean",
      "description": "Off unless `lanes` names it (New Relic's performance lanes)."
     }
    },
    "required": [
     "id",
     "label",
     "color",
     "selected"
    ],
    "additionalProperties": false
   },
   "TrackedEntity": {
    "type": "object",
    "properties": {
     "guid": {
      "type": "string"
     },
     "name": {
      "type": "string"
     }
    },
    "required": [
     "guid",
     "name"
    ],
    "additionalProperties": false
   },
   "UpdateCheck": {
    "type": "object",
    "properties": {
     "available": {
      "type": "boolean"
     },
     "latest": {
      "type": [
       "string",
       "null"
      ]
     },
     "builtAt": {
      "type": [
       "string",
       "null"
      ]
     },
     "error": {
      "type": [
       "string",
       "null"
      ],
      "description": "Why the check could not be made (offline, bad file). Not an error for the call."
     }
    },
    "required": [
     "available",
     "latest",
     "builtAt",
     "error"
    ],
    "additionalProperties": false
   },
   "UpdateOutcome": {
    "type": "object",
    "properties": {
     "updated": {
      "type": "boolean"
     },
     "version": {
      "type": "string"
     },
     "restarting": {
      "type": "boolean",
      "description": "The service restarts itself shortly after answering."
     }
    },
    "required": [
     "updated",
     "version",
     "restarting"
    ],
    "additionalProperties": false
   },
   "UptimeRow": {
    "type": "object",
    "properties": {
     "pct": {
      "type": [
       "number",
       "null"
      ]
     },
     "runs": {
      "type": "number"
     },
     "p95Ms": {
      "type": [
       "number",
       "null"
      ]
     }
    },
    "required": [
     "pct",
     "runs",
     "p95Ms"
    ],
    "additionalProperties": false
   },
   "Watch": {
    "type": "object",
    "properties": {
     "title": {
      "type": "string"
     },
     "source": {
      "type": "string",
      "description": "Which check produced it."
     },
     "severity": {
      "type": "string"
     },
     "occurrences": {
      "type": "number",
      "description": "How many times this fingerprint has been seen."
     },
     "lastSeen": {
      "type": "string"
     },
     "fingerprint": {
      "type": "string",
      "description": "The key the rows were grouped on, and what `live.watch` takes."
     },
     "sourceId": {
      "type": [
       "string",
       "null"
      ],
      "description": "The query that produced it, when the rows recorded one."
     },
     "sourceLabel": {
      "type": "string",
      "description": "The query's name as the newest row recorded it."
     },
     "firstSeen": {
      "type": "string"
     },
     "entity": {
      "type": [
       "string",
       "null"
      ],
      "description": "From the newest occurrence, where the query mapped them."
     },
     "actor": {
      "type": [
       "string",
       "null"
      ]
     },
     "link": {
      "type": [
       "string",
       "null"
      ]
     },
     "kind": {
      "type": "string",
      "description": "The source's type for the rows (`cron`, `php`), where its query maps a type column."
     },
     "message": {
      "type": "string",
      "description": "The message without the type it starts with; the title has both."
     }
    },
    "required": [
     "title",
     "source",
     "severity",
     "occurrences",
     "lastSeen",
     "fingerprint",
     "sourceId",
     "sourceLabel",
     "firstSeen",
     "entity",
     "actor",
     "link"
    ],
    "additionalProperties": false
   },
   "Watchable": {
    "type": "object",
    "properties": {
     "guid": {
      "type": "string"
     },
     "name": {
      "type": "string"
     },
     "reporting": {
      "type": "boolean",
      "description": "Whether it has sent data recently. An account keeps entities long after they go quiet, and offering those first makes the picker useless."
     },
     "language": {
      "type": [
       "string",
       "null"
      ]
     },
     "environment": {
      "type": [
       "string",
       "null"
      ]
     },
     "watched": {
      "type": "boolean"
     }
    },
    "required": [
     "guid",
     "name",
     "reporting",
     "language",
     "environment",
     "watched"
    ],
    "additionalProperties": false
   },
   "WatchDay": {
    "type": "object",
    "properties": {
     "day": {
      "type": "string",
      "description": "`YYYY-MM-DD`, local time."
     },
     "count": {
      "type": "number"
     }
    },
    "required": [
     "day",
     "count"
    ],
    "additionalProperties": false
   },
   "WatchDetail": {
    "type": "object",
    "properties": {
     "summary": {
      "$ref": "#/components/schemas/Watch"
     },
     "days": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/WatchDay"
      },
      "description": "The last 30 local days, oldest first, every day present."
     },
     "latest": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/WatchOccurrence"
      },
      "description": "The newest 50, newest first."
     },
     "query": {
      "$ref": "#/components/schemas/WatchQuery"
     }
    },
    "required": [
     "summary",
     "days",
     "latest",
     "query"
    ],
    "additionalProperties": false
   },
   "WatchOccurrence": {
    "type": "object",
    "properties": {
     "id": {
      "type": "string"
     },
     "timestamp": {
      "type": "string",
      "description": "RFC 3339."
     },
     "message": {
      "type": "string"
     },
     "severity": {
      "type": "string"
     },
     "entity": {
      "type": [
       "string",
       "null"
      ],
      "description": "The mapped columns, where the query mapped them."
     },
     "actor": {
      "type": [
       "string",
       "null"
      ]
     },
     "type": {
      "type": [
       "string",
       "null"
      ]
     },
     "link": {
      "type": [
       "string",
       "null"
      ]
     },
     "columns": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/EventProp"
      },
      "description": "The raw columns the query keeps, redacted at ingest."
     }
    },
    "required": [
     "id",
     "timestamp",
     "message",
     "severity",
     "entity",
     "actor",
     "type",
     "link",
     "columns"
    ],
    "additionalProperties": false
   },
   "WatchQuery": {
    "type": "object",
    "properties": {
     "id": {
      "type": [
       "string",
       "null"
      ]
     },
     "label": {
      "type": "string",
      "description": "Today's name, or the one the rows recorded when the query is gone."
     },
     "exists": {
      "type": "boolean",
      "description": "Whether the integration still has it."
     },
     "paused": {
      "type": "boolean"
     },
     "edit": {
      "type": "string",
      "description": "Project-relative path to the editor."
     }
    },
    "required": [
     "id",
     "label",
     "exists",
     "paused",
     "edit"
    ],
    "additionalProperties": false
   },
   "Webhook": {
    "type": "object",
    "properties": {
     "name": {
      "type": "string"
     },
     "createdAt": {
      "type": "string"
     },
     "lastAt": {
      "type": [
       "string",
       "null"
      ]
     },
     "calls": {
      "type": "number"
     },
     "rules": {
      "type": "array",
      "items": {
       "type": "string"
      },
      "description": "The enabled rules with a trigger for this hook (or for any), by name."
     }
    },
    "required": [
     "name",
     "createdAt",
     "lastAt",
     "calls",
     "rules"
    ],
    "additionalProperties": false
   },
   "WebhookCreated": {
    "type": "object",
    "properties": {
     "name": {
      "type": "string"
     },
     "url": {
      "type": "string"
     }
    },
    "required": [
     "name",
     "url"
    ],
    "additionalProperties": false
   },
   "Webhooks": {
    "type": "object",
    "properties": {
     "hooks": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/Webhook"
      }
     },
     "base": {
      "type": "string",
      "description": "`http://127.0.0.1:<port>/hook/<project id>/`: a hook's URL is this and its token."
     }
    },
    "required": [
     "hooks",
     "base"
    ],
    "additionalProperties": false
   },
   "WorkflowConfiguration": {
    "type": "object",
    "properties": {
     "sections": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/WorkflowSection"
      }
     },
     "sandbox": {
      "$ref": "#/components/schemas/WorkflowSandbox",
      "description": "Run the agent steps in a container (core `runs::sandbox`); absent runs them on the Mac."
     }
    },
    "required": [
     "sections"
    ],
    "additionalProperties": false
   },
   "WorkflowProfile": {
    "type": "object",
    "properties": {
     "id": {
      "type": "string"
     },
     "name": {
      "type": "string"
     },
     "workspaces": {
      "anyOf": [
       {
        "type": "array",
        "items": {
         "type": "string"
        }
       },
       {
        "type": "null"
       }
      ],
      "description": "Workspace ids this workflow is offered in; `null` is every workspace."
     },
     "config": {
      "$ref": "#/components/schemas/WorkflowConfiguration"
     }
    },
    "required": [
     "id",
     "name",
     "workspaces",
     "config"
    ],
    "additionalProperties": false
   },
   "WorkflowProfiles": {
    "type": "array",
    "items": {
     "$ref": "#/components/schemas/WorkflowProfile"
    }
   },
   "WorkflowSandbox": {
    "type": "object",
    "properties": {
     "image": {
      "type": "string",
      "description": "An image with `claude` on its PATH; `devdash-agent:1` is the one DevDash builds."
     },
     "cpus": {
      "type": "number"
     },
     "memoryGb": {
      "type": "number",
      "description": "GB."
     }
    },
    "required": [
     "image"
    ],
    "additionalProperties": false
   },
   "WorkflowSection": {
    "type": "object",
    "properties": {
     "label": {
      "type": "string"
     },
     "steps": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/WorkflowStep"
      }
     }
    },
    "required": [
     "label",
     "steps"
    ],
    "additionalProperties": false
   },
   "WorkflowStep": {
    "type": "object",
    "properties": {
     "id": {
      "type": "string"
     },
     "key": {
      "type": "string",
      "description": "Stable identity of a built-in step; `custom-<id>` for added ones. Fixed once saved."
     },
     "label": {
      "type": "string"
     },
     "purpose": {
      "type": "string",
      "enum": [
       "task",
       "review"
      ]
     },
     "kind": {
      "type": "string",
      "enum": [
       "plan",
       "review",
       "implement",
       "verify",
       "summarise",
       "commit"
      ],
      "description": "What the step may do. Fixed once saved."
     },
     "prompt": {
      "type": "string"
     },
     "shape": {
      "type": "string",
      "enum": [
       "None",
       "Criteria",
       "Plan",
       "TaskReview",
       "Findings",
       "TestProposal",
       "Summary"
      ],
      "description": "The answer's structure. Fixed once saved."
     },
     "gate": {
      "type": "boolean",
      "description": "Whether the run stops for a person after this step."
     },
     "group": {
      "type": [
       "string",
       "null"
      ]
     },
     "enabled": {
      "type": "boolean"
     },
     "built_in": {
      "type": "boolean"
     },
     "sort_order": {
      "type": "number"
     },
     "model": {
      "type": [
       "string",
       "null"
      ],
      "description": "A model for `claude --model`, or `null` for the CLI's default."
     }
    },
    "required": [
     "id",
     "key",
     "label",
     "purpose",
     "kind",
     "prompt",
     "shape",
     "gate",
     "group",
     "enabled",
     "built_in",
     "sort_order",
     "model"
    ],
    "additionalProperties": false
   },
   "WorkflowSteps": {
    "type": "object",
    "properties": {
     "profile": {
      "type": "string"
     },
     "name": {
      "type": "string"
     },
     "sections": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/WorkflowSection"
      }
     },
     "templates": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/WorkflowStep"
      },
      "description": "A blank step of each kind, ready to insert: the editor adds one of these and saves the whole profile with `project.workflow.save`."
     }
    },
    "required": [
     "profile",
     "name",
     "sections",
     "templates"
    ],
    "additionalProperties": false
   },
   "WorkingHours": {
    "type": "object",
    "properties": {
     "start": {
      "type": "string"
     },
     "end": {
      "type": "string"
     },
     "days": {
      "type": "array",
      "items": {
       "type": "number"
      },
      "description": "ISO weekdays, 1 = Monday."
     },
     "timezone": {
      "type": "string"
     }
    },
    "required": [
     "start",
     "end",
     "days",
     "timezone"
    ],
    "additionalProperties": false
   },
   "WorkList": {
    "type": "object",
    "properties": {
     "rows": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/IssueRow"
      }
     },
     "matched": {
      "type": "number",
      "description": "What the selection matched — not the page size and not the domain's size. The facet counts answer \"how much is there\" better."
     },
     "capped": {
      "type": "boolean",
      "description": "Whether the page is a page of more. v7 computed this and drew it nowhere, so 200 of 4,538 looked like all 200."
     },
     "facets": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/Facet"
      }
     },
     "paginated": {
      "type": "boolean"
     }
    },
    "required": [
     "rows",
     "matched",
     "capped",
     "facets",
     "paginated"
    ],
    "additionalProperties": false
   },
   "WorkspaceChoice": {
    "type": "object",
    "properties": {
     "id": {
      "type": "string"
     },
     "name": {
      "type": "string"
     }
    },
    "required": [
     "id",
     "name"
    ],
    "additionalProperties": false
   },
   "WorkStatuses": {
    "type": "object",
    "properties": {
     "order": {
      "type": "array",
      "items": {
       "type": "string"
      },
      "description": "Status names in the order the tracker's board shows them; empty when Jira is not connected or has no board to read, and a list then keeps its own order."
     }
    },
    "required": [
     "order"
    ],
    "additionalProperties": false
   }
  }
 }
}
