{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/dropto-run/json-schema/dropto-run-site-settings-response-schema.json",
  "title": "SiteSettingsResponse",
  "description": "Response of `PATCH /sites/{siteId}`.",
  "x-generated": "2026-11-06",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/dropto-run-openapi.json#/components/schemas/SiteSettingsResponse",
  "properties": {
    "commentAudience": {
      "description": "Who the owner chose may comment — `Off`, `Invited` or `Anyone`. The stored choice, which\ntakes effect only where the plan and the viewing mode allow it.",
      "type": "string"
    },
    "docsMode": {
      "description": "The setting as it now stands.",
      "type": "boolean"
    },
    "expiresAt": {
      "description": "When the site is now scheduled to come down, or null when it has no schedule. Echoed because the\nrequest sends a string and this is the instant it parsed to.",
      "format": "date-time",
      "type": [
        "null",
        "string"
      ]
    },
    "expiryAction": {
      "description": "What that schedule will do. Reported even when ExpiresAt is null, where it is the\nchoice a future date would inherit.",
      "type": "string"
    },
    "folderId": {
      "description": "The folder the site is now filed in, or null when it sits at the root. Echoed so a client that sent\n`\"root\"` reads back the null it produced rather than the token it sent.",
      "type": [
        "null",
        "string"
      ]
    },
    "formsEnabled": {
      "description": "Whether this site accepts form submissions. The site's own switch, which the tier has to permit\nbefore the edge honours it — so a site on a tier without forms reports false here and cannot be set\nto true.",
      "type": "boolean"
    },
    "invitedOnly": {
      "description": "Whether only the people on the site's list may now see it. Never true together with\nPasswordProtected.",
      "type": "boolean"
    },
    "live": {
      "description": "Whether the hostname mapping was rewritten. False for a site that has never published, where the\nsetting is stored and takes effect with its first deploy.",
      "type": "boolean"
    },
    "modeIsManual": {
      "description": "Whether the serving mode shown here was chosen by the owner rather than detected from the files.\n\nReported so the dashboard can say which it is. A control that renders a detected value identically to\na chosen one tells the owner they picked something they never picked, and hides the one fact that\nexplains why the mode changed after a deploy — or why it stopped changing.",
      "type": "boolean"
    },
    "name": {
      "description": "The name as it now stands, or null when the site has none and the dashboard should show its\nsubdomain. Echoed back because cleaning can change what was sent.",
      "type": [
        "null",
        "string"
      ]
    },
    "passwordProtected": {
      "description": "Whether the site now requires a password. The password itself is never returned — only the hash is\nstored, so there is nothing to return even if it were wanted.",
      "type": "boolean"
    },
    "publicDocumentCounts": {
      "description": "Whether readers see each document's views and downloads.",
      "type": "boolean"
    },
    "siteId": {
      "description": "ULID of the site.",
      "type": "string"
    },
    "spaMode": {
      "description": "The setting as it now stands.",
      "type": "boolean"
    }
  },
  "required": [
    "siteId",
    "name",
    "spaMode",
    "docsMode",
    "modeIsManual",
    "live",
    "passwordProtected",
    "expiresAt",
    "expiryAction",
    "formsEnabled",
    "folderId",
    "invitedOnly",
    "commentAudience",
    "publicDocumentCounts"
  ],
  "type": "object"
}