{
  "openapi": "3.0.4",
  "info": {
    "title": "agentView Agent API",
    "description": "Public Agent-First API for agentView. Includes REST agent flows, MCP, OAuth discovery and authorization endpoints, direct send endpoints, and public status.",
    "version": "v1"
  },
  "paths": {
    "/agent-instructions": {
      "get": {
        "tags": [
          "Agent"
        ],
        "summary": "Machine-readable instructions for AI agents. No auth required.",
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/v1/agent/instructions": {
      "get": {
        "tags": [
          "Agent"
        ],
        "summary": "Machine-readable instructions for AI agents. No auth required.",
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/v1/agent/help": {
      "get": {
        "tags": [
          "Agent"
        ],
        "summary": "User-friendly help text that the agent can show to the user.",
        "responses": {
          "200": {
            "description": "OK"
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/api/v1/agent/pricing": {
      "get": {
        "tags": [
          "Agent"
        ],
        "summary": "Plan pricing, features and upgrade options. No auth required.",
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/v1/agent/public-apis": {
      "get": {
        "tags": [
          "Agent"
        ],
        "summary": "Search a curated catalog of 600+ free, no-auth public APIs for embedding live data in display HTML.\nNo auth required.",
        "parameters": [
          {
            "name": "query",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "category",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "cors_only",
            "in": "query",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/v1/agent/public-apis/{slug}": {
      "get": {
        "tags": [
          "Agent"
        ],
        "summary": "Get details of a specific public API by slug.\nNo auth required.",
        "parameters": [
          {
            "name": "slug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/v1/agent/public-apis/categories": {
      "get": {
        "tags": [
          "Agent"
        ],
        "summary": "List all available public API categories with counts.\nNo auth required.",
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/v1/agent/events": {
      "get": {
        "tags": [
          "Agent"
        ],
        "summary": "Real-time event stream for display status changes and content delivery.\nStreams events as SSE (text/event-stream). The connection stays open until\nthe client disconnects or the JWT expires.",
        "responses": {
          "200": {
            "description": "OK"
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/api/v1/agent/magic-link": {
      "post": {
        "tags": [
          "Agent"
        ],
        "summary": "Trigger a magic login link for a user.",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Screen.Central.Controllers.AgentController.AgentMagicLinkRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/Screen.Central.Controllers.AgentController.AgentMagicLinkRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/Screen.Central.Controllers.AgentController.AgentMagicLinkRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/v1/agent/me": {
      "get": {
        "tags": [
          "Agent"
        ],
        "summary": "Get current user info from the Bearer token.",
        "responses": {
          "200": {
            "description": "OK"
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/api/v1/agent/api-keys": {
      "post": {
        "tags": [
          "Agent"
        ],
        "summary": "Create a new API key. The raw key is returned only once.",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Screen.Central.Controllers.AgentController.CreateApiKeyRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/Screen.Central.Controllers.AgentController.CreateApiKeyRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/Screen.Central.Controllers.AgentController.CreateApiKeyRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        },
        "security": [
          { }
        ]
      },
      "get": {
        "tags": [
          "Agent"
        ],
        "summary": "List API keys for the current user. The raw key is never returned.\nSupports server-side search, filtering and pagination for large accounts.",
        "parameters": [
          {
            "name": "Search",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "GroupId",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Preset",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Status",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Offset",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "Limit",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/api/v1/agent/api-keys/{keyId}": {
      "delete": {
        "tags": [
          "Agent"
        ],
        "summary": "Revoke an API key. This is irreversible.",
        "parameters": [
          {
            "name": "keyId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/api/v1/agent/displays": {
      "get": {
        "tags": [
          "AgentDisplay"
        ],
        "summary": "List all displays owned by the authenticated user.",
        "parameters": [
          {
            "name": "offset",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 0
            }
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 50
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        },
        "security": [
          { }
        ]
      },
      "post": {
        "tags": [
          "AgentDisplay"
        ],
        "summary": "Create a new personal display.",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Screen.Central.Controllers.CreateDisplayRequest"
              }
            },
            "application/x-www-form-urlencoded": {
              "schema": {
                "$ref": "#/components/schemas/Screen.Central.Controllers.CreateDisplayRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/api/v1/agent/displays/{id}": {
      "get": {
        "tags": [
          "AgentDisplay"
        ],
        "summary": "Get detailed info about a specific display.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        },
        "security": [
          { }
        ]
      },
      "patch": {
        "tags": [
          "AgentDisplay"
        ],
        "summary": "Rename a display.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Screen.Central.Controllers.UpdateDisplayRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/Screen.Central.Controllers.UpdateDisplayRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/Screen.Central.Controllers.UpdateDisplayRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        },
        "security": [
          { }
        ]
      },
      "delete": {
        "tags": [
          "AgentDisplay"
        ],
        "summary": "Delete a display permanently.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/api/v1/agent/displays/{id}/capabilities": {
      "get": {
        "tags": [
          "AgentDisplayConfig"
        ],
        "summary": "Returns resolved connectivity and browser/runtime capabilities for a display.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/api/v1/agent/displays/{id}/configure": {
      "post": {
        "tags": [
          "AgentDisplayConfig"
        ],
        "summary": "Update hardware permission and UI settings for a display.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Screen.Central.Controllers.ConfigureDisplayRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/Screen.Central.Controllers.ConfigureDisplayRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/Screen.Central.Controllers.ConfigureDisplayRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/api/v1/agent/displays/{id}/content": {
      "post": {
        "tags": [
          "AgentDisplayContent"
        ],
        "summary": "Send HTML content to a display.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "description",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Screen.Central.Controllers.SendContentRequest"
              }
            },
            "application/x-www-form-urlencoded": {
              "schema": {
                "$ref": "#/components/schemas/Screen.Central.Controllers.SendContentRequest"
              }
            },
            "text/html": {
              "schema": {
                "$ref": "#/components/schemas/Screen.Central.Controllers.SendContentRequest"
              }
            },
            "text/plain": {
              "schema": {
                "$ref": "#/components/schemas/Screen.Central.Controllers.SendContentRequest"
              }
            },
            "application/octet-stream": {
              "schema": {
                "$ref": "#/components/schemas/Screen.Central.Controllers.SendContentRequest"
              }
            },
            "multipart/form-data": {
              "schema": {
                "$ref": "#/components/schemas/Screen.Central.Controllers.SendContentRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        },
        "security": [
          { }
        ]
      },
      "get": {
        "tags": [
          "AgentDisplayContent"
        ],
        "summary": "Returns the current content state of a display.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/api/v1/agent/displays/broadcast": {
      "post": {
        "tags": [
          "AgentDisplayContent"
        ],
        "summary": "Send HTML content to multiple displays at once.",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Screen.Central.Controllers.BroadcastContentRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/Screen.Central.Controllers.BroadcastContentRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/Screen.Central.Controllers.BroadcastContentRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/api/v1/agent/displays/{id}/html": {
      "get": {
        "tags": [
          "AgentDisplayContent"
        ],
        "summary": "Reads the raw HTML source code currently shown on a display.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "content_type",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/api/v1/agent/displays/pair-by-code": {
      "post": {
        "tags": [
          "AgentDisplayHardware"
        ],
        "summary": "Pair a display using the 6-character code shown on the TV/screen.\nProvide profile_name for new pairing, or target_display_id to rebind an existing display.",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Screen.Central.Controllers.AgentPairByCodeRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/Screen.Central.Controllers.AgentPairByCodeRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/Screen.Central.Controllers.AgentPairByCodeRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/api/v1/agent/displays/{id}/claim": {
      "post": {
        "tags": [
          "AgentDisplayHardware"
        ],
        "summary": "Claim an unclaimed guest or pending display as a personal display.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Screen.Central.Controllers.ClaimDisplayRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/Screen.Central.Controllers.ClaimDisplayRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/Screen.Central.Controllers.ClaimDisplayRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/api/v1/agent/displays/{id}/clear": {
      "post": {
        "tags": [
          "AgentDisplayState"
        ],
        "summary": "Clear a display (reset to idle/system ready).",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/api/v1/agent/displays/{id}/default": {
      "post": {
        "tags": [
          "AgentDisplayState"
        ],
        "summary": "Set default idle content for a display. Accepts HTML only.\nOmit html to clear idle content.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Screen.Central.Controllers.SetIdleContentRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/Screen.Central.Controllers.SetIdleContentRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/Screen.Central.Controllers.SetIdleContentRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/api/v1/agent/displays/{id}/lock": {
      "post": {
        "tags": [
          "AgentDisplayState"
        ],
        "summary": "Lock a display (prevent new content from being sent).",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/api/v1/agent/displays/{id}/unlock": {
      "post": {
        "tags": [
          "AgentDisplayState"
        ],
        "summary": "Unlock a display.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/api/v1/agent/displays/{id}/url": {
      "post": {
        "tags": [
          "AgentDisplayState"
        ],
        "summary": "Load a web page by URL on a display using a full-page iframe.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Screen.Central.Controllers.SendUrlRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/Screen.Central.Controllers.SendUrlRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/Screen.Central.Controllers.SendUrlRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/api/v1/agent/organizations": {
      "get": {
        "tags": [
          "AgentOrganization"
        ],
        "summary": "List all organizations the authenticated user belongs to.",
        "responses": {
          "200": {
            "description": "OK"
          }
        },
        "security": [
          { }
        ]
      },
      "post": {
        "tags": [
          "AgentOrganization"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Screen.Central.Contracts.AgentCreateOrganizationRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/Screen.Central.Contracts.AgentCreateOrganizationRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/Screen.Central.Contracts.AgentCreateOrganizationRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/api/v1/agent/organizations/{orgId}": {
      "get": {
        "tags": [
          "AgentOrganization"
        ],
        "summary": "Get full details of a specific organization.",
        "parameters": [
          {
            "name": "orgId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        },
        "security": [
          { }
        ]
      },
      "patch": {
        "tags": [
          "AgentOrganization"
        ],
        "parameters": [
          {
            "name": "orgId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Screen.Central.Contracts.AgentRenameOrganizationRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/Screen.Central.Contracts.AgentRenameOrganizationRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/Screen.Central.Contracts.AgentRenameOrganizationRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        },
        "security": [
          { }
        ]
      },
      "delete": {
        "tags": [
          "AgentOrganization"
        ],
        "parameters": [
          {
            "name": "orgId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/api/v1/agent/organizations/{orgId}/invite": {
      "post": {
        "tags": [
          "AgentOrganization"
        ],
        "summary": "Create an invite link for an organization.",
        "parameters": [
          {
            "name": "orgId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Screen.Central.Controllers.AgentInviteMemberRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/Screen.Central.Controllers.AgentInviteMemberRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/Screen.Central.Controllers.AgentInviteMemberRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/api/v1/agent/organizations/{orgId}/slots": {
      "post": {
        "tags": [
          "AgentOrganization"
        ],
        "summary": "Allocate display slots from the user's Premium plan to an organization.",
        "parameters": [
          {
            "name": "orgId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Screen.Central.Controllers.AllocateSlotsRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/Screen.Central.Controllers.AllocateSlotsRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/Screen.Central.Controllers.AllocateSlotsRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/api/v1/agent/organizations/{orgId}/displays": {
      "post": {
        "tags": [
          "AgentOrganization"
        ],
        "summary": "Create a new display within an organization.",
        "parameters": [
          {
            "name": "orgId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Screen.Central.Controllers.CreateDisplayRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/Screen.Central.Controllers.CreateDisplayRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/Screen.Central.Controllers.CreateDisplayRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        },
        "security": [
          { }
        ]
      },
      "get": {
        "tags": [
          "AgentOrganization"
        ],
        "parameters": [
          {
            "name": "orgId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/api/v1/agent/organizations/{orgId}/connectivity": {
      "post": {
        "tags": [
          "AgentOrganization"
        ],
        "summary": "Set the default connectivity mode and global whitelist for an organization.\nRequires Org-Admin role and admin scope.",
        "parameters": [
          {
            "name": "orgId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Screen.Central.Controllers.SetOrgConnectivityRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/Screen.Central.Controllers.SetOrgConnectivityRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/Screen.Central.Controllers.SetOrgConnectivityRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/api/v1/agent/organizations/{orgId}/members/{targetUserId}/role": {
      "put": {
        "tags": [
          "AgentOrganization"
        ],
        "parameters": [
          {
            "name": "orgId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "targetUserId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Screen.Central.Contracts.AgentUpdateMemberRoleRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/Screen.Central.Contracts.AgentUpdateMemberRoleRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/Screen.Central.Contracts.AgentUpdateMemberRoleRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/api/v1/agent/organizations/{orgId}/members/{targetUserId}": {
      "delete": {
        "tags": [
          "AgentOrganization"
        ],
        "parameters": [
          {
            "name": "orgId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "targetUserId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/api/v1/agent/license-info": {
      "get": {
        "tags": [
          "AgentOrganization"
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/api/v1/agent/billing-url": {
      "get": {
        "tags": [
          "AgentOrganization"
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/api/v1/agent/organizations/{orgId}/displays/{displayId}": {
      "delete": {
        "tags": [
          "AgentOrganization"
        ],
        "parameters": [
          {
            "name": "orgId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "displayId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/api/v1/agent/organizations/{orgId}/displays/{displayId}/grants/{targetUserId}": {
      "put": {
        "tags": [
          "AgentOrganization"
        ],
        "parameters": [
          {
            "name": "orgId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "displayId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "targetUserId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Screen.Central.Contracts.AgentSetDisplayGrantRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/Screen.Central.Contracts.AgentSetDisplayGrantRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/Screen.Central.Contracts.AgentSetDisplayGrantRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        },
        "security": [
          { }
        ]
      },
      "delete": {
        "tags": [
          "AgentOrganization"
        ],
        "parameters": [
          {
            "name": "orgId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "displayId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "targetUserId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/api/v1/agent/displays/{displayId}/assign-license": {
      "post": {
        "tags": [
          "AgentOrganization"
        ],
        "parameters": [
          {
            "name": "displayId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/api/v1/agent/displays/{displayId}/unassign-license": {
      "post": {
        "tags": [
          "AgentOrganization"
        ],
        "parameters": [
          {
            "name": "displayId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/api/v1/agent/session/request": {
      "post": {
        "tags": [
          "AgentSession"
        ],
        "summary": "Create a new agent session request. Returns a login URL for the user.\nNo authentication required. Rate-limited to 10 requests/minute per IP.",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Screen.Central.Controllers.AgentSessionRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/Screen.Central.Controllers.AgentSessionRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/Screen.Central.Controllers.AgentSessionRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/v1/agent/session/info": {
      "get": {
        "tags": [
          "AgentSession"
        ],
        "summary": "Gets non-sensitive info about a pending session request so the login UI can show consent details.",
        "description": "This endpoint is anonymous, but if an authenticated cookie session is present\nwhen it's called we stamp `AgentSession.InitiatorUserId` while it's still\nnull. That binds the pending session to the browser that first saw the\nconsent screen, so the deny endpoint can later require a matching initiator\nand a different authenticated user who learned the SessionRequestId can no\nlonger tear down someone else's pending agent consent (security-reviewer M-1).",
        "parameters": [
          {
            "name": "id",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/v1/agent/session/status": {
      "get": {
        "tags": [
          "AgentSession"
        ],
        "summary": "Poll the status of a session request.\nReturns the token once the user has logged in.",
        "parameters": [
          {
            "name": "id",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/v1/agent/session/activate": {
      "post": {
        "tags": [
          "AgentSession"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Screen.Central.Controllers.AgentSessionActivateRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/Screen.Central.Controllers.AgentSessionActivateRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/Screen.Central.Controllers.AgentSessionActivateRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/api/v1/agent/session/deny": {
      "post": {
        "tags": [
          "AgentSession"
        ],
        "summary": "Denies a pending agent session. The polling agent will see status \"denied\".\nOnly the user whose session it is (i.e. the user who initiated login) may deny it.",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Screen.Central.Controllers.AgentSessionDenyRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/Screen.Central.Controllers.AgentSessionDenyRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/Screen.Central.Controllers.AgentSessionDenyRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/api/v1/assets": {
      "post": {
        "tags": [
          "Asset"
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        },
        "security": [
          { }
        ]
      },
      "get": {
        "tags": [
          "Asset"
        ],
        "parameters": [
          {
            "name": "offset",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 0
            }
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 50
            }
          },
          {
            "name": "groupId",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "type",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "search",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "default": "uploadedAt"
            }
          },
          {
            "name": "order",
            "in": "query",
            "schema": {
              "type": "string",
              "default": "desc"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        },
        "security": [
          { }
        ]
      },
      "delete": {
        "tags": [
          "Asset"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Screen.Central.Contracts.BulkDeleteAssetsRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/Screen.Central.Contracts.BulkDeleteAssetsRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/Screen.Central.Contracts.BulkDeleteAssetsRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/api/v1/assets/quota": {
      "get": {
        "tags": [
          "Asset"
        ],
        "parameters": [
          {
            "name": "groupId",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/api/v1/assets/{assetId}": {
      "get": {
        "tags": [
          "Asset"
        ],
        "parameters": [
          {
            "name": "assetId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        },
        "security": [
          { }
        ]
      },
      "patch": {
        "tags": [
          "Asset"
        ],
        "parameters": [
          {
            "name": "assetId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Screen.Central.Contracts.UpdateAssetRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/Screen.Central.Contracts.UpdateAssetRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/Screen.Central.Contracts.UpdateAssetRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        },
        "security": [
          { }
        ]
      },
      "delete": {
        "tags": [
          "Asset"
        ],
        "parameters": [
          {
            "name": "assetId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/api/v1/data/{slug}": {
      "put": {
        "tags": [
          "DataSlot"
        ],
        "parameters": [
          {
            "name": "slug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "groupId",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "label",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "type",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        },
        "security": [
          { }
        ]
      },
      "get": {
        "tags": [
          "DataSlot"
        ],
        "parameters": [
          {
            "name": "slug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "groupId",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        },
        "security": [
          { }
        ]
      },
      "delete": {
        "tags": [
          "DataSlot"
        ],
        "parameters": [
          {
            "name": "slug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "groupId",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/api/v1/data/quota": {
      "get": {
        "tags": [
          "DataSlot"
        ],
        "parameters": [
          {
            "name": "groupId",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/api/v1/data": {
      "get": {
        "tags": [
          "DataSlot"
        ],
        "parameters": [
          {
            "name": "offset",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 0
            }
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 50
            }
          },
          {
            "name": "groupId",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "search",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/data/u/{publicSlug}/{slug}.json": {
      "get": {
        "tags": [
          "DataSlotRead"
        ],
        "summary": "Returns the raw JSON content of a personal data slot.\nThe 404 body is uniform regardless of failure reason — no enumeration oracle.",
        "parameters": [
          {
            "name": "publicSlug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "slug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/data/g/{groupSlug}/{slug}.json": {
      "get": {
        "tags": [
          "DataSlotRead"
        ],
        "summary": "Returns the raw JSON content of a group data slot.\nThe 404 body is uniform regardless of failure reason — no enumeration oracle.",
        "parameters": [
          {
            "name": "groupSlug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "slug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/.well-known/mcp-registry-auth": {
      "get": {
        "tags": [
          "OAuth"
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/.well-known/oauth-protected-resource": {
      "get": {
        "tags": [
          "OAuth"
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/.well-known/oauth-protected-resource/mcp": {
      "get": {
        "tags": [
          "OAuth"
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/.well-known/oauth-authorization-server": {
      "get": {
        "tags": [
          "OAuth"
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/oauth/register": {
      "post": {
        "tags": [
          "OAuth"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Screen.Central.Controllers.OAuthDynamicClientRegistrationRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/Screen.Central.Controllers.OAuthDynamicClientRegistrationRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/Screen.Central.Controllers.OAuthDynamicClientRegistrationRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/oauth/authorize": {
      "get": {
        "tags": [
          "OAuth"
        ],
        "parameters": [
          {
            "name": "response_type",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "client_id",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "redirect_uri",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "state",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "code_challenge",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "code_challenge_method",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "scope",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "resource",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "nonce",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/oauth/request": {
      "get": {
        "tags": [
          "OAuth"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/oauth/authorize/complete": {
      "post": {
        "tags": [
          "OAuth"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Screen.Central.Controllers.OAuthAuthorizeCompleteRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/Screen.Central.Controllers.OAuthAuthorizeCompleteRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/Screen.Central.Controllers.OAuthAuthorizeCompleteRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      },
      "get": {
        "tags": [
          "OAuth"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/oauth/authorize/deny": {
      "post": {
        "tags": [
          "OAuth"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Screen.Central.Controllers.OAuthAuthorizeDenyRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/Screen.Central.Controllers.OAuthAuthorizeDenyRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/Screen.Central.Controllers.OAuthAuthorizeDenyRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        },
        "security": [
          { }
        ]
      },
      "get": {
        "tags": [
          "OAuth"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/oauth/token": {
      "post": {
        "tags": [
          "OAuth"
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/oauth/revoke": {
      "post": {
        "tags": [
          "OAuth"
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/oauth/userinfo": {
      "get": {
        "tags": [
          "OAuth"
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/mcp/manifest": {
      "get": {
        "tags": [
          "Screen.Central"
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/.well-known/mcp/server-card.json": {
      "get": {
        "tags": [
          "Screen.Central"
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/status": {
      "get": {
        "tags": [
          "Screen.Central"
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/send": {
      "get": {
        "tags": [
          "Send"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "html",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "b64html",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "token",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "duration",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": -1
            }
          },
          {
            "name": "description",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      },
      "post": {
        "tags": [
          "Send"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": { }
            },
            "text/json": {
              "schema": { }
            },
            "application/*+json": {
              "schema": { }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/send/{displayId}": {
      "post": {
        "tags": [
          "Send"
        ],
        "parameters": [
          {
            "name": "displayId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "duration",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": -1
            }
          },
          {
            "name": "token",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "description",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "text/html": {
              "schema": {
                "type": "object",
                "properties": {
                  "file": {
                    "type": "string",
                    "format": "binary"
                  }
                }
              },
              "encoding": {
                "file": {
                  "style": "form"
                }
              }
            },
            "text/plain": {
              "schema": {
                "type": "object",
                "properties": {
                  "file": {
                    "type": "string",
                    "format": "binary"
                  }
                }
              },
              "encoding": {
                "file": {
                  "style": "form"
                }
              }
            },
            "application/octet-stream": {
              "schema": {
                "type": "object",
                "properties": {
                  "file": {
                    "type": "string",
                    "format": "binary"
                  }
                }
              },
              "encoding": {
                "file": {
                  "style": "form"
                }
              }
            },
            "multipart/form-data": {
              "schema": {
                "type": "object",
                "properties": {
                  "file": {
                    "type": "string",
                    "format": "binary"
                  }
                }
              },
              "encoding": {
                "file": {
                  "style": "form"
                }
              }
            },
            "application/x-www-form-urlencoded": {
              "schema": {
                "type": "object",
                "properties": {
                  "file": {
                    "type": "string",
                    "format": "binary"
                  }
                }
              },
              "encoding": {
                "file": {
                  "style": "form"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "Screen.Central.Contracts.AgentCreateOrganizationRequest": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "nullable": true
          },
          "type": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Screen.Central.Contracts.AgentRenameOrganizationRequest": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Screen.Central.Contracts.AgentSetDisplayGrantRequest": {
        "type": "object",
        "properties": {
          "accessLevel": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Screen.Central.Contracts.AgentUpdateMemberRoleRequest": {
        "type": "object",
        "properties": {
          "role": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Screen.Central.Contracts.BulkDeleteAssetsRequest": {
        "type": "object",
        "properties": {
          "assetIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Screen.Central.Contracts.UpdateAssetRequest": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "nullable": true
          },
          "description": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Screen.Central.Controllers.AgentController.AgentMagicLinkRequest": {
        "required": [
          "email",
          "sessionId"
        ],
        "type": "object",
        "properties": {
          "email": {
            "maxLength": 254,
            "minLength": 0,
            "type": "string",
            "format": "email"
          },
          "sessionId": {
            "maxLength": 64,
            "minLength": 0,
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "Screen.Central.Controllers.AgentController.CreateApiKeyRequest": {
        "required": [
          "name",
          "scope"
        ],
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 200,
            "minLength": 0,
            "type": "string"
          },
          "groupId": {
            "maxLength": 64,
            "minLength": 0,
            "type": "string",
            "nullable": true
          },
          "scope": {
            "maxLength": 64,
            "minLength": 0,
            "type": "string"
          },
          "expiresInDays": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "permissions": {
            "type": "string",
            "description": "Granular permission: 'read', 'write', or 'read_write' (default).\nApplied orthogonally to Screen.Central.Controllers.AgentController.CreateApiKeyRequest.Scope.",
            "nullable": true
          },
          "allowedSlotSlugs": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Optional list of data-slot slugs the key is allowed to touch.\nEmpty / null means \"no slot restriction\".",
            "nullable": true
          },
          "allowedDisplayIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Optional list of display profile IDs the key is allowed to touch.\nEmpty / null means \"no display restriction\".",
            "nullable": true
          },
          "capabilities": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Optional list of fine-grained capability identifiers. Valid values\nare the `Cap*` constants on\nScreen.Central.Infrastructure.ApiKeyScopeEvaluator:\n`slot.read`, `slot.write`, `display.read`,\n`display.send`, `display.manage`. Null/empty means \"no\ncapability restriction\". Capabilities are validated against\nScreen.Central.Controllers.AgentController.CreateApiKeyRequest.Permissions for coherence (e.g. a `read` key\ncannot carry a `slot.write` capability).",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Screen.Central.Controllers.AgentInviteMemberRequest": {
        "required": [
          "role"
        ],
        "type": "object",
        "properties": {
          "role": {
            "maxLength": 64,
            "minLength": 0,
            "type": "string"
          },
          "email": {
            "maxLength": 254,
            "minLength": 0,
            "type": "string",
            "format": "email",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Screen.Central.Controllers.AgentPairByCodeRequest": {
        "required": [
          "code"
        ],
        "type": "object",
        "properties": {
          "code": {
            "maxLength": 20,
            "minLength": 0,
            "type": "string"
          },
          "profileName": {
            "maxLength": 200,
            "minLength": 0,
            "type": "string",
            "nullable": true
          },
          "targetDisplayId": {
            "maxLength": 64,
            "minLength": 0,
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Screen.Central.Controllers.AgentSessionActivateRequest": {
        "type": "object",
        "properties": {
          "sessionRequestId": {
            "type": "string",
            "nullable": true
          },
          "grantedScope": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Screen.Central.Controllers.AgentSessionDenyRequest": {
        "type": "object",
        "properties": {
          "sessionRequestId": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Screen.Central.Controllers.AgentSessionRequest": {
        "type": "object",
        "properties": {
          "agentIdentifier": {
            "maxLength": 256,
            "minLength": 0,
            "type": "string",
            "nullable": true
          },
          "scope": {
            "maxLength": 256,
            "minLength": 0,
            "type": "string",
            "nullable": true
          },
          "requestedScope": {
            "maxLength": 256,
            "minLength": 0,
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Screen.Central.Controllers.AllocateSlotsRequest": {
        "type": "object",
        "properties": {
          "slots": {
            "maximum": 10000,
            "minimum": 0,
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "Screen.Central.Controllers.BroadcastContentRequest": {
        "type": "object",
        "properties": {
          "displayIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "all": {
            "type": "boolean"
          },
          "html": {
            "type": "string",
            "nullable": true
          },
          "base64Html": {
            "type": "string",
            "nullable": true
          },
          "description": {
            "maxLength": 2000,
            "minLength": 0,
            "type": "string",
            "nullable": true
          },
          "contentDescription": {
            "maxLength": 2000,
            "minLength": 0,
            "type": "string",
            "nullable": true
          },
          "duration": {
            "maximum": 86400,
            "minimum": 1,
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "Screen.Central.Controllers.ClaimDisplayRequest": {
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 200,
            "minLength": 0,
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Screen.Central.Controllers.ConfigureDisplayRequest": {
        "type": "object",
        "properties": {
          "allowCamera": {
            "type": "boolean",
            "nullable": true
          },
          "allowMicrophone": {
            "type": "boolean",
            "nullable": true
          },
          "allowGeolocation": {
            "type": "boolean",
            "nullable": true
          },
          "showMouseCursor": {
            "type": "boolean",
            "nullable": true
          },
          "showBadgeOverlay": {
            "type": "boolean",
            "nullable": true
          },
          "watermarkPosition": {
            "maxLength": 64,
            "minLength": 0,
            "type": "string",
            "nullable": true
          },
          "connectivityMode": {
            "maxLength": 64,
            "minLength": 0,
            "type": "string",
            "nullable": true
          },
          "whitelist": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "strictWhitelist": {
            "type": "boolean",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Screen.Central.Controllers.CreateDisplayRequest": {
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 200,
            "minLength": 0,
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Screen.Central.Controllers.OAuthAuthorizeCompleteRequest": {
        "type": "object",
        "properties": {
          "requestId": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Screen.Central.Controllers.OAuthAuthorizeDenyRequest": {
        "type": "object",
        "properties": {
          "requestId": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Screen.Central.Controllers.OAuthDynamicClientRegistrationRequest": {
        "type": "object",
        "properties": {
          "redirectUris": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "clientName": {
            "type": "string",
            "nullable": true
          },
          "grantTypes": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "responseTypes": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "tokenEndpointAuthMethod": {
            "type": "string",
            "nullable": true
          },
          "scope": {
            "type": "string",
            "nullable": true
          },
          "applicationType": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": { }
      },
      "Screen.Central.Controllers.SendContentRequest": {
        "type": "object",
        "properties": {
          "html": {
            "type": "string",
            "nullable": true
          },
          "base64Html": {
            "type": "string",
            "nullable": true
          },
          "description": {
            "maxLength": 2000,
            "minLength": 0,
            "type": "string",
            "nullable": true
          },
          "contentDescription": {
            "maxLength": 2000,
            "minLength": 0,
            "type": "string",
            "nullable": true
          },
          "duration": {
            "maximum": 86400,
            "minimum": 1,
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "Screen.Central.Controllers.SendUrlRequest": {
        "type": "object",
        "properties": {
          "url": {
            "maxLength": 2048,
            "minLength": 0,
            "type": "string",
            "nullable": true
          },
          "description": {
            "maxLength": 2000,
            "minLength": 0,
            "type": "string",
            "nullable": true
          },
          "contentDescription": {
            "maxLength": 2000,
            "minLength": 0,
            "type": "string",
            "nullable": true
          },
          "duration": {
            "maximum": 86400,
            "minimum": 1,
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "Screen.Central.Controllers.SetIdleContentRequest": {
        "type": "object",
        "properties": {
          "html": {
            "type": "string",
            "nullable": true
          },
          "contentDescription": {
            "maxLength": 2000,
            "minLength": 0,
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Screen.Central.Controllers.SetOrgConnectivityRequest": {
        "type": "object",
        "properties": {
          "defaultConnectivityMode": {
            "maxLength": 64,
            "minLength": 0,
            "type": "string",
            "nullable": true
          },
          "globalWhitelist": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Screen.Central.Controllers.UpdateDisplayRequest": {
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 200,
            "minLength": 0,
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      }
    },
    "securitySchemes": {
      "Bearer": {
        "type": "http",
        "description": "Bearer token returned by the agent session flow.",
        "scheme": "Bearer",
        "bearerFormat": "JWT"
      }
    }
  },
  "tags": [
    {
      "name": "Agent"
    },
    {
      "name": "AgentDisplay"
    },
    {
      "name": "AgentDisplayConfig"
    },
    {
      "name": "AgentDisplayContent"
    },
    {
      "name": "AgentDisplayHardware"
    },
    {
      "name": "AgentDisplayState"
    },
    {
      "name": "AgentOrganization"
    },
    {
      "name": "AgentSession"
    },
    {
      "name": "Asset"
    },
    {
      "name": "DataSlot"
    },
    {
      "name": "DataSlotRead"
    },
    {
      "name": "OAuth"
    },
    {
      "name": "Screen.Central"
    },
    {
      "name": "Send"
    }
  ]
}