{
 "openapi": "3.1.0",
 "info": {
  "title": "Scale Intelligence API",
  "version": "1.0.0-design",
  "description": "Generated from the tool register and the type register; never edited by hand. Every operation is POST with a typed body, four envelope headers, one answer shape and one error shape (specification 10). Register hash 0476e35e6e275db5.",
  "x-register-hash": "0476e35e6e275db5cc06c238bc65f93c6070e2723b94b2b8dd78a66ec5306c3a"
 },
 "servers": [
  {
   "url": "https://api.scaleintelligence.co",
   "description": "the platform"
  },
  {
   "url": "http://127.0.0.1:{port}/",
   "description": "the installed app's local server, the same routes",
   "variables": {
    "port": {
     "default": "7411"
    }
   }
  }
 ],
 "security": [
  {
   "bearer": []
  }
 ],
 "tags": [
  {
   "name": "session",
   "description": "who the caller is, what they may do, and signing in and out"
  },
  {
   "name": "ask",
   "description": "questions of the record: by predicate with the preview, typed, in read-only SQL, by semantic similarity, by neighbours, as of two dates"
  },
  {
   "name": "read",
   "description": "one kind at a time: entities, leads, signals, monitors, the map, markets, moves, the ledger, documents, registers"
  },
  {
   "name": "view",
   "description": "the ops console: stocks, journeys, what waits, pairings, capabilities"
  },
  {
   "name": "act",
   "description": "changes under a grant, each with a key from its input: monitors, plays, moves, actions, leads, the brand's graph, documents, memory"
  },
  {
   "name": "work",
   "description": "long work as tasks on the work plane: status, cancel, my running work, named procedures"
  },
  {
   "name": "harness",
   "description": "handing a job to the platform's own agent, which runs the loop and reports as a task"
  },
  {
   "name": "files",
   "description": "the local server's files: download, upload, list, the workspace"
  },
  {
   "name": "economics",
   "description": "the return to a buyer from an offering: the business models, an estimate with its interval, the benchmarks, the price ladder, a pricing study, a reading offered for a contact"
  }
 ],
 "paths": {
  "/v1/session/my_grants": {
   "post": {
    "operationId": "si_session_my_grants",
    "summary": "the caller, and a place → its permissions there, after all three narrowings",
    "description": "From specification 03, what may this caller do. The call needs the user rung under a token with the read grant, and it is served by the platform.",
    "tags": [
     "session"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/GrantsInput"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "[GrantRef]"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": false,
    "x-rung": "user",
    "x-grant": "read",
    "x-where": "platform",
    "x-specification": {
     "number": "03",
     "title": "People, scope and rights"
    }
   }
  },
  "/v1/session/my_scopes": {
   "post": {
    "operationId": "si_session_my_scopes",
    "summary": "the caller → the scopes it reads, set on the database transaction before any query runs",
    "description": "From specification 03, what may this caller read. The call needs the user rung under a token with the read grant, and it is served by the platform.",
    "tags": [
     "session"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/Nothing"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "[Scope]"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": false,
    "x-rung": "user",
    "x-grant": "read",
    "x-where": "platform",
    "x-specification": {
     "number": "03",
     "title": "People, scope and rights"
    }
   }
  },
  "/v1/session/sign_out": {
   "post": {
    "operationId": "si_session_sign_out",
    "summary": "the session or the user → nothing",
    "description": "From specification 03, end a session, or every session of a user. The call needs the user rung under a token with the read grant, and it is served by either, by the size bound.",
    "tags": [
     "session"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/SignOutInput"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "Nothing"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": false,
    "x-rung": "user",
    "x-grant": "read",
    "x-where": "either",
    "x-specification": {
     "number": "03",
     "title": "People, scope and rights"
    }
   }
  },
  "/v1/session/whoami": {
   "post": {
    "operationId": "si_session_whoami",
    "summary": "a token, a key, or a run's identity → the caller, with its scopes and its access scopes",
    "description": "From specification 03, who is calling, which is the API gateway's work. The call needs the user rung under a token with the read grant, and it is served by the platform.",
    "tags": [
     "session"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/WhoAmIInput"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "Caller"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": false,
    "x-rung": "user",
    "x-grant": "read",
    "x-where": "platform",
    "x-specification": {
     "number": "03",
     "title": "People, scope and rights"
    }
   }
  },
  "/v1/session/sign_in": {
   "post": {
    "operationId": "si_session_sign_in",
    "summary": "nothing, or the tenant to sign in to → the way the browser was opened, then the caller as a view once the code came back; the refresh token goes to the keychain and never to the caller",
    "description": "From the local server's own. The call needs the user rung under a token with the read grant, and it is served by the installed app.",
    "tags": [
     "session"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/SignInInput"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "Caller"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": false,
    "x-rung": "user",
    "x-grant": "read",
    "x-where": "app",
    "x-specification": {
     "number": "app",
     "title": ""
    }
   }
  },
  "/v1/session/cache": {
   "post": {
    "operationId": "si_session_cache",
    "summary": "nothing, or a call to forget → what the app holds from earlier answers, by call and date, and when each expires",
    "description": "From the local server's own. The call needs the user rung under a token with the read grant, and it is served by the installed app.",
    "tags": [
     "session"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/CacheInput"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "CacheView"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": false,
    "x-rung": "user",
    "x-grant": "read",
    "x-where": "app",
    "x-specification": {
     "number": "app",
     "title": ""
    }
   }
  },
  "/v1/ask/facts": {
   "post": {
    "operationId": "si_ask_facts",
    "summary": "a unit or a population, the date it was true, and the date we knew it, as two parameters. Both default to now → the facts, and the tier that gave them",
    "description": "From specification 04, read facts as of. The call needs the strategy rung under a token with the ask grant, and it is served by either, by the size bound.",
    "tags": [
     "ask"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/FactsInput"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "FactsAnswer"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": false,
    "x-rung": "strategy",
    "x-grant": "ask",
    "x-where": "either",
    "x-specification": {
     "number": "04",
     "title": "The record"
    }
   }
  },
  "/v1/ask/get_content": {
   "post": {
    "operationId": "si_ask_get_content",
    "summary": "a `ContentRequest` → a `ContentResponse`, the page in bronze",
    "description": "From specification 18, get content. The call needs the strategy rung under a token with the ask grant, and it is served by either, by the size bound.",
    "tags": [
     "ask"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/ContentRequest"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "ContentResponse"
        }
       }
      }
     },
     "202": {
      "description": "a long step: the task, reported through the work family",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Task"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": true,
    "x-rung": "strategy",
    "x-grant": "ask",
    "x-where": "either",
    "x-specification": {
     "number": "18",
     "title": "The acquisition system and the connector standard"
    }
   }
  },
  "/v1/ask/groups": {
   "post": {
    "operationId": "si_ask_groups",
    "summary": "a scope, the two dates, and the resolution of the cut → the cluster response cards: each group with the share each layer of likeness contributed, its top communities, words and domains, its size and trend by month, and the proxies that placed its members",
    "description": "From specification 04, read the groups. The call needs the strategy rung under a token with the ask grant, and it is served by either, by the size bound.",
    "tags": [
     "ask"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/GroupsInput"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "[ClusterCard]"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": false,
    "x-rung": "strategy",
    "x-grant": "ask",
    "x-where": "either",
    "x-specification": {
     "number": "04",
     "title": "The record"
    }
   }
  },
  "/v1/ask/judge_fit": {
   "post": {
    "operationId": "si_ask_judge_fit",
    "summary": "Judges one entity against a buyer profile, and against a brand whose offerings' fit is in question → The answer gives the fit with each criterion and its highlights, the temperature with its reason, and the verdict. It makes no lead",
    "description": "From specification 08, judge a fit. The call needs the strategy rung under a token with the ask grant, and it is served by the platform.",
    "tags": [
     "ask"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/JudgeFitInput"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "BuyerFitVerdict"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": false,
    "x-rung": "strategy",
    "x-grant": "ask",
    "x-where": "platform",
    "x-specification": {
     "number": "08",
     "title": "Leads and the team"
    }
   }
  },
  "/v1/ask/keep_question": {
   "post": {
    "operationId": "si_ask_keep_question",
    "summary": "the question and its scope → a saved question",
    "description": "From specification 11, keep a question. The call needs the user rung under a token with the ask grant, and it is served by either, by the size bound.",
    "tags": [
     "ask"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/KeepQuestionInput"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "SavedQuestion"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": false,
    "x-rung": "user",
    "x-grant": "ask",
    "x-where": "either",
    "x-specification": {
     "number": "11",
     "title": "The ops console"
    }
   }
  },
  "/v1/ask/neighbours": {
   "post": {
    "operationId": "si_ask_neighbours",
    "summary": "an entity, one kind of connection, and the two dates → the members, one hop away, and whether the cap was reached",
    "description": "From specification 04, neighbours. The call needs the strategy rung under a token with the ask grant, and it is served by either, by the size bound.",
    "tags": [
     "ask"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/NeighboursInput"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "NeighboursAnswer"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": false,
    "x-rung": "strategy",
    "x-grant": "ask",
    "x-where": "either",
    "x-specification": {
     "number": "04",
     "title": "The record"
    }
   }
  },
  "/v1/ask/preview": {
   "post": {
    "operationId": "si_ask_preview",
    "summary": "a predicate or its hash, the place, the window, the speeds wanted, and the caller with the surface it calls from → the typed answer of section 2.3, as it fills",
    "description": "From specification 06, preview. The call needs the strategy rung under a token with the ask grant, and it is served by either, by the size bound.",
    "tags": [
     "ask"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/PreviewInput"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "PreviewAnswer"
        }
       }
      }
     },
     "202": {
      "description": "a long step: the task, reported through the work family",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Task"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": true,
    "x-rung": "strategy",
    "x-grant": "ask",
    "x-where": "either",
    "x-specification": {
     "number": "06",
     "title": "The rules engine"
    }
   }
  },
  "/v1/ask/propose_template": {
   "post": {
    "operationId": "si_ask_propose_template",
    "summary": "a `ProposeTemplateInput` → a draft template with fields and evidence spans for the person to confirm",
    "description": "From specification 18, propose a scrape template from a sample page. The call needs the strategy rung under a token with the ask grant, and it is served by either, by the size bound.",
    "tags": [
     "ask"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/ProposeTemplateInput"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "ExtractionTemplate"
        }
       }
      }
     },
     "202": {
      "description": "a long step: the task, reported through the work family",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Task"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": true,
    "x-rung": "strategy",
    "x-grant": "ask",
    "x-where": "either",
    "x-specification": {
     "number": "18",
     "title": "The acquisition system and the connector standard"
    }
   }
  },
  "/v1/ask/read_source": {
   "post": {
    "operationId": "si_ask_read_source",
    "summary": "the installed connector, the kind, a cursor → a page of source objects, the next cursor, the cells credited",
    "description": "From specification 18, run a kind of reading. The call needs the strategy rung under a token with the ask grant, and it is served by either, by the size bound.",
    "tags": [
     "ask"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/ReadSourceInput"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "ReadSourcePage"
        }
       }
      }
     },
     "202": {
      "description": "a long step: the task, reported through the work family",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Task"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": true,
    "x-rung": "strategy",
    "x-grant": "ask",
    "x-where": "either",
    "x-specification": {
     "number": "18",
     "title": "The acquisition system and the connector standard"
    }
   }
  },
  "/v1/ask/saved_view": {
   "post": {
    "operationId": "si_ask_saved_view",
    "summary": "the view. Or the view and a caller → the definition. Or its rows, with when they were built",
    "description": "From specification 06, keep, read a saved view. The call needs the strategy rung under a token with the ask grant, and it is served by either, by the size bound.",
    "tags": [
     "ask"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/SavedViewInput"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "SavedViewAnswer"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": false,
    "x-rung": "strategy",
    "x-grant": "ask",
    "x-where": "either",
    "x-specification": {
     "number": "06",
     "title": "The rules engine"
    }
   }
  },
  "/v1/ask/scrape": {
   "post": {
    "operationId": "si_ask_scrape",
    "summary": "a `ScrapeRequest` → a `ScrapeResult`, the rows as source objects with their evidence spans",
    "description": "From specification 18, scrape. The call needs the strategy rung under a token with the ask grant, and it is served by either, by the size bound.",
    "tags": [
     "ask"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/ScrapeRequest"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "ScrapeResult"
        }
       }
      }
     },
     "202": {
      "description": "a long step: the task, reported through the work family",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Task"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": true,
    "x-rung": "strategy",
    "x-grant": "ask",
    "x-where": "either",
    "x-specification": {
     "number": "18",
     "title": "The acquisition system and the connector standard"
    }
   }
  },
  "/v1/ask/search": {
   "post": {
    "operationId": "si_ask_search",
    "summary": "a `SearchRequest` → `SearchResult` rows, streamed as engines answer, credited to cells",
    "description": "From specification 18, search. The call needs the strategy rung under a token with the ask grant, and it is served by either, by the size bound.",
    "tags": [
     "ask"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/SearchRequest"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "[SearchResult]"
        }
       }
      }
     },
     "202": {
      "description": "a long step: the task, reported through the work family",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Task"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": true,
    "x-rung": "strategy",
    "x-grant": "ask",
    "x-where": "either",
    "x-specification": {
     "number": "18",
     "title": "The acquisition system and the connector standard"
    }
   }
  },
  "/v1/ask/semantic_search": {
   "post": {
    "operationId": "si_ask_semantic_search",
    "summary": "a text or a subject's vector, the model, a floor and a population → the units above the floor. With them: the model, the floor, the measured recall of quantized embeddings, and the tier",
    "description": "From specification 04, semantic search. The call needs the strategy rung under a token with the ask grant, and it is served by the platform.",
    "tags": [
     "ask"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/SemanticSearchInput"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "SemanticSearchAnswer"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": false,
    "x-rung": "strategy",
    "x-grant": "ask",
    "x-where": "platform",
    "x-specification": {
     "number": "04",
     "title": "The record"
    }
   }
  },
  "/v1/ask/sql": {
   "post": {
    "operationId": "si_ask_sql",
    "summary": "a query, in a strategy → rows, with how many and whether a bound was reached",
    "description": "From specification 09, ask the workbench. The call needs the strategy rung under a token with the ask grant, and it is served by either, by the size bound.",
    "tags": [
     "ask"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/SqlInput"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "SqlAnswer"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": false,
    "x-rung": "strategy",
    "x-grant": "ask",
    "x-where": "either",
    "x-specification": {
     "number": "09",
     "title": "The harness"
    }
   }
  },
  "/v1/ask/local": {
   "post": {
    "operationId": "si_ask_local",
    "summary": "a question in one of the ask tools' owning types, over the files the app may read → the card, answered by the app's own engine over its tenant's files, with the same foot",
    "description": "From the local server's own. The call needs the strategy rung under a token with the ask grant, and it is served by the installed app.",
    "tags": [
     "ask"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/LocalInput"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "Card"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": false,
    "x-rung": "strategy",
    "x-grant": "ask",
    "x-where": "app",
    "x-specification": {
     "number": "app",
     "title": ""
    }
   }
  },
  "/v1/read/attributes": {
   "post": {
    "operationId": "si_read_attributes",
    "summary": "a population and, where wanted, a window → the attributes its units carry, each with its plain name, the units that carry it, the value type read and up to three examples, most carried first, with the units read and in, and the partial answer when the budget ran out",
    "description": "From specification 06, the attributes of a population. The call needs the strategy rung under a token with the read grant, and it is served by the platform.",
    "tags": [
     "read"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/AttributesInput"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "PopulationAttributes"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": false,
    "x-rung": "strategy",
    "x-grant": "read",
    "x-where": "platform",
    "x-specification": {
     "number": "06",
     "title": "The rules engine"
    }
   }
  },
  "/v1/read/audience_map": {
   "post": {
    "operationId": "si_read_audience_map",
    "summary": "a brand, two facets or a facet and a community, the window → the shared subjects, the share, the lift, the negative control that bounds it, and the size as bounds",
    "description": "From specification 12, read the audience map. The call needs the brand rung under a token with the read grant, and it is served by either, by the size bound.",
    "tags": [
     "read"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/AudienceMapInput"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "AudienceMapCell"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": false,
    "x-rung": "brand",
    "x-grant": "read",
    "x-where": "either",
    "x-specification": {
     "number": "12",
     "title": "The market as it is held"
    }
   }
  },
  "/v1/read/basket": {
   "post": {
    "operationId": "si_read_basket",
    "summary": "the basket, and one subject, a set of subjects, a scope predicate or a cut into groups, with the window → the basket reading as a fact: memberships with their scale of association and likelihood for one subject; population readings and co-membership for a set; proxy against group with lift and control for groups",
    "description": "From specification 06, read a basket. The call needs the strategy rung under a token with the read grant, and it is served by either, by the size bound.",
    "tags": [
     "read"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/BasketReadInput"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "BasketReading"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": false,
    "x-rung": "strategy",
    "x-grant": "read",
    "x-where": "either",
    "x-specification": {
     "number": "06",
     "title": "The rules engine"
    }
   }
  },
  "/v1/read/board": {
   "post": {
    "operationId": "si_read_board",
    "summary": "the board and a period → the board with every tile's numbers, each with its basis and its population",
    "description": "From specification 11, read a board. The call needs the tenant rung under a token with the read grant, and it is served by the platform.",
    "tags": [
     "read"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/BoardReadInput"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "BoardAnswer"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": false,
    "x-rung": "tenant",
    "x-grant": "read",
    "x-where": "platform",
    "x-specification": {
     "number": "11",
     "title": "The ops console"
    }
   }
  },
  "/v1/read/brand_design_system": {
   "post": {
    "operationId": "si_read_brand_design_system",
    "summary": "the brand, and a version, else the newest → the design system as it stands, with every basis",
    "description": "From specification 12, read a brand's design system. The call needs the brand rung under a token with the read grant, and it is served by either, by the size bound.",
    "tags": [
     "read"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/BrandDesignSystemInput"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "BrandDesignSystem"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": false,
    "x-rung": "brand",
    "x-grant": "read",
    "x-where": "either",
    "x-specification": {
     "number": "12",
     "title": "The market as it is held"
    }
   }
  },
  "/v1/read/brand_design_system_changes": {
   "post": {
    "operationId": "si_read_brand_design_system_changes",
    "summary": "the brand and two versions, else the two newest → every value that differs, by path, with the basis on each side, and the counts",
    "description": "From specification 12, what changed in a brand's design system. The call needs the brand rung under a token with the read grant, and it is served by either, by the size bound.",
    "tags": [
     "read"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/BrandDesignSystemChangesInput"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "BrandDesignSystemDiff"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": false,
    "x-rung": "brand",
    "x-grant": "read",
    "x-where": "either",
    "x-specification": {
     "number": "12",
     "title": "The market as it is held"
    }
   }
  },
  "/v1/read/browse_view": {
   "post": {
    "operationId": "si_read_browse_view",
    "summary": "a `BrowseViewInput` → one frame of the page as the person sees it, with its size and address, for a dashboard that shows the session live and forwards the person's clicks and words as steps",
    "description": "From specification 18, read a browsing session's view. The call needs the strategy rung under a token with the read grant, and it is served by either, by the size bound.",
    "tags": [
     "read"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/BrowseViewInput"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "BrowseView"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": false,
    "x-rung": "strategy",
    "x-grant": "read",
    "x-where": "either",
    "x-specification": {
     "number": "18",
     "title": "The acquisition system and the connector standard"
    }
   }
  },
  "/v1/read/candidates": {
   "post": {
    "operationId": "si_read_candidates",
    "summary": "Reads the candidates of one brand, narrowed by a buyer profile or by a place → Each candidate arrives with the signals gathered about it, the rung it has reached, and what it still lacks to qualify",
    "description": "From specification 08, candidates. One candidate. The call needs the strategy rung under a token with the read grant, and it is served by the platform.",
    "tags": [
     "read"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/CandidatesInput"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "[Candidate]"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": false,
    "x-rung": "strategy",
    "x-grant": "read",
    "x-where": "platform",
    "x-specification": {
     "number": "08",
     "title": "Leads and the team"
    }
   }
  },
  "/v1/read/capture_health": {
   "post": {
    "operationId": "si_read_capture_health",
    "summary": "a platform and a window, or nothing → captures by platform in the window against the window before, with a verdict",
    "description": "From specification 24, read the health of capture. The call needs the user rung under a token with the read grant, and it is served by the platform.",
    "tags": [
     "read"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/CaptureHealthInput"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "CaptureHealth"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": false,
    "x-rung": "user",
    "x-grant": "read",
    "x-where": "platform",
    "x-specification": {
     "number": "24",
     "title": "The capture extension: a person's own browser as a capture surface"
    }
   }
  },
  "/v1/read/capture_rules": {
   "post": {
    "operationId": "si_read_capture_rules",
    "summary": "a platform, or nothing → the rules with each platform's readiness",
    "description": "From specification 24, read my capture rules. The call needs the user rung under a token with the read grant, and it is served by the platform.",
    "tags": [
     "read"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/CaptureRulesInput"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "[CaptureRule]"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": false,
    "x-rung": "user",
    "x-grant": "read",
    "x-where": "platform",
    "x-specification": {
     "number": "24",
     "title": "The capture extension: a person's own browser as a capture surface"
    }
   }
  },
  "/v1/read/catalogue": {
   "post": {
    "operationId": "si_read_catalogue",
    "summary": "a tenant or a brand → every source and connector with its kinds of reading and action, its state, the identity it needs, its cost, its rights, its coverage and its health",
    "description": "From specification 18, read the catalogue. The call needs the tenant rung under a token with the read grant, and it is served by the platform.",
    "tags": [
     "read"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/CatalogueInput"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "[SourceCatalogueEntry]"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": false,
    "x-rung": "tenant",
    "x-grant": "read",
    "x-where": "platform",
    "x-specification": {
     "number": "18",
     "title": "The acquisition system and the connector standard"
    }
   }
  },
  "/v1/read/chain": {
   "post": {
    "operationId": "si_read_chain",
    "summary": "a brand → its roles, its handovers and each handover's count with its instrument",
    "description": "From specification 12, read the chain. The call needs the brand rung under a token with the read grant, and it is served by the platform.",
    "tags": [
     "read"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/MapInput"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "Chain"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": false,
    "x-rung": "brand",
    "x-grant": "read",
    "x-where": "platform",
    "x-specification": {
     "number": "12",
     "title": "The market as it is held"
    }
   }
  },
  "/v1/read/compare": {
   "post": {
    "operationId": "si_read_compare",
    "summary": "two brands, a question from the closed list of comparisons → two summaries over one structure, each with its coverage",
    "description": "From specification 12, compare two brands. The call needs the brand rung under a token with the read grant, and it is served by the platform.",
    "tags": [
     "read"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/CompareInput"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "Comparison"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": false,
    "x-rung": "brand",
    "x-grant": "read",
    "x-where": "platform",
    "x-specification": {
     "number": "12",
     "title": "The market as it is held"
    }
   }
  },
  "/v1/read/connectors": {
   "post": {
    "operationId": "si_read_connectors",
    "summary": "a tenant or a brand → every kind of reading and of action, by source, with its state, the identity it needs, its cost and its rights",
    "description": "From specification 07, read what can be installed. The call needs the tenant rung under a token with the read grant, and it is served by the platform.",
    "tags": [
     "read"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/ConnectorsInput"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "ConnectorOffer"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": false,
    "x-rung": "tenant",
    "x-grant": "read",
    "x-where": "platform",
    "x-specification": {
     "number": "07",
     "title": "Sources and acquisition"
    }
   }
  },
  "/v1/read/consent": {
   "post": {
    "operationId": "si_read_consent",
    "summary": "the person or tenant, and the use → a fact. Or yes or no, with the fact that decides",
    "description": "From specification 03, record or withdraw consent. Is there consent. The call needs the tenant rung under a token with the read grant, and it is served by the platform.",
    "tags": [
     "read"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/ConsentInput"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "ConsentAnswer"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": false,
    "x-rung": "tenant",
    "x-grant": "read",
    "x-where": "platform",
    "x-specification": {
     "number": "03",
     "title": "People, scope and rights"
    }
   }
  },
  "/v1/read/coverage": {
   "post": {
    "operationId": "si_read_coverage",
    "summary": "a cell, or a scope of entities with a window → what has been read, when and how deep, in the three positions",
    "description": "From specification 07, read coverage. The call needs the brand rung under a token with the read grant, and it is served by the platform.",
    "tags": [
     "read"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/CoverageInput"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "Coverage"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": false,
    "x-rung": "brand",
    "x-grant": "read",
    "x-where": "platform",
    "x-specification": {
     "number": "07",
     "title": "Sources and acquisition"
    }
   }
  },
  "/v1/read/coverage_by_cell": {
   "post": {
    "operationId": "si_read_coverage_by_cell",
    "summary": "a source, or a scope with a window → measured, never measured with the reason, withheld",
    "description": "From specification 18, read coverage by cell. The call needs the brand rung under a token with the read grant, and it is served by either, by the size bound.",
    "tags": [
     "read"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/CoverageByCellInput"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "Coverage"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": false,
    "x-rung": "brand",
    "x-grant": "read",
    "x-where": "either",
    "x-specification": {
     "number": "18",
     "title": "The acquisition system and the connector standard"
    }
   }
  },
  "/v1/read/document": {
   "post": {
    "operationId": "si_read_document",
    "summary": "the document, the version, the caller → the version, with when it was built and what it was built from",
    "description": "From specification 17, read a document. The call needs the brand rung under a token with the read grant, and it is served by either, by the size bound.",
    "tags": [
     "read"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/DocumentInput"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "Build"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": false,
    "x-rung": "brand",
    "x-grant": "read",
    "x-where": "either",
    "x-specification": {
     "number": "17",
     "title": "Documents from the record"
    }
   }
  },
  "/v1/read/document_changes": {
   "post": {
    "operationId": "si_read_document_changes",
    "summary": "two versions → every number that moved with its unit, every figure replaced",
    "description": "From specification 17, what changed. The call needs the brand rung under a token with the read grant, and it is served by the platform.",
    "tags": [
     "read"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/DocumentChangesInput"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "WhatChanged"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": false,
    "x-rung": "brand",
    "x-grant": "read",
    "x-where": "platform",
    "x-specification": {
     "number": "17",
     "title": "Documents from the record"
    }
   }
  },
  "/v1/read/effect": {
   "post": {
    "operationId": "si_read_effect",
    "summary": "a move, the window → the effect with its interval, or withheld with what would settle it",
    "description": "From specification 13, read the effect. The call needs the strategy rung under a token with the read grant, and it is served by the platform.",
    "tags": [
     "read"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/EffectInput"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "Effect"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": false,
    "x-rung": "strategy",
    "x-grant": "read",
    "x-where": "platform",
    "x-specification": {
     "number": "13",
     "title": "Strategy, action and learning"
    }
   }
  },
  "/v1/read/entity": {
   "post": {
    "operationId": "si_read_entity",
    "summary": "an entity, and the two dates → every identifier it ever had, every account, everything it published, every thread, community and gathering, and every connection, across platforms and sources",
    "description": "From specification 05, the surface of an entity. The call needs the strategy rung under a token with the read grant, and it is served by either, by the size bound.",
    "tags": [
     "read"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/EntityInput"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "EntitySurface"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": false,
    "x-rung": "strategy",
    "x-grant": "read",
    "x-where": "either",
    "x-specification": {
     "number": "05",
     "title": "Identity resolution"
    }
   }
  },
  "/v1/read/estimate": {
   "post": {
    "operationId": "si_read_estimate",
    "summary": "an estimator, the case → the estimate with its interval, its evidence and its familiarity, or withheld",
    "description": "From specification 14, read an estimate. The call needs the strategy rung under a token with the read grant, and it is served by the platform.",
    "tags": [
     "read"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/EstimateInput"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "Estimate"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": false,
    "x-rung": "strategy",
    "x-grant": "read",
    "x-where": "platform",
    "x-specification": {
     "number": "14",
     "title": "Models and intelligence"
    }
   }
  },
  "/v1/read/explain_catch": {
   "post": {
    "operationId": "si_read_explain_catch",
    "summary": "the match → the conditions that admitted it, the words each matched, the observation, and the source",
    "description": "From specification 06, explain a match. The call needs the strategy rung under a token with the read grant, and it is served by the platform.",
    "tags": [
     "read"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/UnitRef"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "Catch"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": false,
    "x-rung": "strategy",
    "x-grant": "read",
    "x-where": "platform",
    "x-specification": {
     "number": "06",
     "title": "The rules engine"
    }
   }
  },
  "/v1/read/failed_calls": {
   "post": {
    "operationId": "si_read_failed_calls",
    "summary": "a tenant → every signed call that did not land, with why, and a way to send it again",
    "description": "From specification 10, the calls that failed. The call needs the tenant rung under a token with the read grant, and it is served by the platform.",
    "tags": [
     "read"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/ConnectorsInput"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "[FailedCall]"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": false,
    "x-rung": "tenant",
    "x-grant": "read",
    "x-where": "platform",
    "x-specification": {
     "number": "10",
     "title": "The API gateway"
    }
   }
  },
  "/v1/read/fit_frame": {
   "post": {
    "operationId": "si_read_fit_frame",
    "summary": "Reads the frame of one fit search → The answer gives the markets ranked, the offering sculpted for each buyer profile, the tactics proposed to test the fit, the verdict for each market, and the set of options that compares them",
    "description": "From specification 26, read a search's frame. The call needs the brand rung under a token with the read grant, and it is served by either, by the size bound.",
    "tags": [
     "read"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/FitFrameInput"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "FitSearchFrame"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": false,
    "x-rung": "brand",
    "x-grant": "read",
    "x-where": "either",
    "x-specification": {
     "number": "26",
     "title": "The market as a living system: value chains, systems models, templates and the search for product-market fit"
    }
   }
  },
  "/v1/read/fit_plays": {
   "post": {
    "operationId": "si_read_fit_plays",
    "summary": "Reads the tactics that fit one phase of the search, for a vertical or a kind of offering → The answer gives the tactics in the order to run them",
    "description": "From specification 26, read the tactics of a phase. The call needs the tenant rung under a token with the read grant, and it is served by either, by the size bound.",
    "tags": [
     "read"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/FitPlaysInput"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "[Tactic]"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": false,
    "x-rung": "tenant",
    "x-grant": "read",
    "x-where": "either",
    "x-specification": {
     "number": "26",
     "title": "The market as a living system: value chains, systems models, templates and the search for product-market fit"
    }
   }
  },
  "/v1/read/forecasts": {
   "post": {
    "operationId": "si_read_forecasts",
    "summary": "a play or a tactic, across brands → every forecast with its effect, how well the band held, and the proper score by play, tactic, kind of buyer, framing, actor and content",
    "description": "From specification 13, read forecasts against effects. The call needs the brand rung under a token with the read grant, and it is served by the platform.",
    "tags": [
     "read"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/ForecastsInput"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "ForecastsAnswer"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": false,
    "x-rung": "brand",
    "x-grant": "read",
    "x-where": "platform",
    "x-specification": {
     "number": "13",
     "title": "Strategy, action and learning"
    }
   }
  },
  "/v1/read/grounding_priors": {
   "post": {
    "operationId": "si_read_grounding_priors",
    "summary": "a platform, or nothing (`GroundingPriorsInput`) → how often a person supported each kind of suggestion at each breadth, one row per kind, platform and breadth (`GroundingPriors`)",
    "description": "From specification 24, read the priors of grounding. The call needs the user rung under a token with the read grant, and it is served by the platform.",
    "tags": [
     "read"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/GroundingPriorsInput"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "GroundingPriors"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": false,
    "x-rung": "user",
    "x-grant": "read",
    "x-where": "platform",
    "x-specification": {
     "number": "24",
     "title": "The capture extension: a person's own browser as a capture surface"
    }
   }
  },
  "/v1/read/groundings": {
   "post": {
    "operationId": "si_read_groundings",
    "summary": "one capture's, one entity's, or every grounding in a place → each grounding with its hypotheses",
    "description": "From specification 24, read groundings. The call needs the user rung under a token with the read grant, and it is served by the platform.",
    "tags": [
     "read"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/GroundingsInput"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "[GroundingAnswer]"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": false,
    "x-rung": "user",
    "x-grant": "read",
    "x-where": "platform",
    "x-specification": {
     "number": "24",
     "title": "The capture extension: a person's own browser as a capture surface"
    }
   }
  },
  "/v1/read/instruction_set": {
   "post": {
    "operationId": "si_read_instruction_set",
    "summary": "nothing → the set at its current version, assembled",
    "description": "From specification 14, read the research instruction set. The call needs the user rung under a token with the read grant, and it is served by either, by the size bound.",
    "tags": [
     "read"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/Nothing"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "InstructionSet"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": false,
    "x-rung": "user",
    "x-grant": "read",
    "x-where": "either",
    "x-specification": {
     "number": "14",
     "title": "Models and intelligence"
    }
   }
  },
  "/v1/read/intelligence": {
   "post": {
    "operationId": "si_read_intelligence",
    "summary": "a subject and a kind of intelligence → the kind's facts about the subject with their basis, their coverage and their date",
    "description": "From specification 14, read the intelligence of a subject by kind. The call needs the strategy rung under a token with the read grant, and it is served by the platform.",
    "tags": [
     "read"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/IntelligenceInput"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "IntelligenceAnswer"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": false,
    "x-rung": "strategy",
    "x-grant": "read",
    "x-where": "platform",
    "x-specification": {
     "number": "14",
     "title": "Models and intelligence"
    }
   }
  },
  "/v1/read/invitations": {
   "post": {
    "operationId": "si_read_invitations",
    "summary": "nothing → the invitations with their states",
    "description": "From specification 03, read my tenant's invitations. The call needs the tenant rung under a token with the admin grant, and it is served by the platform.",
    "tags": [
     "read"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/Nothing"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "[Invitation]"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": false,
    "x-rung": "tenant",
    "x-grant": "admin",
    "x-where": "platform",
    "x-specification": {
     "number": "03",
     "title": "People, scope and rights"
    }
   }
  },
  "/v1/read/invoices": {
   "post": {
    "operationId": "si_read_invoices",
    "summary": "a period, or nothing → the invoices with their states",
    "description": "From specification 19, read the invoices. The call needs the tenant rung under a token with the read grant, and it is served by the platform.",
    "tags": [
     "read"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/InvoicesInput"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "[Invoice]"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": false,
    "x-rung": "tenant",
    "x-grant": "read",
    "x-where": "platform",
    "x-specification": {
     "number": "19",
     "title": "Operations, security and observability"
    }
   }
  },
  "/v1/read/leads": {
   "post": {
    "operationId": "si_read_leads",
    "summary": "Reads the leads of one brand, narrowed by a place, a condition or a user → The answer gives the leads, or the package that holds them",
    "description": "From specification 08, leads. One lead, as its package. The call needs the strategy rung under a token with the read grant, and it is served by either, by the size bound.",
    "tags": [
     "read"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/LeadsInput"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "[Lead]"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": false,
    "x-rung": "strategy",
    "x-grant": "read",
    "x-where": "either",
    "x-specification": {
     "number": "08",
     "title": "Leads and the team"
    }
   }
  },
  "/v1/read/ledger": {
   "post": {
    "operationId": "si_read_ledger",
    "summary": "a strategy, the window → every move, action, forecast, effect and impact in order, with the budget spent by kind",
    "description": "From specification 13, read a strategy's ledger. The call needs the strategy rung under a token with the read grant, and it is served by either, by the size bound.",
    "tags": [
     "read"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/LedgerInput"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "Ledger"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": false,
    "x-rung": "strategy",
    "x-grant": "read",
    "x-where": "either",
    "x-specification": {
     "number": "13",
     "title": "Strategy, action and learning"
    }
   }
  },
  "/v1/read/lineage": {
   "post": {
    "operationId": "si_read_lineage",
    "summary": "an artefact → its whole history and footprint, marking unavailable what a store cannot answer",
    "description": "From specification 18, read lineage. The call needs the strategy rung under a token with the read grant, and it is served by the platform.",
    "tags": [
     "read"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/LineageInput"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "Lineage"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": false,
    "x-rung": "strategy",
    "x-grant": "read",
    "x-where": "platform",
    "x-specification": {
     "number": "18",
     "title": "The acquisition system and the connector standard"
    }
   }
  },
  "/v1/read/lookup": {
   "post": {
    "operationId": "si_read_lookup",
    "summary": "a key: a namespace with a value, or a name with a place, and with a name a breadth. And the two dates → the entity, or the possible matches, or nothing; with a breadth, the record's candidates by the one candidate search (specification 24 section 2.8)",
    "description": "From specification 05, look up. The call needs the strategy rung under a token with the read grant, and it is served by the platform.",
    "tags": [
     "read"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/LookupInput"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "LookupAnswer"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": false,
    "x-rung": "strategy",
    "x-grant": "read",
    "x-where": "platform",
    "x-specification": {
     "number": "05",
     "title": "Identity resolution"
    }
   }
  },
  "/v1/read/map": {
   "post": {
    "operationId": "si_read_map",
    "summary": "a brand, and the two dates → the map",
    "description": "From specification 12, read the map. The call needs the brand rung under a token with the read grant, and it is served by the platform.",
    "tags": [
     "read"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/MapInput"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "Map"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": false,
    "x-rung": "brand",
    "x-grant": "read",
    "x-where": "platform",
    "x-specification": {
     "number": "12",
     "title": "The market as it is held"
    }
   }
  },
  "/v1/read/market": {
   "post": {
    "operationId": "si_read_market",
    "summary": "a brand, a segment, the window → the four stages, each with its count, value, basis and coverage, and the silent remainder",
    "description": "From specification 12, read a market's stages. The call needs the brand rung under a token with the read grant, and it is served by the platform.",
    "tags": [
     "read"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/MarketInput"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "Market"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": false,
    "x-rung": "brand",
    "x-grant": "read",
    "x-where": "platform",
    "x-specification": {
     "number": "12",
     "title": "The market as it is held"
    }
   }
  },
  "/v1/read/market_twin": {
   "post": {
    "operationId": "si_read_market_twin",
    "summary": "Reads one market twin, and the date to read it as of → The answer gives the twin: the model family and template it was instanced from, the participants placed on the chain, the level of every stock as of the date, the simulations run on it in order, and the strategy whose armed plays are its interventions",
    "description": "From specification 26, read the twin of a market. The call needs the brand rung under a token with the read grant, and it is served by either, by the size bound.",
    "tags": [
     "read"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/MarketTwinInput"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "MarketTwin"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": false,
    "x-rung": "brand",
    "x-grant": "read",
    "x-where": "either",
    "x-specification": {
     "number": "26",
     "title": "The market as a living system: value chains, systems models, templates and the search for product-market fit"
    }
   }
  },
  "/v1/read/methods": {
   "post": {
    "operationId": "si_read_methods",
    "summary": "a question, or nothing → the methods that answer it, or every method, each with its readiness",
    "description": "From specification 14, read the methods. The call needs the user rung under a token with the read grant, and it is served by either, by the size bound.",
    "tags": [
     "read"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/MethodsInput"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "[Method]"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": false,
    "x-rung": "user",
    "x-grant": "read",
    "x-where": "either",
    "x-specification": {
     "number": "14",
     "title": "Models and intelligence"
    }
   }
  },
  "/v1/read/model_families": {
   "post": {
    "operationId": "si_read_model_families",
    "summary": "Reads the model families that fit a vertical or a representation → Each family arrives with what it represents, the substrate it is written over, its solver and its check",
    "description": "From specification 26, read the model families. The call needs the tenant rung under a token with the read grant, and it is served by either, by the size bound.",
    "tags": [
     "read"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/ModelFamiliesInput"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "[ModelFamily]"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": false,
    "x-rung": "tenant",
    "x-grant": "read",
    "x-where": "either",
    "x-specification": {
     "number": "26",
     "title": "The market as a living system: value chains, systems models, templates and the search for product-market fit"
    }
   }
  },
  "/v1/read/monitor_strength": {
   "post": {
    "operationId": "si_read_monitor_strength",
    "summary": "the monitor and a window → the four numbers, each with its population",
    "description": "From specification 06, read the strength of a monitor. The call needs the strategy rung under a token with the read grant, and it is served by the platform.",
    "tags": [
     "read"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/MonitorStrengthInput"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "SignalStrength"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": false,
    "x-rung": "strategy",
    "x-grant": "read",
    "x-where": "platform",
    "x-specification": {
     "number": "06",
     "title": "The rules engine"
    }
   }
  },
  "/v1/read/page_changes": {
   "post": {
    "operationId": "si_read_page_changes",
    "summary": "a `PageChangesInput` → `PageChange` rows for the site or the watch in the window",
    "description": "From specification 18, read page changes. The call needs the brand rung under a token with the read grant, and it is served by either, by the size bound.",
    "tags": [
     "read"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/PageChangesInput"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "[PageChange]"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": false,
    "x-rung": "brand",
    "x-grant": "read",
    "x-where": "either",
    "x-specification": {
     "number": "18",
     "title": "The acquisition system and the connector standard"
    }
   }
  },
  "/v1/read/parameter": {
   "post": {
    "operationId": "si_read_parameter",
    "summary": "its name → its value, with its dimension and version",
    "description": "From specification 01, read a parameter. The call needs the tenant rung under a token with the read grant, and it is served by the platform.",
    "tags": [
     "read"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/ParameterInput"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "Parameter"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": false,
    "x-rung": "tenant",
    "x-grant": "read",
    "x-where": "platform",
    "x-specification": {
     "number": "01",
     "title": "The kernel"
    }
   }
  },
  "/v1/read/plan_report": {
   "post": {
    "operationId": "si_read_plan_report",
    "summary": "a strategy and a window (`PlanReportInput`) → each play completed, partial or missing, and the items done off plan",
    "description": "From specification 13, read the report of a plan. The call needs the strategy rung under a token with the read grant, and it is served by the platform.",
    "tags": [
     "read"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/PlanReportInput"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "PlanReport"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": false,
    "x-rung": "strategy",
    "x-grant": "read",
    "x-where": "platform",
    "x-specification": {
     "number": "13",
     "title": "Strategy, action and learning"
    }
   }
  },
  "/v1/read/policy_replay": {
   "post": {
    "operationId": "si_read_policy_replay",
    "summary": "a policy row and its version, a strategy and a window (`PolicyReplayInput`) → what the policy would have chosen at every logged decision against what was chosen, and the effects that followed (`PolicyReplay`)",
    "description": "From specification 13, replay a policy. The call needs the strategy rung under a token with the read grant, and it is served by the platform.",
    "tags": [
     "read"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/PolicyReplayInput"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "PolicyReplay"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": false,
    "x-rung": "strategy",
    "x-grant": "read",
    "x-where": "platform",
    "x-specification": {
     "number": "13",
     "title": "Strategy, action and learning"
    }
   }
  },
  "/v1/read/posture": {
   "post": {
    "operationId": "si_read_posture",
    "summary": "a community, the window → open, conditional, closed or unknown, with the two removal rates and the archetype",
    "description": "From specification 12, read a community's posture. The call needs the brand rung under a token with the read grant, and it is served by either, by the size bound.",
    "tags": [
     "read"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/PostureInput"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "CommunityPosture"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": false,
    "x-rung": "brand",
    "x-grant": "read",
    "x-where": "either",
    "x-specification": {
     "number": "12",
     "title": "The market as it is held"
    }
   }
  },
  "/v1/read/predicate_language": {
   "post": {
    "operationId": "si_read_predicate_language",
    "summary": "the register's name → its rows with the hash",
    "description": "From specification 06, read the operators, the comparators, the places, the populations, the kinds of signal, the stages. The call needs the tenant rung under a token with the read grant, and it is served by the platform.",
    "tags": [
     "read"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/Nothing"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "PredicateLanguage"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": false,
    "x-rung": "tenant",
    "x-grant": "read",
    "x-where": "platform",
    "x-specification": {
     "number": "06",
     "title": "The rules engine"
    }
   }
  },
  "/v1/read/propensity": {
   "post": {
    "operationId": "si_read_propensity",
    "summary": "a lead, a move or a play, and which faces, actors or content or both (`PropensityInput`) → every eligible actor and every fitting content with the chance, its interval, its basis and the policy's odds, and the one the policy would choose (`PropensityAnswer`)",
    "description": "From specification 13, read who and what fits a lead. The call needs the strategy rung under a token with the read grant, and it is served by the platform.",
    "tags": [
     "read"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/PropensityInput"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "PropensityAnswer"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": false,
    "x-rung": "strategy",
    "x-grant": "read",
    "x-where": "platform",
    "x-specification": {
     "number": "13",
     "title": "Strategy, action and learning"
    }
   }
  },
  "/v1/read/proxy": {
   "post": {
    "operationId": "si_read_proxy",
    "summary": "the proxy and its version, the two dates, and a place → its members as a population, with the raw count, the estimate corrected by the recall and the undercount's interval, its calibration by segment, its coverage by channel, and its co-membership with other proxies; for an aggregate-only proxy the counts alone and never a member",
    "description": "From specification 06, read a proxy. The call needs the strategy rung under a token with the read grant, and it is served by either, by the size bound.",
    "tags": [
     "read"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/ProxyReadInput"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "ProxyReading"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": false,
    "x-rung": "strategy",
    "x-grant": "read",
    "x-where": "either",
    "x-specification": {
     "number": "06",
     "title": "The rules engine"
    }
   }
  },
  "/v1/read/receipts": {
   "post": {
    "operationId": "si_read_receipts",
    "summary": "the kind, export or erasure → the receipts",
    "description": "From specification 03, read the receipts. The call needs the tenant rung under a token with the admin grant, and it is served by the platform.",
    "tags": [
     "read"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/ReceiptsInput"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "Receipts"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": false,
    "x-rung": "tenant",
    "x-grant": "admin",
    "x-where": "platform",
    "x-specification": {
     "number": "03",
     "title": "People, scope and rights"
    }
   }
  },
  "/v1/read/register": {
   "post": {
    "operationId": "si_read_register",
    "summary": "its name, and a version or *current* → its rows, and the hash",
    "description": "From specification 02, read a register. The call needs the tenant rung under a token with the read grant, and it is served by the platform.",
    "tags": [
     "read"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/RegisterInput"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "RegisterAnswer"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": false,
    "x-rung": "tenant",
    "x-grant": "read",
    "x-where": "platform",
    "x-specification": {
     "number": "02",
     "title": "The registers, and the contract crate"
    }
   }
  },
  "/v1/read/registered": {
   "post": {
    "operationId": "si_read_registered",
    "summary": "a register and a name → the row, or nothing",
    "description": "From specification 02, is this name registered. The call needs the tenant rung under a token with the read grant, and it is served by the platform.",
    "tags": [
     "read"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/RegisterInput"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "RegisterAnswer"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": false,
    "x-rung": "tenant",
    "x-grant": "read",
    "x-where": "platform",
    "x-specification": {
     "number": "02",
     "title": "The registers, and the contract crate"
    }
   }
  },
  "/v1/read/roles": {
   "post": {
    "operationId": "si_read_roles",
    "summary": "nothing, or one role → the register of roles: each role's side, what it does, what it hands on, which connection holds it, and whether its holder can be a lead",
    "description": "From specification 12, read the roles. The call needs the brand rung under a token with the read grant, and it is served by either, by the size bound.",
    "tags": [
     "read"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/RolesInput"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "[RoleAroundADecision]"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": false,
    "x-rung": "brand",
    "x-grant": "read",
    "x-where": "either",
    "x-specification": {
     "number": "12",
     "title": "The market as it is held"
    }
   }
  },
  "/v1/read/scrape_runs": {
   "post": {
    "operationId": "si_read_scrape_runs",
    "summary": "a `ScrapeRunsInput` → `ScrapeRun` rows with pages, rows, bytes, cost and time",
    "description": "From specification 18, read scrape runs. The call needs the brand rung under a token with the read grant, and it is served by either, by the size bound.",
    "tags": [
     "read"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/ScrapeRunsInput"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "[ScrapeRun]"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": false,
    "x-rung": "brand",
    "x-grant": "read",
    "x-where": "either",
    "x-specification": {
     "number": "18",
     "title": "The acquisition system and the connector standard"
    }
   }
  },
  "/v1/read/signals": {
   "post": {
    "operationId": "si_read_signals",
    "summary": "a monitor, a subject, a kind or a strategy, and a window → the facts, with the coverage and the count not evaluable for the same window",
    "description": "From specification 06, read matches. Read signals. The call needs the strategy rung under a token with the read grant, and it is served by either, by the size bound.",
    "tags": [
     "read"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/SignalsInput"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "SignalsAnswer"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": false,
    "x-rung": "strategy",
    "x-grant": "read",
    "x-where": "either",
    "x-specification": {
     "number": "06",
     "title": "The rules engine"
    }
   }
  },
  "/v1/read/simulation_frame": {
   "post": {
    "operationId": "si_read_simulation_frame",
    "summary": "Reads the frame of one simulation → The answer gives the trajectory of every stock, the gain of every loop, the sensitivity to every intervention, and the set of options that compares strategies laid over the same template",
    "description": "From specification 26, read a simulation's frame. The call needs the brand rung under a token with the read grant, and it is served by either, by the size bound.",
    "tags": [
     "read"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/SimulationFrameInput"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "MarketSimulationFrame"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": false,
    "x-rung": "brand",
    "x-grant": "read",
    "x-where": "either",
    "x-specification": {
     "number": "26",
     "title": "The market as a living system: value chains, systems models, templates and the search for product-market fit"
    }
   }
  },
  "/v1/read/source_procedure": {
   "post": {
    "operationId": "si_read_source_procedure",
    "summary": "a source → its procedure at its version, the date of its last reading and whether it is stale",
    "description": "From specification 18, read the procedure of a source. The call needs the tenant rung under a token with the read grant, and it is served by either, by the size bound.",
    "tags": [
     "read"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/SourceProcedureInput"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "SourceProcedure"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": false,
    "x-rung": "tenant",
    "x-grant": "read",
    "x-where": "either",
    "x-specification": {
     "number": "18",
     "title": "The acquisition system and the connector standard"
    }
   }
  },
  "/v1/read/speed_to_lead": {
   "post": {
    "operationId": "si_read_speed_to_lead",
    "summary": "Reads the delay from delivery to the first touch for one brand, over a window → The answer gives the measure's readings, with the population each was read over",
    "description": "From specification 08, speed to lead. The call needs the brand rung under a token with the read grant, and it is served by the platform.",
    "tags": [
     "read"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/SpeedToLeadInput"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "SpeedToLead"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": false,
    "x-rung": "brand",
    "x-grant": "read",
    "x-where": "platform",
    "x-specification": {
     "number": "08",
     "title": "Leads and the team"
    }
   }
  },
  "/v1/read/strategy": {
   "post": {
    "operationId": "si_read_strategy",
    "summary": "a strategy, as of a date (`StrategyReadInput`) → the `Strategy` with its life, its game, its graph of plays with each play's class and its reading, the experiments' shares and the frame of its last simulation",
    "description": "From specification 13, read a strategy. The call needs the strategy rung under a token with the read grant, and it is served by the platform.",
    "tags": [
     "read"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/StrategyReadInput"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "Strategy"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": false,
    "x-rung": "strategy",
    "x-grant": "read",
    "x-where": "platform",
    "x-specification": {
     "number": "13",
     "title": "Strategy, action and learning"
    }
   }
  },
  "/v1/read/systems_models": {
   "post": {
    "operationId": "si_read_systems_models",
    "summary": "Reads the systems models that fit one vertical or one kind of offering → Each template arrives with its readiness and the defect it carries named",
    "description": "From specification 26, read the systems models. The call needs the tenant rung under a token with the read grant, and it is served by either, by the size bound.",
    "tags": [
     "read"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/SystemsModelsInput"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "[SystemsModelTemplate]"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": false,
    "x-rung": "tenant",
    "x-grant": "read",
    "x-where": "either",
    "x-specification": {
     "number": "26",
     "title": "The market as a living system: value chains, systems models, templates and the search for product-market fit"
    }
   }
  },
  "/v1/read/trajectory": {
   "post": {
    "operationId": "si_read_trajectory",
    "summary": "a strategy or one move, and a window (`TrajectoryInput`) → plan item to grounded move to outcome: each move with the items that carried it out, their readings and its effect",
    "description": "From specification 13, read a trajectory. The call needs the strategy rung under a token with the read grant, and it is served by the platform.",
    "tags": [
     "read"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/TrajectoryInput"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "Trajectory"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": false,
    "x-rung": "strategy",
    "x-grant": "read",
    "x-where": "platform",
    "x-specification": {
     "number": "13",
     "title": "Strategy, action and learning"
    }
   }
  },
  "/v1/read/under_test": {
   "post": {
    "operationId": "si_read_under_test",
    "summary": "a subject or a scope, and the two dates → every hypothesis about it with its standing, its evidence for and against, the tests run and the tests owed, and what would settle each",
    "description": "From specification 01, read what is under test. The call needs the strategy rung under a token with the read grant, and it is served by either, by the size bound.",
    "tags": [
     "read"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/UnderTestInput"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "[Hypothesis]"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": false,
    "x-rung": "strategy",
    "x-grant": "read",
    "x-where": "either",
    "x-specification": {
     "number": "01",
     "title": "The kernel"
    }
   }
  },
  "/v1/read/unit": {
   "post": {
    "operationId": "si_read_unit",
    "summary": "the kind, the id, the caller → the unit",
    "description": "From specification 01, read a unit. The call needs the strategy rung under a token with the read grant, and it is served by the platform.",
    "tags": [
     "read"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/UnitRef"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "Unit"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": false,
    "x-rung": "strategy",
    "x-grant": "read",
    "x-where": "platform",
    "x-specification": {
     "number": "01",
     "title": "The kernel"
    }
   }
  },
  "/v1/read/usage_statement": {
   "post": {
    "operationId": "si_read_usage_statement",
    "summary": "a period → the tenant's usage of the period by kind, priced, against the plan",
    "description": "From specification 19, read the usage statement. The call needs the tenant rung under a token with the read grant, and it is served by the platform.",
    "tags": [
     "read"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/UsageStatementInput"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "UsageStatement"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": false,
    "x-rung": "tenant",
    "x-grant": "read",
    "x-where": "platform",
    "x-specification": {
     "number": "19",
     "title": "Operations, security and observability"
    }
   }
  },
  "/v1/read/value_chain": {
   "post": {
    "operationId": "si_read_value_chain",
    "summary": "Reads the value chain of one vertical, with the brand whose participants are placed on it → The answer gives the chain's stocks and handovers with their counts, the participants on each stock, and the loops the templates name over it",
    "description": "From specification 26, read the value chain. The call needs the brand rung under a token with the read grant, and it is served by either, by the size bound.",
    "tags": [
     "read"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/ValueChainInput"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "ValueChain"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": false,
    "x-rung": "brand",
    "x-grant": "read",
    "x-where": "either",
    "x-specification": {
     "number": "26",
     "title": "The market as a living system: value chains, systems models, templates and the search for product-market fit"
    }
   }
  },
  "/v1/read/vertical": {
   "post": {
    "operationId": "si_read_vertical",
    "summary": "the vertical, or a brand whose vertical is meant → its chain by side with every stock's count and basis, its roles, its segments, its templates, its words and its rules",
    "description": "From specification 12, read a vertical. The call needs the brand rung under a token with the read grant, and it is served by either, by the size bound.",
    "tags": [
     "read"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/VerticalInput"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "Vertical"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": false,
    "x-rung": "brand",
    "x-grant": "read",
    "x-where": "either",
    "x-specification": {
     "number": "12",
     "title": "The market as it is held"
    }
   }
  },
  "/v1/read/why": {
   "post": {
    "operationId": "si_read_why",
    "summary": "any unit → the chain of reasons, from this unit back to its first cause",
    "description": "From specification 04 and 14, why is this not ready; why is this not ready. The call needs the user rung under a token with the read grant, and it is served by the platform.",
    "tags": [
     "read"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/WhyInput"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "WhyAnswer"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": false,
    "x-rung": "user",
    "x-grant": "read",
    "x-where": "platform",
    "x-specification": {
     "number": "04",
     "title": "The record"
    }
   }
  },
  "/v1/read/withheld": {
   "post": {
    "operationId": "si_read_withheld",
    "summary": "Reads the withheld count for one brand or one tenant → The answer gives the count by buyer profile and temperature, with the period and the limit it was read against",
    "description": "From specification 08, the withheld count. The call needs the brand rung under a token with the read grant, and it is served by the platform.",
    "tags": [
     "read"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/WithheldInput"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "WithheldCount"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": false,
    "x-rung": "brand",
    "x-grant": "read",
    "x-where": "platform",
    "x-specification": {
     "number": "08",
     "title": "Leads and the team"
    }
   }
  },
  "/v1/view/capabilities": {
   "post": {
    "operationId": "si_view_capabilities",
    "summary": "nothing → the page",
    "description": "From specification 11 and 14, capabilities; the page of capabilities. The call needs the user rung under a token with the read grant, and it is served by the platform.",
    "tags": [
     "view"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/Nothing"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "CapabilitiesPage"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": false,
    "x-rung": "user",
    "x-grant": "read",
    "x-where": "platform",
    "x-specification": {
     "number": "11",
     "title": "The ops console"
    }
   }
  },
  "/v1/view/journey": {
   "post": {
    "operationId": "si_view_journey",
    "summary": "a unit's id → its hops, back and forward",
    "description": "From specification 11, journey. The call needs the user rung under a token with the read grant, and it is served by the platform.",
    "tags": [
     "view"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/JourneyInput"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "Journey"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": false,
    "x-rung": "user",
    "x-grant": "read",
    "x-where": "platform",
    "x-specification": {
     "number": "11",
     "title": "The ops console"
    }
   }
  },
  "/v1/view/oldest": {
   "post": {
    "operationId": "si_view_oldest",
    "summary": "a kind, a place, and how many → those units, each with its reason and since when",
    "description": "From specification 11, the oldest in a place. The call needs the user rung under a token with the read grant, and it is served by the platform.",
    "tags": [
     "view"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/OldestInput"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "[Oldest]"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": false,
    "x-rung": "user",
    "x-grant": "read",
    "x-where": "platform",
    "x-specification": {
     "number": "11",
     "title": "The ops console"
    }
   }
  },
  "/v1/view/pairings": {
   "post": {
    "operationId": "si_view_pairings",
    "summary": "a scope → each pairing, with the units that lack their pair",
    "description": "From specification 11, pairings. The call needs the user rung under a token with the read grant, and it is served by the platform.",
    "tags": [
     "view"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/PairingsInput"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "PairingsAnswer"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": false,
    "x-rung": "user",
    "x-grant": "read",
    "x-where": "platform",
    "x-specification": {
     "number": "11",
     "title": "The ops console"
    }
   }
  },
  "/v1/view/stocks": {
   "post": {
    "operationId": "si_view_stocks",
    "summary": "a part, a kind or a place, and a scope the caller holds → the six numbers for each",
    "description": "From specification 11, stocks. The call needs the user rung under a token with the read grant, and it is served by the platform.",
    "tags": [
     "view"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/StocksInput"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "[Stock]"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": false,
    "x-rung": "user",
    "x-grant": "read",
    "x-where": "platform",
    "x-specification": {
     "number": "11",
     "title": "The ops console"
    }
   }
  },
  "/v1/view/usage": {
   "post": {
    "operationId": "si_view_usage",
    "summary": "a tenant, a kind, a provider, a window → quantity and cost by kind, by tenant, by provider and by period, with each provider's reconciliation state",
    "description": "From specification 19, read usage. The call needs the tenant rung under a token with the read grant, and it is served by the platform.",
    "tags": [
     "view"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/UsageInput"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "UsageReport"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": false,
    "x-rung": "tenant",
    "x-grant": "read",
    "x-where": "platform",
    "x-specification": {
     "number": "19",
     "title": "Operations, security and observability"
    }
   }
  },
  "/v1/view/waiting": {
   "post": {
    "operationId": "si_view_waiting",
    "summary": "the caller → notifications, oldest first. Or nothing",
    "description": "From specification 09 and 11, what needs me. Acknowledge; what waits for a person. The call needs the user rung under a token with the read grant, and it is served by the platform.",
    "tags": [
     "view"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/WaitingInput"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "[Notification]"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": false,
    "x-rung": "user",
    "x-grant": "read",
    "x-where": "platform",
    "x-specification": {
     "number": "09",
     "title": "The harness"
    }
   }
  },
  "/v1/act/act_through_connector": {
   "post": {
    "operationId": "si_act_act_through_connector",
    "summary": "the installed connector, the kind, the arguments with their sources → a move, proposed or running by the grant's mode; then the source's own id for what was done",
    "description": "From specification 18, run a kind of action. The call needs the brand rung under a token with the act grant, and it is served by the platform.",
    "tags": [
     "act"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/ActThroughConnectorInput"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "Move"
        }
       }
      }
     },
     "202": {
      "description": "a long step: the task, reported through the work family",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Task"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": true,
    "x-rung": "brand",
    "x-grant": "act",
    "x-where": "platform",
    "x-specification": {
     "number": "18",
     "title": "The acquisition system and the connector standard"
    }
   }
  },
  "/v1/act/annotate": {
   "post": {
    "operationId": "si_act_annotate",
    "summary": "an `Annotation` with the target *an entity* and the entity's id, from the web shell, the desktop shell, the agent or the API; in the side panel the same type travels inside the page's reading → the fact the person stated, a claim or a connection, by its id and kind (`UnitRef`)",
    "description": "From specification 24, annotate a subject. The call needs the user rung under a token with the act grant, and it is served by the platform.",
    "tags": [
     "act"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/Annotation"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "UnitRef"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": false,
    "x-rung": "user",
    "x-grant": "act",
    "x-where": "platform",
    "x-specification": {
     "number": "24",
     "title": "The capture extension: a person's own browser as a capture surface"
    }
   }
  },
  "/v1/act/arm_monitor": {
   "post": {
    "operationId": "si_act_arm_monitor",
    "summary": "the monitor's version, and for arming the preview it was judged by → the monitor's new state",
    "description": "From specification 06, arm, disarm a monitor. The call needs the strategy rung under a token with the act grant, and it is served by the platform.",
    "tags": [
     "act"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/ArmMonitorInput"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "Monitor"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": false,
    "x-rung": "strategy",
    "x-grant": "act",
    "x-where": "platform",
    "x-specification": {
     "number": "06",
     "title": "The rules engine"
    }
   }
  },
  "/v1/act/arm_play": {
   "post": {
    "operationId": "si_act_arm_play",
    "summary": "a strategy, the play and its version, the goal it serves, and the share it is armed on with its holdout (a share under one makes the play an experiment) → the armed play with its class proposed from the kind's usual class and the rivals' coverage, and the demand cells it raised",
    "description": "From specification 13, arm a play. The call needs the strategy rung under a token with the act grant, and it is served by the platform.",
    "tags": [
     "act"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/ArmPlayInput"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "ArmPlayAnswer"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": false,
    "x-rung": "strategy",
    "x-grant": "act",
    "x-where": "platform",
    "x-specification": {
     "number": "13",
     "title": "Strategy, action and learning"
    }
   }
  },
  "/v1/act/assign": {
   "post": {
    "operationId": "si_act_assign",
    "summary": "Assigns one lead to one user by hand, or hands it on → The answer gives the assignment, with the person who made it as its reason",
    "description": "From specification 08, assign by hand. Hand on. The call needs the strategy rung under a token with the act grant, and it is served by the platform.",
    "tags": [
     "act"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/AssignInput"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "LeadAssignment"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": false,
    "x-rung": "strategy",
    "x-grant": "act",
    "x-where": "platform",
    "x-specification": {
     "number": "08",
     "title": "Leads and the team"
    }
   }
  },
  "/v1/act/beat": {
   "post": {
    "operationId": "si_act_beat",
    "summary": "what runs, and when → the beat",
    "description": "From specification 09, write a beat. The call needs the strategy rung under a token with the act grant, and it is served by the platform.",
    "tags": [
     "act"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/BeatInput"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "Beat"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": false,
    "x-rung": "strategy",
    "x-grant": "act",
    "x-where": "platform",
    "x-specification": {
     "number": "09",
     "title": "The harness"
    }
   }
  },
  "/v1/act/bind_buyer": {
   "post": {
    "operationId": "si_act_bind_buyer",
    "summary": "the kind, an offering or a segment, the weight, the mode → the binding, and the preview of the kind's members",
    "description": "From specification 12, bind a buyer profile. The call needs the brand rung under a token with the act grant, and it is served by the platform.",
    "tags": [
     "act"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/BindBuyerInput"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "BindBuyerAnswer"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": false,
    "x-rung": "brand",
    "x-grant": "act",
    "x-where": "platform",
    "x-specification": {
     "number": "12",
     "title": "The market as it is held"
    }
   }
  },
  "/v1/act/board": {
   "post": {
    "operationId": "si_act_board",
    "summary": "the board with its tiles → the board, ready, or not ready with the tile that could not be drawn",
    "description": "From specification 11, write a board. The call needs the tenant rung under a token with the act grant, and it is served by the platform.",
    "tags": [
     "act"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/BoardInput"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "Board"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": false,
    "x-rung": "tenant",
    "x-grant": "act",
    "x-where": "platform",
    "x-specification": {
     "number": "11",
     "title": "The ops console"
    }
   }
  },
  "/v1/act/browse_step": {
   "post": {
    "operationId": "si_act_browse_step",
    "summary": "a `BrowseStepInput` → the step's result: the accessibility tree, the text, the markdown, a screenshot's hash, or a download set",
    "description": "From specification 18, drive a browsing step. The call needs the strategy rung under a token with the act grant, and it is served by either, by the size bound.",
    "tags": [
     "act"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/BrowseStepInput"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "BrowsingStep"
        }
       }
      }
     },
     "202": {
      "description": "a long step: the task, reported through the work family",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Task"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": true,
    "x-rung": "strategy",
    "x-grant": "act",
    "x-where": "either",
    "x-specification": {
     "number": "18",
     "title": "The acquisition system and the connector standard"
    }
   }
  },
  "/v1/act/build_document": {
   "post": {
    "operationId": "si_act_build_document",
    "summary": "the document, the two dates, which default to now → the build, then the version, or not ready with every number that is missing",
    "description": "From specification 17, build a document. The call needs the brand rung under a token with the act grant, and it is served by the platform.",
    "tags": [
     "act"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/BuildDocumentInput"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "Build"
        }
       }
      }
     },
     "202": {
      "description": "a long step: the task, reported through the work family",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Task"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": true,
    "x-rung": "brand",
    "x-grant": "act",
    "x-where": "platform",
    "x-specification": {
     "number": "17",
     "title": "Documents from the record"
    }
   }
  },
  "/v1/act/capacity": {
   "post": {
    "operationId": "si_act_capacity",
    "summary": "Sets how many new leads one user can take in a period → The answer gives the new capacity, with how many the user holds and when it refills",
    "description": "From specification 08, set capacity. The call needs the brand rung under a token with the act grant, and it is served by the platform.",
    "tags": [
     "act"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/CapacityInput"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "Capacity"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": false,
    "x-rung": "brand",
    "x-grant": "act",
    "x-where": "platform",
    "x-specification": {
     "number": "08",
     "title": "Leads and the team"
    }
   }
  },
  "/v1/act/capture": {
   "post": {
    "operationId": "si_act_capture",
    "summary": "the document, the network events, the address, the person's identity → the capture with its source objects and the cells credited",
    "description": "From specification 18, capture a page. The call needs the user rung under a token with the act grant, and it is served by the platform.",
    "tags": [
     "act"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/CaptureInput"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "Capture"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": false,
    "x-rung": "user",
    "x-grant": "act",
    "x-where": "platform",
    "x-specification": {
     "number": "18",
     "title": "The acquisition system and the connector standard"
    }
   }
  },
  "/v1/act/capture_rule": {
   "post": {
    "operationId": "si_act_capture_rule",
    "summary": "the rule → the rule, ready or not ready with the reason",
    "description": "From specification 24, write a capture rule. The call needs the user rung under a token with the act grant, and it is served by the platform.",
    "tags": [
     "act"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/CaptureRuleInput"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "CaptureRule"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": false,
    "x-rung": "user",
    "x-grant": "act",
    "x-where": "platform",
    "x-specification": {
     "number": "24",
     "title": "The capture extension: a person's own browser as a capture surface"
    }
   }
  },
  "/v1/act/change_plan": {
   "post": {
    "operationId": "si_act_change_plan",
    "summary": "the plan kind → the change as a proposal, and the provider's own page for payment",
    "description": "From specification 19, change the plan. The call needs the tenant rung under a token with the admin grant, and it is served by the platform.",
    "tags": [
     "act"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/ChangePlanInput"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "PlanChange"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": false,
    "x-rung": "tenant",
    "x-grant": "admin",
    "x-where": "platform",
    "x-specification": {
     "number": "19",
     "title": "Operations, security and observability"
    }
   }
  },
  "/v1/act/correct": {
   "post": {
    "operationId": "si_act_correct",
    "summary": "the id of the wrong event, and the right facts → a correcting event",
    "description": "From specification 01, correct an event. The call needs the strategy rung under a token with the act grant, and it is served by the platform.",
    "tags": [
     "act"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/CorrectInput"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "Event"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": false,
    "x-rung": "strategy",
    "x-grant": "act",
    "x-where": "platform",
    "x-specification": {
     "number": "01",
     "title": "The kernel"
    }
   }
  },
  "/v1/act/crawl": {
   "post": {
    "operationId": "si_act_crawl",
    "summary": "a `ScrapeRequest` whose scope names the site's seeds, with sitemap-driven discovery on → the `ScrapeRun`, queued, or the run that already stands for the same template version and scope inside its freshness; every page lands as a capture through the one pipeline, and each page that could not be read is a gap with its reason",
    "description": "From specification 18, crawl a site. The call needs the brand rung under a token with the act grant, and it is served by the platform.",
    "tags": [
     "act"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/ScrapeRequest"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "ScrapeRun"
        }
       }
      }
     },
     "202": {
      "description": "a long step: the task, reported through the work family",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Task"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": true,
    "x-rung": "brand",
    "x-grant": "act",
    "x-where": "platform",
    "x-specification": {
     "number": "18",
     "title": "The acquisition system and the connector standard"
    }
   }
  },
  "/v1/act/decide_ask": {
   "post": {
    "operationId": "si_act_decide_ask",
    "summary": "the ask, by a user who may → the ask, approved or declined",
    "description": "From specification 07, approve or decline an ask. The call needs the brand rung under a token with the act grant, and it is served by the platform.",
    "tags": [
     "act"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/DecideAskInput"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "Ask"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": false,
    "x-rung": "brand",
    "x-grant": "act",
    "x-where": "platform",
    "x-specification": {
     "number": "07",
     "title": "Sources and acquisition"
    }
   }
  },
  "/v1/act/decide_brand_design": {
   "post": {
    "operationId": "si_act_decide_brand_design",
    "summary": "the brand, the value's path, the decision (accepted, declined, changed) and, when changed, the tenant's own value, with the reason → the decision as a fact at brand scope: the brand's memory, read by the merge, so a changed value stands as stated by the tenant until the site changes and a declined one is never proposed again",
    "description": "From specification 12, record a decision on a brand's design system. The call needs the brand rung under a token with the act grant, and it is served by either, by the size bound.",
    "tags": [
     "act"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/DecideBrandDesignInput"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "BrandDecision"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": false,
    "x-rung": "brand",
    "x-grant": "act",
    "x-where": "either",
    "x-specification": {
     "number": "12",
     "title": "The market as it is held"
    }
   }
  },
  "/v1/act/decide_move": {
   "post": {
    "operationId": "si_act_decide_move",
    "summary": "the move, the caller → the move in its new place, with who moved it",
    "description": "From specification 13, accept, decline or stop a move. The call needs the strategy rung under a token with the act grant, and it is served by the platform.",
    "tags": [
     "act"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/DecideMoveInput"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "Move"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": false,
    "x-rung": "strategy",
    "x-grant": "act",
    "x-where": "platform",
    "x-specification": {
     "number": "13",
     "title": "Strategy, action and learning"
    }
   }
  },
  "/v1/act/deepen": {
   "post": {
    "operationId": "si_act_deepen",
    "summary": "an observation, and the depth: fetched in full, or given meaning → a deepening",
    "description": "From specification 04, ask for depth. The call needs the strategy rung under a token with the act grant, and it is served by the platform.",
    "tags": [
     "act"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/DeepenInput"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "Deepening"
        }
       }
      }
     },
     "202": {
      "description": "a long step: the task, reported through the work family",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Task"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": true,
    "x-rung": "strategy",
    "x-grant": "act",
    "x-where": "platform",
    "x-specification": {
     "number": "04",
     "title": "The record"
    }
   }
  },
  "/v1/act/dry_run": {
   "post": {
    "operationId": "si_act_dry_run",
    "summary": "an action → what it would do, and what the inverse would be",
    "description": "From specification 13, dry run an action. The call needs the strategy rung under a token with the ask grant, and it is served by the platform.",
    "tags": [
     "act"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/DryRunInput"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "DryRunAnswer"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": false,
    "x-rung": "strategy",
    "x-grant": "ask",
    "x-where": "platform",
    "x-specification": {
     "number": "13",
     "title": "Strategy, action and learning"
    }
   }
  },
  "/v1/act/erase_person": {
   "post": {
    "operationId": "si_act_erase_person",
    "summary": "the person → the erasure as work, then its receipt",
    "description": "From specification 03, erase a person. The call needs the tenant rung under a token with the admin grant, and it is served by the platform.",
    "tags": [
     "act"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/ErasePersonInput"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "ErasureReceipt"
        }
       }
      }
     },
     "202": {
      "description": "a long step: the task, reported through the work family",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Task"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": true,
    "x-rung": "tenant",
    "x-grant": "admin",
    "x-where": "platform",
    "x-specification": {
     "number": "03",
     "title": "People, scope and rights"
    }
   }
  },
  "/v1/act/export_tenant": {
   "post": {
    "operationId": "si_act_export_tenant",
    "summary": "nothing → the export as work, then its receipt",
    "description": "From specification 03, export a tenant. The call needs the tenant rung under a token with the admin grant, and it is served by the platform.",
    "tags": [
     "act"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/Nothing"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "ExportReceipt"
        }
       }
      }
     },
     "202": {
      "description": "a long step: the task, reported through the work family",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Task"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": true,
    "x-rung": "tenant",
    "x-grant": "admin",
    "x-where": "platform",
    "x-specification": {
     "number": "03",
     "title": "People, scope and rights"
    }
   }
  },
  "/v1/act/goal": {
   "post": {
    "operationId": "si_act_goal",
    "summary": "a strategy, a measure, a target, a window → the goal, naming the measure's version",
    "description": "From specification 13, add a goal. The call needs the strategy rung under a token with the act grant, and it is served by the platform.",
    "tags": [
     "act"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/GoalInput"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "Goal"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": false,
    "x-rung": "strategy",
    "x-grant": "act",
    "x-where": "platform",
    "x-specification": {
     "number": "13",
     "title": "Strategy, action and learning"
    }
   }
  },
  "/v1/act/grant": {
   "post": {
    "operationId": "si_act_grant",
    "summary": "the grant, by a caller who may give it → the grant's new version",
    "description": "From specification 03, give, change or withdraw a grant. The call needs the tenant rung under a token with the act grant, and it is served by the platform.",
    "tags": [
     "act"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/GrantInput"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "Grant"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": false,
    "x-rung": "tenant",
    "x-grant": "act",
    "x-where": "platform",
    "x-specification": {
     "number": "03",
     "title": "People, scope and rights"
    }
   }
  },
  "/v1/act/ground": {
   "post": {
    "operationId": "si_act_ground",
    "summary": "exactly one of a capture, an entity, a text or an address, and a breadth (`GroundInput`) → the grounding with its hypotheses (`GroundingAnswer`), the channels that ran and the ones not ready with their reason",
    "description": "From specification 24, ground a subject at a breadth. The call needs the user rung under a token with the act grant, and it is served by the platform.",
    "tags": [
     "act"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/GroundInput"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "GroundingAnswer"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": false,
    "x-rung": "user",
    "x-grant": "act",
    "x-where": "platform",
    "x-specification": {
     "number": "24",
     "title": "The capture extension: a person's own browser as a capture surface"
    }
   }
  },
  "/v1/act/hold_identity": {
   "post": {
    "operationId": "si_act_hold_identity",
    "summary": "the platform, the scopes the rows declare → a browser session for the person; then the credential with its vault entry",
    "description": "From specification 18, start a sign-in. The call needs the tenant rung under a token with the act grant, and it is served by the platform.",
    "tags": [
     "act"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/HoldIdentityInput"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "SignedInIdentity"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": false,
    "x-rung": "tenant",
    "x-grant": "act",
    "x-where": "platform",
    "x-specification": {
     "number": "18",
     "title": "The acquisition system and the connector standard"
    }
   }
  },
  "/v1/act/install_connector": {
   "post": {
    "operationId": "si_act_install_connector",
    "summary": "the connector, the ways chosen, and the identity for each → an installed connector, ready or not ready with its reason",
    "description": "From specification 07, install a connector. The call needs the brand rung under a token with the act grant, and it is served by the platform.",
    "tags": [
     "act"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/InstallConnectorInput"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "InstalledConnector"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": false,
    "x-rung": "brand",
    "x-grant": "act",
    "x-where": "platform",
    "x-specification": {
     "number": "07",
     "title": "Sources and acquisition"
    }
   }
  },
  "/v1/act/install_pack": {
   "post": {
    "operationId": "si_act_install_pack",
    "summary": "a brand, the pack and its version → the copies made, each naming its origin",
    "description": "From specification 12, install a vertical pack. The call needs the brand rung under a token with the act grant, and it is served by the platform.",
    "tags": [
     "act"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/InstallPackInput"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "InstallPackAnswer"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": false,
    "x-rung": "brand",
    "x-grant": "act",
    "x-where": "platform",
    "x-specification": {
     "number": "12",
     "title": "The market as it is held"
    }
   }
  },
  "/v1/act/invite": {
   "post": {
    "operationId": "si_act_invite",
    "summary": "an address and a role → the invitation, open, with its expiry",
    "description": "From specification 03, invite a person. The call needs the tenant rung under a token with the admin grant, and it is served by the platform.",
    "tags": [
     "act"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/InviteInput"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "Invitation"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": false,
    "x-rung": "tenant",
    "x-grant": "admin",
    "x-where": "platform",
    "x-specification": {
     "number": "03",
     "title": "People, scope and rights"
    }
   }
  },
  "/v1/act/keep_basket": {
   "post": {
    "operationId": "si_act_keep_basket",
    "summary": "its name, its scope and its proxies by version → the basket with its version, not ready while any proxy is",
    "description": "From specification 06, keep a basket of proxies. The call needs the strategy rung under a token with the act grant, and it is served by either, by the size bound.",
    "tags": [
     "act"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/KeepBasketInput"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "ProxyBasket"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": false,
    "x-rung": "strategy",
    "x-grant": "act",
    "x-where": "either",
    "x-specification": {
     "number": "06",
     "title": "The rules engine"
    }
   }
  },
  "/v1/act/keep_buyer": {
   "post": {
    "operationId": "si_act_keep_buyer",
    "summary": "the whole profile as it should stand next, with its predicate's tree given in full, its bindings and its ladder → the profile as its next version, ready, or not ready with the compiler's reason; the predicate kept by its hash",
    "description": "From specification 12, keep a buyer profile. The call needs the brand rung under a token with the act grant, and it is served by the platform.",
    "tags": [
     "act"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/KeepBuyerInput"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "KindOfBuyer"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": false,
    "x-rung": "brand",
    "x-grant": "act",
    "x-where": "platform",
    "x-specification": {
     "number": "12",
     "title": "The market as it is held"
    }
   }
  },
  "/v1/act/keep_ladder": {
   "post": {
    "operationId": "si_act_keep_ladder",
    "summary": "its ordered rungs, each a predicate over the population, and the rung that qualifies; the rungs' predicates in full where they are not yet kept → the ladder with its version, not ready while a rung's predicate is not kept or does not compile",
    "description": "From specification 06, keep a ladder. The call needs the brand rung under a token with the act grant, and it is served by either, by the size bound.",
    "tags": [
     "act"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/KeepLadderInput"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "Ladder"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": false,
    "x-rung": "brand",
    "x-grant": "act",
    "x-where": "either",
    "x-specification": {
     "number": "06",
     "title": "The rules engine"
    }
   }
  },
  "/v1/act/keep_monitor": {
   "post": {
    "operationId": "si_act_keep_monitor",
    "summary": "its name, its predicate, the place it runs at, the kind of signal it makes, the strategy where one is chosen, and for a platform monitor the vertical → the monitor with its version, not armed; not ready while its predicate does not compile at its place, with the reasons from compile",
    "description": "From specification 06, keep a monitor. The call needs the strategy rung under a token with the act grant, and it is served by either, by the size bound.",
    "tags": [
     "act"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/KeepMonitorInput"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "Monitor"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": false,
    "x-rung": "strategy",
    "x-grant": "act",
    "x-where": "either",
    "x-specification": {
     "number": "06",
     "title": "The rules engine"
    }
   }
  },
  "/v1/act/keep_play": {
   "post": {
    "operationId": "si_act_keep_play",
    "summary": "a play for a brand, written once by the platform as an original or by the tenant: its goal, its condition as a predicate over its population, its class, its tactic, the move it proposes, its measure, its window, its forecast rule, its comparison, when it stops, and its graph of moves as edges (`KeepPlayInput`); the predicates given in full are kept by their hashes in the same call → the play as the next version of its name under the brand, ready, or not ready with the first reason: *the condition does not compile*, *the graph has a cycle* naming the edge, *an edge cannot be evaluated* naming the edge and the population, *an edge is neither always nor guarded*",
    "description": "From specification 13, keep a play. The call needs the brand rung under a token with the act grant, and it is served by the platform.",
    "tags": [
     "act"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/KeepPlayInput"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "Play"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": false,
    "x-rung": "brand",
    "x-grant": "act",
    "x-where": "platform",
    "x-specification": {
     "number": "13",
     "title": "Strategy, action and learning"
    }
   }
  },
  "/v1/act/keep_proxy": {
   "post": {
    "operationId": "si_act_keep_proxy",
    "summary": "a proxy: its name, the facet kind it stands for, its scope, its rule as a predicate, its strength, its named control, its failure mode, and whether it is aggregate-only → the proxy with its version by hash, not ready until its controls have run and its calibration is read",
    "description": "From specification 06, keep a proxy. The call needs the strategy rung under a token with the act grant, and it is served by either, by the size bound.",
    "tags": [
     "act"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/KeepProxyInput"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "Proxy"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": false,
    "x-rung": "strategy",
    "x-grant": "act",
    "x-where": "either",
    "x-specification": {
     "number": "06",
     "title": "The rules engine"
    }
   }
  },
  "/v1/act/make_brand_design_system": {
   "post": {
    "operationId": "si_act_make_brand_design_system",
    "summary": "the brand, and the site when it is not the brand row's own → the brand's design system as the next version of its name: every colour, face, size, step, radius, shadow and the logo, each measured, inferred by a named rule or never measured, with the artefacts it was read from and the gaps; and the same values in the platform's token shape",
    "description": "From specification 12, make a brand's design system from its pages. The call needs the brand rung under a token with the act grant, and it is served by the platform.",
    "tags": [
     "act"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/MakeBrandDesignSystemInput"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "BrandDesignSystem"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": false,
    "x-rung": "brand",
    "x-grant": "act",
    "x-where": "platform",
    "x-specification": {
     "number": "12",
     "title": "The market as it is held"
    }
   }
  },
  "/v1/act/make_market_twin": {
   "post": {
    "operationId": "si_act_make_market_twin",
    "summary": "Makes one market twin from a vertical, a segment, a brand, a template and the way of going to market it serves → The answer gives the twin, ready or not ready with the stock the record cannot read named",
    "description": "From specification 26, make the twin of a market. The call needs the brand rung under a token with the act grant, and it is served by the platform.",
    "tags": [
     "act"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/MakeMarketTwinInput"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "MarketTwin"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": false,
    "x-rung": "brand",
    "x-grant": "act",
    "x-where": "platform",
    "x-specification": {
     "number": "26",
     "title": "The market as a living system: value chains, systems models, templates and the search for product-market fit"
    }
   }
  },
  "/v1/act/map_brand": {
   "post": {
    "operationId": "si_act_map_brand",
    "summary": "a web address, and the brand scope to hold the map → the map as it stands, with every part measured or never measured, and the demand raised",
    "description": "From specification 12, map a brand from a website. The call needs the brand rung under a token with the act grant, and it is served by the platform.",
    "tags": [
     "act"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/MapBrandInput"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "Map"
        }
       }
      }
     },
     "202": {
      "description": "a long step: the task, reported through the work family",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Task"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": true,
    "x-rung": "brand",
    "x-grant": "act",
    "x-where": "platform",
    "x-specification": {
     "number": "12",
     "title": "The market as it is held"
    }
   }
  },
  "/v1/act/mark_lead": {
   "post": {
    "operationId": "si_act_mark_lead",
    "summary": "Marks a condition on one lead, with a reason where the condition asks for one → The answer gives the lead's new outcome",
    "description": "From specification 08, mark a condition. The call needs the strategy rung under a token with the act grant, and it is served by the platform.",
    "tags": [
     "act"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/MarkLeadInput"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "Outcome"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": false,
    "x-rung": "strategy",
    "x-grant": "act",
    "x-where": "platform",
    "x-specification": {
     "number": "08",
     "title": "Leads and the team"
    }
   }
  },
  "/v1/act/mark_rival": {
   "post": {
    "operationId": "si_act_mark_rival",
    "summary": "a brand, the rival's entity, the evidence → the fact",
    "description": "From specification 12, mark a rival. The call needs the brand rung under a token with the act grant, and it is served by the platform.",
    "tags": [
     "act"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/MarkRivalInput"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "RivalMarking"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": false,
    "x-rung": "brand",
    "x-grant": "act",
    "x-where": "platform",
    "x-specification": {
     "number": "12",
     "title": "The market as it is held"
    }
   }
  },
  "/v1/act/membership": {
   "post": {
    "operationId": "si_act_membership",
    "summary": "the person's address, and the roles with where each is held → the membership",
    "description": "From specification 03, invite, suspend or remove a user, as a member or a guest. The call needs the tenant rung under a token with the act grant, and it is served by the platform.",
    "tags": [
     "act"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/MembershipInput"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "Membership"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": false,
    "x-rung": "tenant",
    "x-grant": "act",
    "x-where": "platform",
    "x-specification": {
     "number": "03",
     "title": "People, scope and rights"
    }
   }
  },
  "/v1/act/move_strategy": {
   "post": {
    "operationId": "si_act_move_strategy",
    "summary": "a strategy, the place to move it to and the reason (`StrategyMoveInput`): drafted, simulated, rolled out in part, running, paused, ended → the `Strategy` in its new place, with who moved it",
    "description": "From specification 13, move a strategy. The call needs the strategy rung under a token with the act grant, and it is served by the platform.",
    "tags": [
     "act"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/StrategyMoveInput"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "Strategy"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": false,
    "x-rung": "strategy",
    "x-grant": "act",
    "x-where": "platform",
    "x-specification": {
     "number": "13",
     "title": "Strategy, action and learning"
    }
   }
  },
  "/v1/act/notification_channel": {
   "post": {
    "operationId": "si_act_notification_channel",
    "summary": "Writes one notification channel, which is where a notice goes → The channel is ready once its test notice is acknowledged. Until then it is not ready, with the reason",
    "description": "From specification 08, write a notification channel. The call needs the user rung under a token with the act grant, and it is served by the platform.",
    "tags": [
     "act"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/NotificationChannelInput"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "NotificationChannel"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": false,
    "x-rung": "user",
    "x-grant": "act",
    "x-where": "platform",
    "x-specification": {
     "number": "08",
     "title": "Leads and the team"
    }
   }
  },
  "/v1/act/notification_rule": {
   "post": {
    "operationId": "si_act_notification_rule",
    "summary": "Writes one notification rule, which says who is told and never what happens → The answer gives the rule, with the next notice it will send",
    "description": "From specification 08, write a notification rule. The call needs the user rung under a token with the act grant, and it is served by the platform.",
    "tags": [
     "act"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/NotificationRuleInput"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "NotificationRule"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": false,
    "x-rung": "user",
    "x-grant": "act",
    "x-where": "platform",
    "x-specification": {
     "number": "08",
     "title": "Leads and the team"
    }
   }
  },
  "/v1/act/parameter": {
   "post": {
    "operationId": "si_act_parameter",
    "summary": "a parameter by its name, its value and its scope → the parameter as written, at its new version",
    "description": "From specification 01, change a setting. The call needs the user rung under a token with the act grant, and it is served by the platform.",
    "tags": [
     "act"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/ParameterWriteInput"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "Parameter"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": false,
    "x-rung": "user",
    "x-grant": "act",
    "x-where": "platform",
    "x-specification": {
     "number": "01",
     "title": "The kernel"
    }
   }
  },
  "/v1/act/place_participant": {
   "post": {
    "operationId": "si_act_place_participant",
    "summary": "Places one party in one role on one stock of a vertical's chain, with the evidence for it → The answer gives the participant, ready or not ready with the reason",
    "description": "From specification 26, place a participant. The call needs the brand rung under a token with the act grant, and it is served by the platform.",
    "tags": [
     "act"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/PlaceParticipantInput"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "MarketParticipant"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": false,
    "x-rung": "brand",
    "x-grant": "act",
    "x-where": "platform",
    "x-specification": {
     "number": "26",
     "title": "The market as a living system: value chains, systems models, templates and the search for product-market fit"
    }
   }
  },
  "/v1/act/probe_identity": {
   "post": {
    "operationId": "si_act_probe_identity",
    "summary": "the identity → its readiness with the reason",
    "description": "From specification 18, probe a held identity. The call needs the tenant rung under a token with the act grant, and it is served by the platform.",
    "tags": [
     "act"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/ProbeIdentityInput"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "Readiness"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": false,
    "x-rung": "tenant",
    "x-grant": "act",
    "x-where": "platform",
    "x-specification": {
     "number": "18",
     "title": "The acquisition system and the connector standard"
    }
   }
  },
  "/v1/act/propose_move": {
   "post": {
    "operationId": "si_act_propose_move",
    "summary": "a match of a play → the move, proposed, with its forecast and its assignments as facts",
    "description": "From specification 13, propose a move. The call needs the strategy rung under a token with the act grant, and it is served by the platform.",
    "tags": [
     "act"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/ProposeMoveInput"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "Move"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": false,
    "x-rung": "strategy",
    "x-grant": "act",
    "x-where": "platform",
    "x-specification": {
     "number": "13",
     "title": "Strategy, action and learning"
    }
   }
  },
  "/v1/act/publish": {
   "post": {
    "operationId": "si_act_publish",
    "summary": "the version, the address, the visibility → the publishing, proposed or published, and its receipt",
    "description": "From specification 17, publish. The call needs the brand rung under a token with the act grant, and it is served by the platform.",
    "tags": [
     "act"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/PublishInput"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "Publishing"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": false,
    "x-rung": "brand",
    "x-grant": "act",
    "x-where": "platform",
    "x-specification": {
     "number": "17",
     "title": "Documents from the record"
    }
   }
  },
  "/v1/act/raise_need": {
   "post": {
    "operationId": "si_act_raise_need",
    "summary": "a cell's key, the reason and the value → the cell, wanted",
    "description": "From specification 07, raise a need. The call needs the brand rung under a token with the act grant, and it is served by the platform.",
    "tags": [
     "act"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/RaiseNeedInput"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "DemandCell"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": false,
    "x-rung": "brand",
    "x-grant": "act",
    "x-where": "platform",
    "x-specification": {
     "number": "07",
     "title": "Sources and acquisition"
    }
   }
  },
  "/v1/act/record_fit_reading": {
   "post": {
    "operationId": "si_act_record_fit_reading",
    "summary": "Records one result of a person's own test: the tactic, the market, the measure, its value, the sample and where it came from → The answer gives the reading as a fact the record keeps",
    "description": "From specification 26, record a fit reading. The call needs the brand rung under a token with the act grant, and it is served by the platform.",
    "tags": [
     "act"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/FitReadingInput"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "FitReading"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": false,
    "x-rung": "brand",
    "x-grant": "act",
    "x-where": "platform",
    "x-specification": {
     "number": "26",
     "title": "The market as a living system: value chains, systems models, templates and the search for product-market fit"
    }
   }
  },
  "/v1/act/remember": {
   "post": {
    "operationId": "si_act_remember",
    "summary": "a memory and its scope → the memory, or a later fact that ends it",
    "description": "From specification 09, remember, or forget. The call needs the strategy rung under a token with the act grant, and it is served by the platform.",
    "tags": [
     "act"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/RememberInput"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "Memory"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": false,
    "x-rung": "strategy",
    "x-grant": "act",
    "x-where": "platform",
    "x-specification": {
     "number": "09",
     "title": "The harness"
    }
   }
  },
  "/v1/act/routing": {
   "post": {
    "operationId": "si_act_routing",
    "summary": "Writes, previews or arms a routing rule from a predicate and the people or the team it attaches → A write or an arm gives the rule. A preview gives the leads it would have admitted and who would have had them, read over history",
    "description": "From specification 08, write, preview and arm a routing rule. The call needs the brand rung under a token with the act grant, and it is served by the platform.",
    "tags": [
     "act"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/RoutingInput"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "RoutingAnswer"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": false,
    "x-rung": "brand",
    "x-grant": "act",
    "x-where": "platform",
    "x-specification": {
     "number": "08",
     "title": "Leads and the team"
    }
   }
  },
  "/v1/act/run_action": {
   "post": {
    "operationId": "si_act_run_action",
    "summary": "an action prepared by a move → the action, allowed or not allowed with the reason, then running, then done or failed",
    "description": "From specification 13, run an action. The call needs the strategy rung under a token with the act grant, and it is served by the platform.",
    "tags": [
     "act"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/RunActionInput"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "Action"
        }
       }
      }
     },
     "202": {
      "description": "a long step: the task, reported through the work family",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Task"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": true,
    "x-rung": "strategy",
    "x-grant": "act",
    "x-where": "platform",
    "x-specification": {
     "number": "13",
     "title": "Strategy, action and learning"
    }
   }
  },
  "/v1/act/scrape_template": {
   "post": {
    "operationId": "si_act_scrape_template",
    "summary": "a `TemplateInput` → the template, ready or not ready with the reason; for a preview, the rows from its samples and a bounded live scope",
    "description": "From specification 18, write, preview, arm or retire a scrape template. The call needs the brand rung under a token with the act grant, and it is served by the platform.",
    "tags": [
     "act"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/TemplateInput"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "ExtractionTemplate"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": false,
    "x-rung": "brand",
    "x-grant": "act",
    "x-where": "platform",
    "x-specification": {
     "number": "18",
     "title": "The acquisition system and the connector standard"
    }
   }
  },
  "/v1/act/seed_tenant": {
   "post": {
    "operationId": "si_act_seed_tenant",
    "summary": "the manifest and the window → the seed as work, then its receipt with counts by kind and what is not ready",
    "description": "From specification 12, seed a tenant from a manifest. The call needs the platform rung under a token with the admin grant, and it is served by the platform.",
    "tags": [
     "act"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/SeedInput"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "SeedReceipt"
        }
       }
      }
     },
     "202": {
      "description": "a long step: the task, reported through the work family",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Task"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": true,
    "x-rung": "platform",
    "x-grant": "admin",
    "x-where": "platform",
    "x-specification": {
     "number": "12",
     "title": "The market as it is held"
    }
   }
  },
  "/v1/act/set_aside_run": {
   "post": {
    "operationId": "si_act_set_aside_run",
    "summary": "a `SetAsideRunInput`: the run's key and a person's plain reason → the `ScrapeRun`, kept in the parked place with the reason, which the beat never takes up; each move is an event with the reason",
    "description": "From specification 18, set a run aside. The call needs the tenant rung under a token with the act grant, and it is served by the platform.",
    "tags": [
     "act"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/SetAsideRunInput"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "ScrapeRun"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": false,
    "x-rung": "tenant",
    "x-grant": "act",
    "x-where": "platform",
    "x-specification": {
     "number": "18",
     "title": "The acquisition system and the connector standard"
    }
   }
  },
  "/v1/act/settle": {
   "post": {
    "operationId": "si_act_settle",
    "summary": "a hypothesis, the standing, the caller → the hypothesis settled, with who settled it and on what",
    "description": "From specification 01, settle a claim. The call needs the strategy rung under a token with the act grant, and it is served by either, by the size bound.",
    "tags": [
     "act"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/SettleInput"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "Hypothesis"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": false,
    "x-rung": "strategy",
    "x-grant": "act",
    "x-where": "either",
    "x-specification": {
     "number": "01",
     "title": "The kernel"
    }
   }
  },
  "/v1/act/settle_match": {
   "post": {
    "operationId": "si_act_settle_match",
    "summary": "the possible match, and a user's answer or a proof → confirmed, with the merge. Or rejected",
    "description": "From specification 05, settle a possible match. The call needs the brand rung under a token with the act grant, and it is served by the platform.",
    "tags": [
     "act"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/SettleMatchInput"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "SettleMatchAnswer"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": false,
    "x-rung": "brand",
    "x-grant": "act",
    "x-where": "platform",
    "x-specification": {
     "number": "05",
     "title": "Identity resolution"
    }
   }
  },
  "/v1/act/sign_up": {
   "post": {
    "operationId": "si_act_sign_up",
    "summary": "the company's name, and its domain where known, from a signed-in person who belongs to no tenant → the tenant, made on the trial plan with the person as its first member and owner, in one transaction with its events",
    "description": "From specification 03, sign up. The call needs the user rung under a token with the act grant, and it is served by the platform.",
    "tags": [
     "act"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/SignUpInput"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "Tenant"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": false,
    "x-rung": "user",
    "x-grant": "act",
    "x-where": "platform",
    "x-specification": {
     "number": "03",
     "title": "People, scope and rights"
    }
   }
  },
  "/v1/act/strategy": {
   "post": {
    "operationId": "si_act_strategy",
    "summary": "a brand or brands, a name, a window if any → the strategy, with the standing measures",
    "description": "From specification 13, make a strategy. The call needs the brand rung under a token with the act grant, and it is served by the platform.",
    "tags": [
     "act"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/StrategyInput"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "Strategy"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": false,
    "x-rung": "brand",
    "x-grant": "act",
    "x-where": "platform",
    "x-specification": {
     "number": "13",
     "title": "Strategy, action and learning"
    }
   }
  },
  "/v1/act/sync_rule": {
   "post": {
    "operationId": "si_act_sync_rule",
    "summary": "the installed connector, the offer, the fields of section 2.8 → the rule; for a preview, what it would read and push",
    "description": "From specification 18, write, preview and arm a sync rule. The call needs the brand rung under a token with the act grant, and it is served by the platform.",
    "tags": [
     "act"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/SyncRuleInput"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "SyncPreview"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": false,
    "x-rung": "brand",
    "x-grant": "act",
    "x-where": "platform",
    "x-specification": {
     "number": "18",
     "title": "The acquisition system and the connector standard"
    }
   }
  },
  "/v1/act/undo": {
   "post": {
    "operationId": "si_act_undo",
    "summary": "a done action → the action, undone, and the inverse's own action",
    "description": "From specification 13, undo an action. The call needs the strategy rung under a token with the act grant, and it is served by the platform.",
    "tags": [
     "act"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/UndoInput"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "UndoAnswer"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": false,
    "x-rung": "strategy",
    "x-grant": "act",
    "x-where": "platform",
    "x-specification": {
     "number": "13",
     "title": "Strategy, action and learning"
    }
   }
  },
  "/v1/act/undo_action": {
   "post": {
    "operationId": "si_act_undo_action",
    "summary": "the move → the inverse move",
    "description": "From specification 18, undo an action. The call needs the brand rung under a token with the act grant, and it is served by the platform.",
    "tags": [
     "act"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/UndoActionInput"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "Move"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": false,
    "x-rung": "brand",
    "x-grant": "act",
    "x-where": "platform",
    "x-specification": {
     "number": "18",
     "title": "The acquisition system and the connector standard"
    }
   }
  },
  "/v1/act/undo_merge": {
   "post": {
    "operationId": "si_act_undo_merge",
    "summary": "the merge or the decision, and the reason → a parting. Or a later decision, with the facts written again",
    "description": "From specification 05, undo a merge. Undo a decision. The call needs the brand rung under a token with the act grant, and it is served by the platform.",
    "tags": [
     "act"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/UndoMergeInput"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "UndoMergeAnswer"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": false,
    "x-rung": "brand",
    "x-grant": "act",
    "x-where": "platform",
    "x-specification": {
     "number": "05",
     "title": "Identity resolution"
    }
   }
  },
  "/v1/act/watch": {
   "post": {
    "operationId": "si_act_watch",
    "summary": "a public entity → a watched identity, with its monitor armed",
    "description": "From specification 07, watch an identity. The call needs the brand rung under a token with the act grant, and it is served by the platform.",
    "tags": [
     "act"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/WatchInput"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "WatchedIdentity"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": false,
    "x-rung": "brand",
    "x-grant": "act",
    "x-where": "platform",
    "x-specification": {
     "number": "07",
     "title": "Sources and acquisition"
    }
   }
  },
  "/v1/act/watch_site": {
   "post": {
    "operationId": "si_act_watch_site",
    "summary": "a `WatchSiteInput` → the watch, ready or not ready; for a preview, the pages it would read and the changes it would have raised over the window",
    "description": "From specification 18, watch a site. The call needs the brand rung under a token with the act grant, and it is served by the platform.",
    "tags": [
     "act"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/WatchSiteInput"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "SiteWatch"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": false,
    "x-rung": "brand",
    "x-grant": "act",
    "x-where": "platform",
    "x-specification": {
     "number": "18",
     "title": "The acquisition system and the connector standard"
    }
   }
  },
  "/v1/act/webhook": {
   "post": {
    "operationId": "si_act_webhook",
    "summary": "the address, what to be told about, and a secret to sign with → the row",
    "description": "From specification 10, register an address to be told at. The call needs the tenant rung under a token with the act grant, and it is served by the platform.",
    "tags": [
     "act"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/WebhookInput"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "Telling"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": false,
    "x-rung": "tenant",
    "x-grant": "act",
    "x-where": "platform",
    "x-specification": {
     "number": "10",
     "title": "The API gateway"
    }
   }
  },
  "/v1/act/weigh": {
   "post": {
    "operationId": "si_act_weigh",
    "summary": "a hypothesis, and a fact or a test's reading → the hypothesis with the evidence attached and its standing recomputed against its bar",
    "description": "From specification 01, weigh a claim. The call needs the strategy rung under a token with the act grant, and it is served by either, by the size bound.",
    "tags": [
     "act"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/WeighInput"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "Hypothesis"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": false,
    "x-rung": "strategy",
    "x-grant": "act",
    "x-where": "either",
    "x-specification": {
     "number": "01",
     "title": "The kernel"
    }
   }
  },
  "/v1/act/withdraw": {
   "post": {
    "operationId": "si_act_withdraw",
    "summary": "a publishing → the publishing, withdrawn",
    "description": "From specification 17, withdraw. The call needs the brand rung under a token with the act grant, and it is served by the platform.",
    "tags": [
     "act"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/WithdrawInput"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "Publishing"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": false,
    "x-rung": "brand",
    "x-grant": "act",
    "x-where": "platform",
    "x-specification": {
     "number": "17",
     "title": "Documents from the record"
    }
   }
  },
  "/v1/act/workflow": {
   "post": {
    "operationId": "si_act_workflow",
    "summary": "its steps and what starts it → the workflow, and for a preview what it would have done over history, acting on nothing",
    "description": "From specification 09, write, preview and arm a workflow. The call needs the strategy rung under a token with the act grant, and it is served by the platform.",
    "tags": [
     "act"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/WorkflowInput"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "WorkflowAnswer"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": false,
    "x-rung": "strategy",
    "x-grant": "act",
    "x-where": "platform",
    "x-specification": {
     "number": "09",
     "title": "The harness"
    }
   }
  },
  "/v1/work/backfill": {
   "post": {
    "operationId": "si_work_backfill",
    "summary": "a source, an access method, a window, a plane → the job; then partitions carrying the window",
    "description": "From specification 18, run a backfill. The call needs the brand rung under a token with the work grant, and it is served by the platform.",
    "tags": [
     "work"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/BackfillInput"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "Job"
        }
       }
      }
     },
     "202": {
      "description": "a long step: the task, reported through the work family",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Task"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": true,
    "x-rung": "brand",
    "x-grant": "work",
    "x-where": "platform",
    "x-specification": {
     "number": "18",
     "title": "The acquisition system and the connector standard"
    }
   }
  },
  "/v1/work/browse_open": {
   "post": {
    "operationId": "si_work_browse_open",
    "summary": "a `BrowseOpenInput` → the session, opened, with its live view",
    "description": "From specification 18, open a browsing session. The call needs the strategy rung under a token with the work grant, and it is served by either, by the size bound.",
    "tags": [
     "work"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/BrowseOpenInput"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "BrowsingSession"
        }
       }
      }
     },
     "202": {
      "description": "a long step: the task, reported through the work family",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Task"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": true,
    "x-rung": "strategy",
    "x-grant": "work",
    "x-where": "either",
    "x-specification": {
     "number": "18",
     "title": "The acquisition system and the connector standard"
    }
   }
  },
  "/v1/work/browse_take_over": {
   "post": {
    "operationId": "si_work_browse_take_over",
    "summary": "a `BrowseTakeOverInput` → the session, driven by the person or handed back",
    "description": "From specification 18, take over, or hand back, a browsing session. The call needs the strategy rung under a token with the work grant, and it is served by either, by the size bound.",
    "tags": [
     "work"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/BrowseTakeOverInput"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "BrowsingSession"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": false,
    "x-rung": "strategy",
    "x-grant": "work",
    "x-where": "either",
    "x-specification": {
     "number": "18",
     "title": "The acquisition system and the connector standard"
    }
   }
  },
  "/v1/work/build_facet": {
   "post": {
    "operationId": "si_work_build_facet",
    "summary": "a facet kind, a seed (a predicate, a list of communities, or a place from the gazetteer), the scope, and the positive and negative controls → the facet's register with every candidate kept or dropped and its reason in words, its people, its pairs and its trend, and the facet not ready until its calibration is read",
    "description": "From specification 06, build a facet. The call needs the strategy rung under a token with the work grant, and it is served by either, by the size bound.",
    "tags": [
     "work"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/BuildFacetInput"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "Facet"
        }
       }
      }
     },
     "202": {
      "description": "a long step: the task, reported through the work family",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Task"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": true,
    "x-rung": "strategy",
    "x-grant": "work",
    "x-where": "either",
    "x-specification": {
     "number": "06",
     "title": "The rules engine"
    }
   }
  },
  "/v1/work/cancel": {
   "post": {
    "operationId": "si_work_cancel",
    "summary": "the preview → nothing",
    "description": "From specification 06, cancel a preview. The call needs the strategy rung under a token with the work grant, and it is served by either, by the size bound.",
    "tags": [
     "work"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/CancelInput"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "Nothing"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": false,
    "x-rung": "strategy",
    "x-grant": "work",
    "x-where": "either",
    "x-specification": {
     "number": "06",
     "title": "The rules engine"
    }
   }
  },
  "/v1/work/download_set": {
   "post": {
    "operationId": "si_work_download_set",
    "summary": "a `DownloadInput` → `DownloadJob` rows, one per file",
    "description": "From specification 18, download files. The call needs the strategy rung under a token with the work grant, and it is served by either, by the size bound.",
    "tags": [
     "work"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/DownloadSetInput"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "[DownloadJob]"
        }
       }
      }
     },
     "202": {
      "description": "a long step: the task, reported through the work family",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Task"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": true,
    "x-rung": "strategy",
    "x-grant": "work",
    "x-where": "either",
    "x-specification": {
     "number": "18",
     "title": "The acquisition system and the connector standard"
    }
   }
  },
  "/v1/work/download_set_control": {
   "post": {
    "operationId": "si_work_download_set_control",
    "summary": "a `DownloadControlInput` → the jobs in their new place",
    "description": "From specification 18, pause, resume or cancel a download. The call needs the strategy rung under a token with the work grant, and it is served by either, by the size bound.",
    "tags": [
     "work"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/DownloadControlInput"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "[DownloadJob]"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": false,
    "x-rung": "strategy",
    "x-grant": "work",
    "x-where": "either",
    "x-specification": {
     "number": "18",
     "title": "The acquisition system and the connector standard"
    }
   }
  },
  "/v1/work/lay_strategy": {
   "post": {
    "operationId": "si_work_lay_strategy",
    "summary": "Lays one strategy on one twin, with the bounds of the run → The call returns the simulation whose interventions are the strategy's armed plays, then the frame",
    "description": "From specification 26, lay a strategy on a twin. The call needs the strategy rung under a token with the work grant, and it is served by the platform.",
    "tags": [
     "work"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/LayStrategyInput"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "MarketSimulation"
        }
       }
      }
     },
     "202": {
      "description": "a long step: the task, reported through the work family",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Task"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": true,
    "x-rung": "strategy",
    "x-grant": "work",
    "x-where": "platform",
    "x-specification": {
     "number": "26",
     "title": "The market as a living system: value chains, systems models, templates and the search for product-market fit"
    }
   }
  },
  "/v1/work/mine": {
   "post": {
    "operationId": "si_work_mine",
    "summary": "the caller → every run the caller started that is still running, each with what it has done, whether it may be stopped, and the tool that stops it",
    "description": "From specification 11, my running work. The call needs the user rung under a token with the work grant, and it is served by either, by the size bound.",
    "tags": [
     "work"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/Nothing"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "MyWork"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": false,
    "x-rung": "user",
    "x-grant": "work",
    "x-where": "either",
    "x-specification": {
     "number": "11",
     "title": "The ops console"
    }
   }
  },
  "/v1/work/run_procedure": {
   "post": {
    "operationId": "si_work_run_procedure",
    "summary": "the procedure and its inputs → a task",
    "description": "From specification 09, follow a named procedure. The call needs the strategy rung under a token with the work grant, and it is served by either, by the size bound.",
    "tags": [
     "work"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/RunProcedureInput"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "Task"
        }
       }
      }
     },
     "202": {
      "description": "a long step: the task, reported through the work family",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Task"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": true,
    "x-rung": "strategy",
    "x-grant": "work",
    "x-where": "either",
    "x-specification": {
     "number": "09",
     "title": "The harness"
    }
   }
  },
  "/v1/work/search_fit": {
   "post": {
    "operationId": "si_work_search_fit",
    "summary": "Searches for product-market fit from one end: an offering looking for its markets, or a concept looking for a market → The call returns the search as work, then the frame that holds what it settled",
    "description": "From specification 26, search for product-market fit. The call needs the brand rung under a token with the work grant, and it is served by the platform.",
    "tags": [
     "work"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/FitSearchInput"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "FitSearch"
        }
       }
      }
     },
     "202": {
      "description": "a long step: the task, reported through the work family",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Task"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": true,
    "x-rung": "brand",
    "x-grant": "work",
    "x-where": "platform",
    "x-specification": {
     "number": "26",
     "title": "The market as a living system: value chains, systems models, templates and the search for product-market fit"
    }
   }
  },
  "/v1/work/simulate_market": {
   "post": {
    "operationId": "si_work_simulate_market",
    "summary": "Runs one systems model template over a market, with the interventions to try and the bounds of the run → The call returns the simulation as work, then the frame that holds what it reached",
    "description": "From specification 26, simulate a market. The call needs the brand rung under a token with the work grant, and it is served by the platform.",
    "tags": [
     "work"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/MarketSimulationInput"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "MarketSimulation"
        }
       }
      }
     },
     "202": {
      "description": "a long step: the task, reported through the work family",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Task"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": true,
    "x-rung": "brand",
    "x-grant": "work",
    "x-where": "platform",
    "x-specification": {
     "number": "26",
     "title": "The market as a living system: value chains, systems models, templates and the search for product-market fit"
    }
   }
  },
  "/v1/work/status": {
   "post": {
    "operationId": "si_work_status",
    "summary": "the task → its progress. Or nothing",
    "description": "From specification 09, watch, answer or stop a task. The call needs the strategy rung under a token with the work grant, and it is served by either, by the size bound.",
    "tags": [
     "work"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/StatusInput"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "Task"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": false,
    "x-rung": "strategy",
    "x-grant": "work",
    "x-where": "either",
    "x-specification": {
     "number": "09",
     "title": "The harness"
    }
   }
  },
  "/v1/work/local_procedure": {
   "post": {
    "operationId": "si_work_local_procedure",
    "summary": "a named procedure whose inputs are files in the workspace → a task run by the app with its steps in the app's own journal, resumable",
    "description": "From the local server's own. The call needs the strategy rung under a token with the work grant, and it is served by the installed app.",
    "tags": [
     "work"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/LocalProcedureInput"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "Task"
        }
       }
      }
     },
     "202": {
      "description": "a long step: the task, reported through the work family",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Task"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": true,
    "x-rung": "strategy",
    "x-grant": "work",
    "x-where": "app",
    "x-specification": {
     "number": "app",
     "title": ""
    }
   }
  },
  "/v1/harness/delegate": {
   "post": {
    "operationId": "si_harness_delegate",
    "summary": "words, in a strategy → response cards, as they come, and a task where the work goes on",
    "description": "From specification 09, say something to the agent. The call needs the strategy rung under a token with the work grant, and it is served by the platform.",
    "tags": [
     "harness"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/DelegateInput"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "Task"
        }
       }
      }
     },
     "202": {
      "description": "a long step: the task, reported through the work family",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Task"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": true,
    "x-rung": "strategy",
    "x-grant": "work",
    "x-where": "platform",
    "x-specification": {
     "number": "09",
     "title": "The harness"
    }
   }
  },
  "/v1/files/download": {
   "post": {
    "operationId": "si_files_download",
    "summary": "a file's pointer from a task or a document, and where in the workspace to put it → progress by bytes moved of bytes in all, then the path inside the workspace",
    "description": "From the local server's own. The call needs the user rung under a token with the files grant, and it is served by the installed app.",
    "tags": [
     "files"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/DownloadInput"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "FileTransfer"
        }
       }
      }
     },
     "202": {
      "description": "a long step: the task, reported through the work family",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Task"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": true,
    "x-rung": "user",
    "x-grant": "files",
    "x-where": "app",
    "x-specification": {
     "number": "app",
     "title": ""
    }
   }
  },
  "/v1/files/upload": {
   "post": {
    "operationId": "si_files_upload",
    "summary": "a path inside the workspace, and what the file is for → progress, then the pointer the platform kept",
    "description": "From the local server's own. The call needs the user rung under a token with the files grant, and it is served by the installed app.",
    "tags": [
     "files"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/UploadInput"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "FileTransfer"
        }
       }
      }
     },
     "202": {
      "description": "a long step: the task, reported through the work family",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Task"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": true,
    "x-rung": "user",
    "x-grant": "files",
    "x-where": "app",
    "x-specification": {
     "number": "app",
     "title": ""
    }
   }
  },
  "/v1/files/list": {
   "post": {
    "operationId": "si_files_list",
    "summary": "a path inside the workspace, or nothing → the files with their sizes, kinds and when they were written",
    "description": "From the local server's own. The call needs the user rung under a token with the files grant, and it is served by the installed app.",
    "tags": [
     "files"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/Nothing"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "FileList"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": false,
    "x-rung": "user",
    "x-grant": "files",
    "x-where": "app",
    "x-specification": {
     "number": "app",
     "title": ""
    }
   }
  },
  "/v1/files/workspace": {
   "post": {
    "operationId": "si_files_workspace",
    "summary": "nothing, or a folder to make the workspace → the workspace folder, and every act the app made in it on the ledger",
    "description": "From the local server's own. The call needs the user rung under a token with the files grant, and it is served by the installed app.",
    "tags": [
     "files"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/Nothing"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "Workspace"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": false,
    "x-rung": "user",
    "x-grant": "files",
    "x-where": "app",
    "x-specification": {
     "number": "app",
     "title": ""
    }
   }
  },
  "/v1/economics/benchmarks": {
   "post": {
    "operationId": "si_economics_benchmarks",
    "summary": "a driver, and a population or a buyer profile → the benchmarks that apply, each with its interval, population, period, source and what its rights allow",
    "description": "From specification 25, si.economics.benchmarks. The call needs the tenant rung under a token with the read grant, and it is served by either, by the size bound.",
    "tags": [
     "economics"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/BenchmarksInput"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "[Benchmark]"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": false,
    "x-rung": "tenant",
    "x-grant": "read",
    "x-where": "either",
    "x-specification": {
     "number": "25",
     "title": "The economics of the market: business models, benchmarks, the return to a buyer, and prices"
    }
   }
  },
  "/v1/economics/estimate": {
   "post": {
    "operationId": "si_economics_estimate",
    "summary": "`EstimateReturnInput`: the buyer (an entity, a lead, a buyer profile or a session), the offering or tier, the stated numbers, and whether to simulate → a `Card` whose body is a `FrameOfASale`",
    "description": "From specification 25, si.economics.estimate. The call needs the tenant rung under a token with the read grant, and it is served by either, by the size bound.",
    "tags": [
     "economics"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/EstimateReturnInput"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "SaleFrame"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": false,
    "x-rung": "tenant",
    "x-grant": "read",
    "x-where": "either",
    "x-specification": {
     "number": "25",
     "title": "The economics of the market: business models, benchmarks, the return to a buyer, and prices"
    }
   }
  },
  "/v1/economics/ladder": {
   "post": {
    "operationId": "si_economics_ladder",
    "summary": "nothing, or a version → the price ladder in force with its study",
    "description": "From specification 25, si.economics.ladder. The call needs the tenant rung under a token with the read grant, and it is served by either, by the size bound.",
    "tags": [
     "economics"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/LadderInput"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "PriceLadder"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": false,
    "x-rung": "tenant",
    "x-grant": "read",
    "x-where": "either",
    "x-specification": {
     "number": "25",
     "title": "The economics of the market: business models, benchmarks, the return to a buyer, and prices"
    }
   }
  },
  "/v1/economics/models": {
   "post": {
    "operationId": "si_economics_models",
    "summary": "a vertical, a segment or a buyer profile → the business models that apply, each with its readiness, its drivers and its outputs",
    "description": "From specification 25, si.economics.models. The call needs the tenant rung under a token with the read grant, and it is served by either, by the size bound.",
    "tags": [
     "economics"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/ModelsInput"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "[BusinessModel]"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": false,
    "x-rung": "tenant",
    "x-grant": "read",
    "x-where": "either",
    "x-specification": {
     "number": "25",
     "title": "The economics of the market: business models, benchmarks, the return to a buyer, and prices"
    }
   }
  },
  "/v1/economics/offer": {
   "post": {
    "operationId": "si_economics_offer",
    "summary": "`ReadingOfferedInput`: the buyer profile, the model, the drivers to ask → the reading offered, ready or not ready with the reason, and its page's address",
    "description": "From specification 25, si.economics.offer. The call needs the brand rung under a token with the act grant, and it is served by the platform.",
    "tags": [
     "economics"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/ReadingOfferedInput"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "ReadingOffered"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": false,
    "x-rung": "brand",
    "x-grant": "act",
    "x-where": "platform",
    "x-specification": {
     "number": "25",
     "title": "The economics of the market: business models, benchmarks, the return to a buyer, and prices"
    }
   }
  },
  "/v1/economics/study": {
   "post": {
    "operationId": "si_economics_study",
    "summary": "`PricingStudyInput`: the methods to run, the buyer profiles, the rivals' window → the study as a fact and its candidate ladders as a set of options",
    "description": "From specification 25, si.economics.study. The call needs the platform rung under a token with the act grant, and it is served by the platform.",
    "tags": [
     "economics"
    ],
    "parameters": [
     {
      "name": "Scale-Scope",
      "in": "header",
      "required": true,
      "description": "the scope the call runs in: tenant/<id>, then /brand/<id>, then /strategy/<id>",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-True-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been true on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-As-Known-On",
      "in": "header",
      "required": false,
      "description": "the date the facts must have been known on; defaults to now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "Scale-Key",
      "in": "header",
      "required": false,
      "description": "for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "$ref": "#/components/schemas/PricingStudyInput"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "the answer: the card with its foot, whose body is the output type",
      "content": {
       "application/json": {
        "schema": {
         "allOf": [
          {
           "$ref": "#/components/schemas/Answer"
          }
         ],
         "x-body": "PricingStudy"
        }
       }
      }
     },
     "202": {
      "description": "a long step: the task, reported through the work family",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Task"
        }
       }
      }
     },
     "400": {
      "description": "an input the type refuses, naming the field",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "401": {
      "description": "no session; the body names the sign-in provider's address",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "403": {
      "description": "not allowed, with the reason from the one permission check and the scope needed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "404": {
      "description": "a unit the caller may not see, or one that does not exist; the same answer for both",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "409": {
      "description": "a repeat under the same key with a different input",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "429": {
      "description": "too many; Retry-After says when to come back",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     },
     "500": {
      "description": "the platform failed; the body carries the run's id and never a stack",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Refusal"
        }
       }
      }
     }
    },
    "x-long-step": true,
    "x-rung": "platform",
    "x-grant": "act",
    "x-where": "platform",
    "x-specification": {
     "number": "25",
     "title": "The economics of the market: business models, benchmarks, the return to a buyer, and prices"
    }
   }
  }
 },
 "components": {
  "securitySchemes": {
   "bearer": {
    "type": "http",
    "scheme": "bearer",
    "bearerFormat": "JWT",
    "description": "a token from the sign-in provider (OpenID Connect), bound to one tenant; access scopes read, ask, act, work, files"
   }
  },
  "schemas": {
   "BrandChange": {
    "title": "BrandChange",
    "description": "one value that differs between two versions of a design system",
    "type": "object",
    "properties": {
     "path": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "before": {
      "description": ""
     },
     "after": {
      "description": ""
     },
     "basis_before": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "basis_after": {
      "type": "string",
      "format": "text",
      "description": ""
     }
    },
    "required": [
     "path"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "DESIGN/the-brand-graph-from-a-domain §5"
   },
   "ClassPass": {
    "title": "ClassPass",
    "description": "one pass of the beat that reads the class of every armed play from the rivals' coverage of its kind against the parameter's count: a reading written for each, the class moved where the reading moved, and the claim under test settled and made again",
    "type": "object",
    "properties": {
     "plays": {
      "type": "integer",
      "format": "count",
      "description": "the armed plays read"
     },
     "readings": {
      "type": "integer",
      "format": "count",
      "description": "class readings written"
     },
     "moved": {
      "type": "integer",
      "format": "count",
      "description": "plays whose class moved"
     },
     "withheld": {
      "type": "integer",
      "format": "count",
      "description": "plays whose class could not be read, with the reason on the play"
     },
     "at": {
      "type": "string",
      "format": "time",
      "description": ""
     }
    },
    "required": [
     "plays",
     "readings",
     "moved",
     "withheld",
     "at"
    ],
    "additionalProperties": false,
    "x-kind": "work",
    "x-scope": "platform",
    "x-store": "postgres",
    "x-key": "the beat's tick",
    "x-places": [
     "asked",
     "done"
    ],
    "x-from": "MODELS/the-strategy-system-as-a-formal-model §7"
   },
   "Effect": {
    "title": "Effect",
    "description": "the change where it ran against the change where it did not, with an interval; or withheld with what would settle it",
    "type": "object",
    "properties": {
     "move": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "design": {
      "type": "string",
      "description": "the design that read it, fixed before the window opened",
      "x-register": "DesignOfAnEffect"
     },
     "change": {
      "$ref": "#/components/schemas/Interval",
      "description": ""
     },
     "holdout_change": {
      "$ref": "#/components/schemas/Interval",
      "description": ""
     },
     "effect": {
      "$ref": "#/components/schemas/Interval",
      "description": ""
     },
     "floor": {
      "type": "number",
      "format": "share",
      "description": ""
     },
     "withheld": {
      "type": "boolean",
      "format": "bool",
      "description": ""
     },
     "what_would_settle_it": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "forecast": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "assignments": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "id"
      },
      "description": ""
     },
     "read_at": {
      "type": "string",
      "format": "time",
      "description": ""
     },
     "verdict": {
      "type": "string",
      "enum": [
       "held",
       "missed",
       "cannot tell"
      ],
      "description": "the forecast's verdict: held when the effect's lower bound clears the number that proves it wrong, missed when its upper bound does not, cannot tell between (decision D-162)"
     },
     "share_above_zero": {
      "type": "number",
      "format": "share",
      "description": "the share of the effect's interval that lies above zero; absent when the effect is withheld"
     },
     "cause_claimed": {
      "type": "boolean",
      "format": "bool",
      "description": "true when the share above zero reaches the bar of the row that names the share below which no cause is claimed (specification 13 section 2.3; decision D-163), so the impact is raised; false leaves the effect measured and raises no impact"
     }
    },
    "required": [
     "move",
     "design",
     "floor",
     "withheld",
     "forecast",
     "assignments",
     "read_at",
     "cause_claimed"
    ],
    "additionalProperties": false,
    "x-kind": "fact",
    "x-scope": "strategy",
    "x-store": "postgres+lake",
    "x-key": "the move and the window",
    "x-places": [],
    "x-from": "13 §2.1; MODELS/telling-an-effect-from-the-tide"
   },
   "Backfill": {
    "title": "Backfill",
    "description": "one backfill of a source over a window, read in blocks with a ledger row (a Job) each: what it reads, by which way, at which code version, from a parse already made by the connector's own implementation where one is held, and how far it has got",
    "type": "object",
    "properties": {
     "source": {
      "type": "string",
      "description": "",
      "x-register": "Source"
     },
     "way": {
      "type": "string",
      "description": "",
      "x-register": "AccessMethod"
     },
     "window": {
      "$ref": "#/components/schemas/Window",
      "description": ""
     },
     "plane": {
      "$ref": "#/components/schemas/Plane",
      "description": ""
     },
     "blocks": {
      "type": "integer",
      "format": "count",
      "description": "the blocks of the window, one a month for a monthly archive"
     },
     "blocks_done": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "code_version": {
      "type": "string",
      "format": "text",
      "description": "the refine's code version: the parser's commit, or the release"
     },
     "held_parse": {
      "type": "string",
      "description": "Names the source procedure that records the folder that the connector's own parser wrote before the platform ran. The engine reads that folder in place (18 §2.25). Absent when the platform parses the block itself.",
      "x-register": "SourceProcedure"
     }
    },
    "required": [
     "source",
     "way",
     "window",
     "plane",
     "blocks",
     "blocks_done",
     "code_version"
    ],
    "additionalProperties": false,
    "x-kind": "work",
    "x-scope": "platform",
    "x-store": "postgres",
    "x-key": "the source, the way and the window",
    "x-places": [
     "queued",
     "refining",
     "accepting",
     "done",
     "failed"
    ],
    "x-from": "18 §2.12"
   },
   "CaptureHealthInput": {
    "title": "CaptureHealthInput",
    "description": "the health of capture on one platform or all, over a window against the window before",
    "type": "object",
    "properties": {
     "platform": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "window": {
      "$ref": "#/components/schemas/Window",
      "description": ""
     }
    },
    "required": [],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "24 §3"
   },
   "SavedView": {
    "title": "SavedView",
    "description": "a view over the record, a predicate or a recipe, kept current on a beat, served as a table",
    "type": "object",
    "properties": {
     "name": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "source": {
      "type": "string",
      "enum": [
       "a predicate",
       "a recipe"
      ],
      "description": ""
     },
     "predicate": {
      "type": "string",
      "format": "hash",
      "description": ""
     },
     "recipe": {
      "type": "string",
      "format": "text",
      "description": "a model's, a clustering's or a summary's"
     },
     "columns": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/Column"
      },
      "description": ""
     },
     "beat": {
      "type": "string",
      "description": "",
      "x-register": "Beat"
     },
     "built_ahead": {
      "type": "boolean",
      "format": "bool",
      "description": ""
     },
     "population": {
      "$ref": "#/components/schemas/PopulationStatement",
      "description": ""
     },
     "rights": {
      "$ref": "#/components/schemas/Rights",
      "description": ""
     }
    },
    "required": [
     "name",
     "source",
     "columns",
     "beat",
     "built_ahead",
     "rights"
    ],
    "additionalProperties": false,
    "x-kind": "definition",
    "x-scope": "follows",
    "x-store": "postgres",
    "x-key": "its name and version",
    "x-places": [],
    "x-from": "06 §2.2"
   },
   "Chain": {
    "title": "Chain",
    "description": "the parties around a sale, each handing demand to the next; its stocks with a side and a reader, its handovers counted as facts, its leaks",
    "type": "object",
    "properties": {
     "vertical": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "stocks": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/ChainStock"
      },
      "description": ""
     },
     "handovers": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/ChainHandover"
      },
      "description": ""
     },
     "leaks": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/Leak"
      },
      "description": ""
     },
     "loop": {
      "type": "string",
      "format": "text",
      "description": ""
     }
    },
    "required": [
     "vertical",
     "stocks",
     "handovers",
     "leaks",
     "loop"
    ],
    "additionalProperties": false,
    "x-kind": "definition",
    "x-scope": "platform",
    "x-store": "postgres",
    "x-key": "the vertical",
    "x-places": [],
    "x-from": "12 §2.1; MODELS/the-verticals"
   },
   "EngineExtension": {
    "title": "EngineExtension",
    "description": "one extension of the query engine, pinned by version and hash as a row of the release, shipped with it and never fetched at run time",
    "type": "object",
    "properties": {
     "name": {
      "type": "string",
      "format": "text",
      "description": "lakehouse, database, spatial"
     },
     "engine_version": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "version": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "hash": {
      "type": "string",
      "format": "hash",
      "description": ""
     },
     "release": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "state": {
      "$ref": "#/components/schemas/Readiness",
      "description": "not ready when the shipped file's hash differs"
     }
    },
    "required": [
     "name",
     "engine_version",
     "version",
     "hash",
     "release",
     "state"
    ],
    "additionalProperties": false,
    "x-kind": "definition",
    "x-scope": "platform",
    "x-store": "postgres",
    "x-key": "its name and the engine's version",
    "x-places": [],
    "x-from": "19 §2.1"
   },
   "ExtractedArticle": {
    "title": "ExtractedArticle",
    "description": "the main content of a page as the carried extractor returns it: title, author, published time with its basis, language, word count, the extractor used and its quality score",
    "type": "object",
    "properties": {
     "title": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "author": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "published_at": {
      "type": "string",
      "format": "time",
      "description": ""
     },
     "basis_of_time": {
      "type": "string",
      "enum": [
       "published",
       "scheduled",
       "first seen"
      ],
      "description": ""
     },
     "content_markdown": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "language": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "word_count": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "extractor": {
      "type": "string",
      "format": "text",
      "description": "which extractor produced it"
     },
     "quality": {
      "type": "number",
      "format": "share",
      "description": "prose quality in [0, 1]; 0 when unknown"
     },
     "content_hash": {
      "type": "string",
      "format": "hash",
      "description": ""
     }
    },
    "required": [
     "title",
     "basis_of_time",
     "content_markdown",
     "language",
     "word_count",
     "extractor",
     "quality",
     "content_hash"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "18 §2.18"
   },
   "LoadBalancer": {
    "title": "LoadBalancer",
    "description": "the rented load balancer in front of the ingress: ports, health check, and how the client address is passed",
    "type": "object",
    "properties": {
     "address": {
      "type": "string",
      "format": "address",
      "description": ""
     },
     "ports": {
      "type": "array",
      "items": {
       "type": "integer",
       "format": "count"
      },
      "description": "80 and 443"
     },
     "health_check": {
      "type": "string",
      "format": "text",
      "description": "the path probed on every ingress copy"
     },
     "client_address_header": {
      "type": "string",
      "format": "text",
      "description": "the header the ingress trusts only from this balancer; a connection without it is rejected (D-37)"
     },
     "backends": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/MachineAddress"
      },
      "description": ""
     }
    },
    "required": [
     "address",
     "ports",
     "health_check",
     "client_address_header",
     "backends"
    ],
    "additionalProperties": false,
    "x-kind": "definition",
    "x-scope": "platform",
    "x-store": "postgres",
    "x-key": "its address",
    "x-places": [],
    "x-from": "21 §2.1"
   },
   "Law": {
    "title": "Law",
    "description": "a check that can fail, registered against a kind or a flow",
    "type": "object",
    "properties": {
     "name": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "against": {
      "type": "string",
      "format": "text",
      "description": "a kind or a flow"
     },
     "check": {
      "type": "string",
      "format": "text",
      "description": "what it reads and what red is"
     },
     "planted_fault": {
      "type": "string",
      "format": "text",
      "description": "the case that must read red"
     },
     "last_red": {
      "type": "string",
      "format": "time",
      "description": ""
     },
     "last_green": {
      "type": "string",
      "format": "time",
      "description": ""
     },
     "state": {
      "$ref": "#/components/schemas/Readiness",
      "description": "not trusted until the injected fault fails the check and the restored case passes it"
     }
    },
    "required": [
     "name",
     "against",
     "check",
     "planted_fault",
     "state"
    ],
    "additionalProperties": false,
    "x-kind": "row",
    "x-scope": "platform",
    "x-store": "postgres",
    "x-key": "its name",
    "x-places": [],
    "x-from": "01 §2.6"
   },
   "PlaceParticipantInput": {
    "title": "PlaceParticipantInput",
    "description": "a party placed in a role on a stock of a vertical's chain",
    "type": "object",
    "properties": {
     "vertical": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "segment": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "stock": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "party": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "party_kind": {
      "type": "string",
      "enum": [
       "company",
       "brand",
       "person",
       "account",
       "community",
       "organisation"
      ],
      "description": ""
     },
     "role": {
      "type": "string",
      "description": "",
      "x-register": "RoleAroundADecision"
     },
     "side": {
      "type": "string",
      "enum": [
       "demand",
       "supply",
       "intermediary",
       "influence",
       "rules"
      ],
      "description": ""
     },
     "impact_on": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/ParticipantImpact"
      },
      "description": ""
     },
     "evidence": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/EvidenceRef"
      },
      "description": ""
     }
    },
    "required": [
     "vertical",
     "stock",
     "party",
     "party_kind",
     "role",
     "side",
     "evidence"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "26 §3"
   },
   "Outcome": {
    "title": "Outcome",
    "description": "a condition as marked, by whom and when; measured and never guessed",
    "type": "object",
    "properties": {
     "lead": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "condition": {
      "type": "string",
      "description": "",
      "x-register": "LeadCondition"
     },
     "reason": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "marked_by": {
      "$ref": "#/components/schemas/Caller",
      "description": ""
     }
    },
    "required": [
     "lead",
     "condition",
     "marked_by"
    ],
    "additionalProperties": false,
    "x-kind": "fact",
    "x-scope": "brand",
    "x-store": "postgres+lake",
    "x-key": "the lead, the condition and the moment",
    "x-places": [],
    "x-from": "08 §2"
   },
   "RunActionInput": {
    "title": "RunActionInput",
    "description": "an action to run",
    "type": "object",
    "properties": {
     "action": {
      "type": "string",
      "format": "id",
      "description": ""
     }
    },
    "required": [
     "action"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "13 §3"
   },
   "ReadSourcePage": {
    "title": "ReadSourcePage",
    "description": "one page of source objects, the next cursor and the cells credited",
    "type": "object",
    "properties": {
     "objects": {
      "type": "array",
      "items": {},
      "description": "each the serialisation of the source object row's shape"
     },
     "next_cursor": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "cells": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "id"
      },
      "description": ""
     },
     "hops": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/HopStamp"
      },
      "description": ""
     }
    },
    "required": [
     "objects",
     "cells",
     "hops"
    ],
    "additionalProperties": false,
    "x-kind": "view",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "18 §3"
   },
   "PossibleMatch": {
    "title": "PossibleMatch",
    "description": "two entities that may be one; they stay two until it is settled",
    "type": "object",
    "properties": {
     "first": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "second": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "chance": {
      "type": "number",
      "format": "chance",
      "description": ""
     },
     "evidence": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/EvidenceRef"
      },
      "description": ""
     },
     "what_would_settle_it": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "hypothesis": {
      "type": "string",
      "format": "id",
      "description": "its claim under test"
     }
    },
    "required": [
     "first",
     "second",
     "chance",
     "evidence",
     "what_would_settle_it",
     "hypothesis"
    ],
    "additionalProperties": false,
    "x-kind": "work",
    "x-scope": "follows",
    "x-store": "postgres",
    "x-key": "the pair of entities, in a fixed order",
    "x-places": [
     "waiting",
     "confirmed",
     "rejected"
    ],
    "x-from": "05 §2.1"
   },
   "LeadAssignment": {
    "title": "LeadAssignment",
    "description": "which user a lead went to, under which rule, who else was eligible, and the odds",
    "type": "object",
    "properties": {
     "lead": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "user": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "rule": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "rule_version": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "eligible": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "id"
      },
      "description": ""
     },
     "odds": {
      "type": "number",
      "format": "chance",
      "description": ""
     },
     "by_hand": {
      "$ref": "#/components/schemas/Caller",
      "description": ""
     },
     "missing_input": {
      "type": "string",
      "format": "text",
      "description": "said plainly and never invented"
     }
    },
    "required": [
     "lead",
     "user",
     "eligible",
     "odds"
    ],
    "additionalProperties": false,
    "x-kind": "fact",
    "x-scope": "brand",
    "x-store": "postgres",
    "x-key": "the lead and the moment",
    "x-places": [],
    "x-from": "08 §2"
   },
   "Session": {
    "title": "Session",
    "description": "one open sign-in of a user through a client",
    "type": "object",
    "properties": {
     "user": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "client": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "began_at": {
      "type": "string",
      "format": "time",
      "description": ""
     },
     "strength": {
      "type": "string",
      "enum": [
       "password",
       "passkey",
       "second factor"
      ],
      "description": ""
     },
     "ends_at": {
      "type": "string",
      "format": "time",
      "description": ""
     },
     "ended_by": {
      "$ref": "#/components/schemas/Caller",
      "description": ""
     }
    },
    "required": [
     "user",
     "client",
     "began_at",
     "strength",
     "ends_at"
    ],
    "additionalProperties": false,
    "x-kind": "work",
    "x-scope": "user",
    "x-store": "postgres",
    "x-key": "the user, the client and when it began",
    "x-places": [
     "open",
     "ended"
    ],
    "x-from": "03 §2.2"
   },
   "SearchResult": {
    "title": "SearchResult",
    "description": "one result of a metasearch, an observation with its source, its time basis and the engines that returned it",
    "type": "object",
    "properties": {
     "address": {
      "type": "string",
      "format": "text",
      "description": "the canonical address after deduplication"
     },
     "title": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "snippet": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "engines": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "text"
      },
      "description": ""
     },
     "rank": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "published_at": {
      "type": "string",
      "format": "time",
      "description": ""
     },
     "basis_of_time": {
      "type": "string",
      "enum": [
       "published",
       "scheduled",
       "first seen"
      ],
      "description": ""
     },
     "recognised": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "id"
      },
      "description": "entities of the record recognised in the result"
     },
     "artefact_hash": {
      "type": "string",
      "format": "hash",
      "description": "set once the page was read"
     }
    },
    "required": [
     "address",
     "title",
     "engines",
     "rank",
     "basis_of_time",
     "recognised"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "18 §2.18"
   },
   "Attempt": {
    "title": "Attempt",
    "description": "one try of a job, a run keyed by the unit and the attempt's number",
    "type": "object",
    "properties": {
     "number": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "run": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "outcome": {
      "type": "string",
      "enum": [
       "done",
       "failed",
       "stopped"
      ],
      "description": ""
     },
     "failure_class": {
      "$ref": "#/components/schemas/FailureClass",
      "description": "only a failure of the unit's own class counts against it"
     }
    },
    "required": [
     "number",
     "run",
     "outcome"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "01 §2.1"
   },
   "SaleFrame": {
    "title": "SaleFrame",
    "description": "the sale framed for one buyer: what the first sale costs them, the value and the return in their own numbers with their basis, the payback, the sensitivity, and the framing chosen with its evidence; computed once by the one evaluator from a business model, and read by the sale, the estimator page and the signal",
    "type": "object",
    "properties": {
     "buyer": {
      "$ref": "#/components/schemas/UnitRef",
      "description": "the lead, the entity, the buyer profile, or the anonymous session of a public page"
     },
     "offering": {
      "type": "string",
      "format": "id",
      "description": "the offering, absent when the frame is for the tenant's tier alone"
     },
     "tier": {
      "type": "string",
      "format": "text",
      "description": "the tier of the price ladder priced, when the offering is the tenant's"
     },
     "business_model": {
      "type": "string",
      "format": "id",
      "description": "the business model evaluated; absent for a frame written by hand before the economics of the market were specified"
     },
     "model_version": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "inputs": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/FrameInput"
      },
      "description": "every input read, with where it came from and its basis"
     },
     "inputs_hash": {
      "type": "string",
      "format": "hash",
      "description": "the repeat key with the buyer, the offering and the version"
     },
     "period": {
      "type": "string",
      "format": "duration",
      "description": "the buyer's period the outputs are stated per"
     },
     "first_sale_cost": {
      "$ref": "#/components/schemas/NumberInPosition",
      "description": "in the buyer's own numbers; in the estimate position it names the estimate with its interval"
     },
     "potential_value": {
      "$ref": "#/components/schemas/NumberInPosition",
      "description": "the incremental value over the period"
     },
     "return": {
      "$ref": "#/components/schemas/Interval",
      "description": "value less cost, derived by the named rule, with its interval"
     },
     "payback": {
      "type": "string",
      "format": "duration",
      "description": "cost over value per period"
     },
     "payback_interval": {
      "$ref": "#/components/schemas/Interval",
      "description": "the payback with its interval when a simulation ran"
     },
     "sensitivity": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/Sensitivity"
      },
      "description": "one per stated driver"
     },
     "simulation": {
      "type": "string",
      "format": "id",
      "description": "the run that gave the intervals; absent for a point evaluation"
     },
     "framing": {
      "type": "string",
      "description": "",
      "x-register": "KindOfFraming"
     },
     "set_aside": {
      "type": "array",
      "items": {
       "type": "string",
       "description": "the name of a row of KindOfFraming",
       "x-register": "KindOfFraming"
      },
      "description": "the framings considered and not chosen"
     },
     "evidence": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/EvidenceRef"
      },
      "description": "the motives, means, affinity and constraints that chose the framing"
     },
     "state": {
      "$ref": "#/components/schemas/Readiness",
      "description": "not ready with the leaf named when an input is withheld"
     }
    },
    "required": [
     "buyer",
     "first_sale_cost",
     "potential_value",
     "framing",
     "evidence"
    ],
    "additionalProperties": false,
    "x-kind": "fact",
    "x-scope": "brand",
    "x-store": "postgres+lake",
    "x-key": "the buyer, the offering, the business model version and the inputs hash",
    "x-places": [],
    "x-from": "13 §2.4; 25 §2.1"
   },
   "CaptureRuleInput": {
    "title": "CaptureRuleInput",
    "description": "a person's capture rule to write: the platform, the mode, the way, the default scope, the never list and the person's redactions",
    "type": "object",
    "properties": {
     "platform": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "mode": {
      "type": "string",
      "enum": [
       "on my say-so",
       "on my own submit",
       "ask me on this platform",
       "every page I open",
       "never"
      ],
      "description": ""
     },
     "way": {
      "type": "string",
      "description": "",
      "x-register": "AccessMethod"
     },
     "default_scope": {
      "type": "string",
      "enum": [
       "this item",
       "this thread",
       "this channel as shown",
       "this page",
       "this meeting",
       "my outbound message"
      ],
      "description": ""
     },
     "never_captured": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "text"
      },
      "description": "addresses or kinds"
     },
     "redactions": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/RedactionRule"
      },
      "description": "the person's own"
     },
     "browser_grant": {
      "type": "string",
      "enum": [
       "given",
       "not given",
       "not needed"
      ],
      "description": "the browser's standing host permission for the platform as the extension found it when the rule was written: asked of the person for every page I open, and not needed for the other modes; absent when the rule is written from a surface that is not the browser"
     }
    },
    "required": [
     "platform",
     "mode",
     "default_scope",
     "never_captured"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "24 §3"
   },
   "ProbeIdentityInput": {
    "title": "ProbeIdentityInput",
    "description": "a held identity to probe",
    "type": "object",
    "properties": {
     "identity": {
      "type": "string",
      "format": "id",
      "description": ""
     }
    },
    "required": [
     "identity"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "18 §3"
   },
   "CaptureDeclaration": {
    "title": "CaptureDeclaration",
    "description": "what the extension keeps on one platform or domain, as one row of the browser connector, parameterized by the platform: address patterns, the network events to keep, the visible links, the scopes and the redactions",
    "type": "object",
    "properties": {
     "platform": {
      "type": "string",
      "format": "text",
      "description": "the platform's slug, or a domain: the parameter of the connector, and the row's key"
     },
     "connector": {
      "type": "string",
      "description": "the browser connector, the same for every row",
      "x-register": "Connector"
     },
     "source": {
      "type": "string",
      "description": "the registered source the platform's pages land under: the platform as read in the browser, with its own shapes; the same platform read another way is another source",
      "x-register": "Source"
     },
     "address_patterns": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "text"
      },
      "description": ""
     },
     "standing_grant": {
      "type": "boolean",
      "format": "bool",
      "description": "the store's review approved a standing host permission for this platform, so the extension's manifest carries it and the browser asks for it at install; absent when the grant is optional and the browser asks for it when a rule for every page needs it (24 §2.1, SR-2417)"
     },
     "network_events": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/ResourceFilter"
      },
      "description": "the responses to keep"
     },
     "neighbourhood_links": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/MappingConnection"
      },
      "description": "the links visible on the page"
     },
     "scopes": {
      "type": "array",
      "items": {
       "type": "string",
       "enum": [
        "this item",
        "this thread",
        "this channel as shown",
        "this page",
        "this meeting",
        "my outbound message"
       ]
      },
      "description": ""
     },
     "redactions": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/RedactionRule"
      },
      "description": ""
     },
     "version": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "mark": {
      "type": "string",
      "format": "text",
      "description": "the name of the platform's mark in the icon register, or none when no public-domain drawing of it exists"
     },
     "tint": {
      "type": "string",
      "format": "text",
      "description": "the platform's own colour for its tile, as its brand states it"
     }
    },
    "required": [
     "platform",
     "connector",
     "source",
     "address_patterns",
     "network_events",
     "neighbourhood_links",
     "scopes",
     "redactions",
     "version"
    ],
    "additionalProperties": false,
    "x-kind": "row",
    "x-scope": "platform",
    "x-store": "postgres",
    "x-key": "the platform",
    "x-places": [],
    "x-from": "24 §2.1"
   },
   "Router": {
    "title": "Router",
    "description": "a person or a voice whose worth is who they send, with its own ladder and its value unit",
    "type": "object",
    "properties": {
     "name": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "discipline": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "ladder": {
      "$ref": "#/components/schemas/Ladder",
      "description": "never heard to recommends to peers"
     },
     "value_unit": {
      "type": "string",
      "format": "text",
      "description": "the flow carried over time"
     },
     "proxies": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "id"
      },
      "description": ""
     },
     "sends": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/LeadsTo"
      },
      "description": "the buyer profiles it sends, each with the rate"
     },
     "motives": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/Motive"
      },
      "description": "why it would send, with evidence"
     },
     "standing": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "referability": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/ReferabilityStatus"
      },
      "description": "the ten conditions before a professional puts a name behind a brand, each with its status"
     },
     "count": {
      "$ref": "#/components/schemas/NumberInPosition",
      "description": "how many of this router exist, measured, estimated or stipulated"
     }
    },
    "required": [
     "name",
     "discipline",
     "ladder",
     "value_unit",
     "proxies"
    ],
    "additionalProperties": false,
    "x-kind": "definition",
    "x-scope": "platform",
    "x-store": "postgres",
    "x-key": "its name",
    "x-places": [],
    "x-from": "13 §2.1"
   },
   "ArmMonitorInput": {
    "title": "ArmMonitorInput",
    "description": "the monitor's version, and for arming the preview it was judged by",
    "type": "object",
    "properties": {
     "monitor": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "version": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "arm": {
      "type": "boolean",
      "format": "bool",
      "description": ""
     },
     "preview": {
      "type": "string",
      "format": "id",
      "description": "required to arm"
     }
    },
    "required": [
     "monitor",
     "version",
     "arm"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "06 §3"
   },
   "CoverageInput": {
    "title": "CoverageInput",
    "description": "a cell, or a scope of entities with a window",
    "type": "object",
    "properties": {
     "cell": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "scope": {
      "$ref": "#/components/schemas/Predicate",
      "description": ""
     },
     "window": {
      "$ref": "#/components/schemas/Window",
      "description": ""
     }
    },
    "required": [],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "07 §3"
   },
   "ReleaseStamp": {
    "title": "ReleaseStamp",
    "description": "which release a running binary is: the platform's semantic version, the commit it was built from with its time, whether the build had changes beyond the commit, and the contract it carries; every process reports it in its handshake, its --version, its first log line and the client name on every event it writes, so a report of a defect names the build and the build names the change",
    "type": "object",
    "properties": {
     "version": {
      "type": "string",
      "format": "text",
      "description": "the platform's semantic version, one number for every crate and every packaged surface, from the workspace's manifest"
     },
     "commit": {
      "type": "string",
      "format": "text",
      "description": "the commit's hash"
     },
     "commit_time": {
      "type": "integer",
      "format": "count",
      "description": "the commit's time as seconds since 1970; the order between releases"
     },
     "dirty": {
      "type": "boolean",
      "format": "bool",
      "description": "true when the build had changes beyond the commit"
     },
     "contract": {
      "type": "string",
      "format": "hash",
      "description": "the register hash of the contract the binary carries"
     }
    },
    "required": [
     "version",
     "commit",
     "commit_time",
     "dirty",
     "contract"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "09 §2; WA-223; WA-224"
   },
   "SignInInput": {
    "title": "SignInInput",
    "description": "nothing, or the tenant to sign in to; or an access token the identity provider issued, which a browser or an agent presents to the face it is connected on",
    "type": "object",
    "properties": {
     "tenant": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "token": {
      "type": "string",
      "format": "text",
      "description": "an access token the identity provider issued, checked six ways at the face; never logged"
     }
    },
    "required": [],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "MODELS/the-outside-agent-path §5; 03 §2.5"
   },
   "SignalStore": {
    "title": "SignalStore",
    "description": "where signals land: object storage, one folder per signal kind and day, under a retention class per kind",
    "type": "object",
    "properties": {
     "address": {
      "type": "string",
      "format": "address",
      "description": ""
     },
     "layout": {
      "type": "string",
      "format": "text",
      "description": "signals/{kind}/dt={day}/{export}.parquet"
     },
     "retention": {
      "type": "object",
      "additionalProperties": {
       "type": "string",
       "description": "the name of a row of RetentionClass",
       "x-register": "RetentionClass"
      },
      "description": "keyed by the signal kind"
     },
     "reader": {
      "type": "string",
      "format": "text",
      "description": "DuckDB, from the ops console"
     }
    },
    "required": [
     "address",
     "layout",
     "retention",
     "reader"
    ],
    "additionalProperties": false,
    "x-kind": "definition",
    "x-scope": "platform",
    "x-store": "postgres",
    "x-key": "its address",
    "x-places": [],
    "x-from": "22 §2.3"
   },
   "DecideBrandDesignInput": {
    "title": "DecideBrandDesignInput",
    "description": "a decision on one value of a brand's design system",
    "type": "object",
    "properties": {
     "brand": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "path": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "decision": {
      "type": "string",
      "enum": [
       "accepted",
       "declined",
       "changed"
      ],
      "description": ""
     },
     "value": {
      "description": "the tenant's own value, when changed"
     },
     "why": {
      "type": "string",
      "format": "text",
      "description": ""
     }
    },
    "required": [
     "brand",
     "path",
     "decision"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "DESIGN/the-brand-graph-from-a-domain §7"
   },
   "Job": {
    "title": "Job",
    "description": "one run of a way in the acquisition system or the connector host",
    "type": "object",
    "properties": {
     "asks": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "id"
      },
      "description": ""
     },
     "way": {
      "type": "string",
      "description": "",
      "x-register": "AccessMethod"
     },
     "host": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "hops": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/HopStamp"
      },
      "description": ""
     },
     "failure": {
      "$ref": "#/components/schemas/FailureClass",
      "description": ""
     },
     "lease": {
      "type": "string",
      "format": "id",
      "description": ""
     }
    },
    "required": [
     "asks",
     "way",
     "host",
     "hops"
    ],
    "additionalProperties": false,
    "x-kind": "work",
    "x-scope": "follows",
    "x-store": "acquisition",
    "x-key": "the key the platform made from the ask",
    "x-places": [
     "queued",
     "running",
     "done",
     "failed",
     "not allowed"
    ],
    "x-from": "07 §2.3"
   },
   "Calibration": {
    "title": "Calibration",
    "description": "precision, recall and the undercount, by segment, with intervals",
    "type": "object",
    "properties": {
     "precision": {
      "type": "number",
      "format": "share",
      "description": ""
     },
     "recall": {
      "type": "number",
      "format": "share",
      "description": ""
     },
     "undercount": {
      "type": "number",
      "format": "share",
      "description": "one minus recall"
     },
     "interval": {
      "$ref": "#/components/schemas/Interval",
      "description": ""
     },
     "by_segment": {
      "type": "object",
      "additionalProperties": {
       "type": "number",
       "format": "share"
      },
      "description": ""
     },
     "labelled_set": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "read_at": {
      "type": "string",
      "format": "time",
      "description": ""
     },
     "subjects": {
      "type": "integer",
      "format": "count",
      "description": ""
     }
    },
    "required": [
     "precision",
     "recall",
     "undercount",
     "interval",
     "by_segment",
     "labelled_set",
     "read_at",
     "subjects"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "14 SR-1420; test 6"
   },
   "WhyAnswer": {
    "title": "WhyAnswer",
    "description": "the chain of reasons, from this unit back to its first cause",
    "type": "object",
    "properties": {
     "reasons": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/Reason"
      },
      "description": ""
     }
    },
    "required": [
     "reasons"
    ],
    "additionalProperties": false,
    "x-kind": "view",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "04 §3"
   },
   "ConnectionLimits": {
    "title": "ConnectionLimits",
    "description": "the bounds on one connection: request deadline, body size, idle timeout of a WebSocket, and connections per client address",
    "type": "object",
    "properties": {
     "request_deadline": {
      "type": "string",
      "format": "duration",
      "description": ""
     },
     "max_body_bytes": {
      "type": "integer",
      "format": "bytes",
      "description": ""
     },
     "websocket_idle_timeout": {
      "type": "string",
      "format": "duration",
      "description": ""
     },
     "max_connections_per_client": {
      "type": "integer",
      "format": "count",
      "description": ""
     }
    },
    "required": [
     "request_deadline",
     "max_body_bytes",
     "websocket_idle_timeout",
     "max_connections_per_client"
    ],
    "additionalProperties": false,
    "x-kind": "parameter",
    "x-scope": "platform",
    "x-store": "postgres",
    "x-key": "the listener",
    "x-places": [],
    "x-from": "21 §2.5"
   },
   "Annotation": {
    "title": "Annotation",
    "description": "one thing a person states about a subject of the record, from any face: the capture panel while a page is captured, the web shell or the desktop shell on an entity's page, the agent in a conversation, or the API. What it is about is the page's subject, an item of a list, a contact, a region picked on the page, or an entity named by its id; what is said is a tag from one of the record's registers, a fit for a buyer profile, a relation to an entity the record holds, a membership, a rival marking, a note, or what kind of thing the subject is. It becomes a claim or a connection stated by the person, with the capture or the conversation as its evidence, through the one placing rule of the accept, whichever face said it",
    "type": "object",
    "properties": {
     "target": {
      "type": "string",
      "enum": [
       "the page",
       "an item",
       "a contact",
       "a region",
       "an entity"
      ],
      "description": "an entity when the annotation is made on an entity's page or by the agent, with the entity in subject"
     },
     "subject": {
      "type": "string",
      "format": "id",
      "description": "the entity the annotation is about when the target is an entity; absent on a page, whose subject the capture supplies"
     },
     "said_in": {
      "type": "string",
      "enum": [
       "the capture panel",
       "the web shell",
       "the desktop shell",
       "the agent",
       "the API"
      ],
      "description": "the face the person said it in; absent means the capture panel"
     },
     "item_field": {
      "type": "string",
      "format": "text",
      "description": "the list field the item belongs to"
     },
     "item_key": {
      "type": "string",
      "format": "text",
      "description": "the item's own id, or its index"
     },
     "contact": {
      "type": "string",
      "format": "text",
      "description": "the contact's namespace and normalised value, joined by a bar"
     },
     "region_selector": {
      "type": "string",
      "format": "text",
      "description": "a selector path to the picked element"
     },
     "region_text": {
      "type": "string",
      "format": "text",
      "description": "the picked element's visible text"
     },
     "kind": {
      "type": "string",
      "enum": [
       "a tag",
       "a relation",
       "a note",
       "a rival",
       "a fit",
       "a membership",
       "a kind of thing"
      ],
      "description": "a rival marks the subject as competing with one of the tenant's brands; a fit states it fits a kind of buyer; a membership places it in a facet, a vertical, a segment or a community; a kind of thing says what the subject is"
     },
     "register": {
      "type": "string",
      "format": "text",
      "description": "the place of the record the unit was found in (kinds of buyer, brands, offerings, facets, verticals, concepts, segments, communities, entities)"
     },
     "value": {
      "type": "string",
      "format": "text",
      "description": "the tag's name, the relation's kind of connection or the person's own words for it, the note, or the kind of entity"
     },
     "entity": {
      "type": "string",
      "format": "id",
      "description": "the unit of the record it points at; absent for a thing the record does not hold yet"
     },
     "entity_name": {
      "type": "string",
      "format": "text",
      "description": "the unit's name, or the name of a new thing"
     },
     "entity_kind": {
      "type": "string",
      "format": "text",
      "description": "the unit's kind, or the kind of entity the person set for a new thing"
     },
     "role": {
      "type": "string",
      "format": "text",
      "description": "for a relation: the role the page's subject takes"
     },
     "stated_at": {
      "type": "string",
      "format": "time",
      "description": ""
     }
    },
    "required": [
     "target",
     "kind",
     "value",
     "stated_at"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "24 §2.1; 24 §2.8"
   },
   "FitStep": {
    "title": "FitStep",
    "description": "one step of the search, a hypothesis settled by readings",
    "type": "object",
    "properties": {
     "name": {
      "type": "string",
      "enum": [
       "the candidate markets",
       "the rivals' shape",
       "the buyer profiles",
       "the sculpted offering",
       "the plays to test",
       "the readings",
       "the verdict"
      ],
      "description": ""
     },
     "hypothesis": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "state": {
      "$ref": "#/components/schemas/Readiness",
      "description": ""
     },
     "started_at": {
      "type": "string",
      "format": "time",
      "description": ""
     },
     "settled_at": {
      "type": "string",
      "format": "time",
      "description": ""
     }
    },
    "required": [
     "name",
     "state"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "26 §2.1"
   },
   "CancelInput": {
    "title": "CancelInput",
    "description": "a preview or a task to cancel",
    "type": "object",
    "properties": {
     "task": {
      "type": "string",
      "format": "id",
      "description": ""
     }
    },
    "required": [
     "task"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "06 §3"
   },
   "Correction": {
    "title": "Correction",
    "description": "a correction of a fact already written: it names the fact it replaces and why, so a read as of a date before it still shows the old fact and a reader of the stream tells a new fact from a corrected one; the fact corrected no longer stands",
    "type": "object",
    "properties": {
     "replaces": {
      "type": "string",
      "format": "id",
      "description": "the id of the fact corrected"
     },
     "kind": {
      "type": "string",
      "format": "text",
      "description": "the kind of the fact corrected"
     },
     "reason": {
      "type": "string",
      "format": "text",
      "description": "why it no longer stands, in plain words"
     },
     "rule": {
      "type": "string",
      "format": "text",
      "description": "the rule the correction applies, where one does"
     }
    },
    "required": [
     "replaces",
     "kind",
     "reason"
    ],
    "additionalProperties": false,
    "x-kind": "fact",
    "x-scope": "follows",
    "x-store": "postgres",
    "x-key": "the fact it replaces",
    "x-places": [],
    "x-from": "04 §2.1; SR-0425"
   },
   "SettleMatchInput": {
    "title": "SettleMatchInput",
    "description": "a possible match, confirmed or rejected",
    "type": "object",
    "properties": {
     "match": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "decision": {
      "type": "string",
      "enum": [
       "confirm",
       "reject"
      ],
      "description": ""
     },
     "evidence": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/EvidenceRef"
      },
      "description": ""
     }
    },
    "required": [
     "match",
     "decision"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "05 §3"
   },
   "Connector": {
    "title": "Connector",
    "description": "the code for one source's ways and actions, with what it declares; one package of rows plus one implementation (18 §2.1)",
    "type": "object",
    "properties": {
     "name": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "source": {
      "type": "string",
      "description": "absent for a connector parameterized by its declarations, such as the browser capture, whose declarations each name theirs",
      "x-register": "Source"
     },
     "code_version": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "declares": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "text"
      },
      "description": "The names of the kinds of reading, the kinds of action and the capture declarations whose rows name this connector. The register build derives the list from those rows; nobody types it."
     },
     "behaviours": {
      "type": "array",
      "items": {
       "type": "string",
       "enum": [
        "probe",
        "read",
        "subscribe",
        "backfill",
        "act",
        "undo",
        "resolve",
        "capture"
       ]
      },
      "description": "the trait's behaviours the rows declare; one not implemented fails the build"
     },
     "samples_hash": {
      "type": "string",
      "format": "hash",
      "description": "the recorded wire captures"
     },
     "samples": {
      "type": "object",
      "additionalProperties": {
       "type": "string",
       "format": "hash"
      },
      "description": "for a connector that writes more than one shape (a catalogue builder whose views differ), the checked schema hash of each source object it returns, by the object's name; a connector that writes one shape records samples_hash alone"
     },
     "sync_offers": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/SyncOffer"
      },
      "description": ""
     },
     "state": {
      "$ref": "#/components/schemas/Readiness",
      "description": ""
     }
    },
    "required": [
     "name",
     "code_version",
     "declares",
     "behaviours",
     "sync_offers",
     "state"
    ],
    "additionalProperties": false,
    "x-kind": "row",
    "x-scope": "platform",
    "x-store": "postgres",
    "x-key": "its name and the version of its code",
    "x-places": [],
    "x-from": "07 §2.1"
   },
   "PlatformReveal": {
    "title": "PlatformReveal",
    "description": "one control on a kind of page that shows more without leaving it, or leads to the page that holds the rest: what a person clicks, what opens, where what opens is drawn from (the page's own data, another page of the domain, an API object the click calls, or nothing kept), the fields and lists read inside it, and what the viewer must be to see it; a reveal is how a capture taken with a dialog open, or a step the person took, is bound to the domain",
    "type": "object",
    "properties": {
     "page": {
      "type": "string",
      "format": "text",
      "description": "a page of the domain"
     },
     "trigger": {
      "type": "string",
      "format": "text",
      "description": "the control's label as the platform shows it, such as Show all or N reactions"
     },
     "selector": {
      "type": "string",
      "format": "text",
      "description": "how the reader finds the control"
     },
     "opens": {
      "type": "string",
      "enum": [
       "dialog",
       "menu",
       "expanded",
       "page",
       "viewer"
      ],
      "description": ""
     },
     "source": {
      "type": "string",
      "enum": [
       "the page",
       "a page",
       "an API object",
       "none"
      ],
      "description": "where what opens is drawn from"
     },
     "source_name": {
      "type": "string",
      "format": "text",
      "description": "the page or API object of the domain, when the source is one"
     },
     "fields": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/FieldSpec"
      },
      "description": "read inside what opens, when it is drawn from the page"
     },
     "lists": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/PlatformList"
      },
      "description": "the lists what opens carries, such as the people who reacted"
     },
     "needs": {
      "type": "string",
      "enum": [
       "anyone",
       "signed in",
       "connected",
       "member",
       "admin",
       "premium",
       "licensed"
      ],
      "description": ""
     },
     "note": {
      "type": "string",
      "format": "text",
      "description": ""
     }
    },
    "required": [
     "page",
     "trigger",
     "opens",
     "source",
     "fields",
     "lists",
     "needs"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "24 §2.1"
   },
   "LeadCondition": {
    "title": "LeadCondition",
    "description": "something a person can mark on a lead; platform rows, and a tenant's own",
    "type": "object",
    "properties": {
     "name": {
      "type": "string",
      "enum": [
       "replied",
       "meeting booked",
       "won",
       "lost",
       "not a fit",
       "wrong person",
       "do not contact",
       "a tenant's own"
      ],
      "description": ""
     },
     "withdraws_consent": {
      "type": "boolean",
      "format": "bool",
      "description": ""
     },
     "owner": {
      "type": "string",
      "enum": [
       "the platform",
       "a tenant"
      ],
      "description": ""
     }
    },
    "required": [
     "name",
     "withdraws_consent",
     "owner"
    ],
    "additionalProperties": false,
    "x-kind": "row",
    "x-scope": "platform",
    "x-store": "postgres",
    "x-key": "its name and its owner",
    "x-places": [],
    "x-from": "08 §2"
   },
   "User": {
    "title": "User",
    "description": "a person, only through a sign-in; the platform holds no password",
    "type": "object",
    "properties": {
     "provider": {
      "type": "string",
      "description": "",
      "x-register": "SignInProvider"
     },
     "subject": {
      "type": "string",
      "format": "text",
      "description": "the subject the provider gives"
     },
     "name": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "mail": {
      "type": "string",
      "format": "address",
      "description": ""
     },
     "chat_member_id": {
      "type": "string",
      "format": "text",
      "description": "once a workspace is tied"
     },
     "home_tenant": {
      "type": "string",
      "format": "id",
      "description": ""
     }
    },
    "required": [
     "provider",
     "subject",
     "name",
     "home_tenant"
    ],
    "additionalProperties": false,
    "x-kind": "entity",
    "x-scope": "tenant",
    "x-store": "postgres",
    "x-key": "the provider and the subject",
    "x-places": [],
    "x-from": "03 §2.2"
   },
   "Credential": {
    "title": "Credential",
    "description": "a held identity that is a key, a token, a certificate or a signed request; only in the secrets manager, never returned",
    "type": "object",
    "properties": {
     "platform": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "kind": {
      "type": "string",
      "enum": [
       "an API key",
       "a bearer token",
       "OAuth 2",
       "OAuth 1",
       "basic",
       "a signed request",
       "a service account",
       "a client certificate",
       "an SSH key",
       "a webhook secret"
      ],
      "description": ""
     },
     "scopes": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "text"
      },
      "description": "as granted, never as asked"
     },
     "owner": {
      "$ref": "#/components/schemas/Scope",
      "description": "the platform, or a tenant"
     },
     "vault_entry": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "last_probe": {
      "$ref": "#/components/schemas/ControlResult",
      "description": ""
     },
     "rotation": {
      "type": "string",
      "format": "duration",
      "description": "the rule"
     },
     "state": {
      "$ref": "#/components/schemas/Readiness",
      "description": ""
     }
    },
    "required": [
     "platform",
     "kind",
     "scopes",
     "owner",
     "vault_entry",
     "state"
    ],
    "additionalProperties": false,
    "x-kind": "definition",
    "x-scope": "follows",
    "x-store": "vault",
    "x-key": "the platform and the owner",
    "x-places": [],
    "x-from": "18 §2.3; 19 §2"
   },
   "IdWithSource": {
    "title": "IdWithSource",
    "description": "an id for an object with the source that made it",
    "type": "object",
    "properties": {
     "source": {
      "type": "string",
      "description": "",
      "x-register": "Source"
     },
     "namespace": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "value": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "stable": {
      "type": "boolean",
      "format": "bool",
      "description": ""
     }
    },
    "required": [
     "source",
     "namespace",
     "value",
     "stable"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "02 §2.4"
   },
   "ForecastsInput": {
    "title": "ForecastsInput",
    "description": "a play or a tactic, across brands",
    "type": "object",
    "properties": {
     "play": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "tactic": {
      "type": "string",
      "description": "",
      "x-register": "Tactic"
     }
    },
    "required": [],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "13 §3"
   },
   "DownloadSetInput": {
    "title": "DownloadSetInput",
    "description": "one or many addresses to download through the download manager, from a page or from anywhere",
    "type": "object",
    "properties": {
     "addresses": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "text"
      },
      "description": ""
     },
     "session": {
      "type": "string",
      "format": "id",
      "description": "the browsing session whose cookies serve"
     },
     "identity": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "filter": {
      "$ref": "#/components/schemas/ResourceFilter",
      "description": ""
     },
     "destination": {
      "type": "string",
      "enum": [
       "bronze",
       "the workspace"
      ],
      "description": ""
     }
    },
    "required": [
     "addresses",
     "filter",
     "destination"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "18 §3"
   },
   "LakehouseStore": {
    "title": "LakehouseStore",
    "description": "the value of the parameter the address of the lakehouse's store: the folder of files, the catalogue's database address without a password, and the prefix of the lakehouse catalogue's schemas, one for each plane",
    "type": "object",
    "properties": {
     "folder": {
      "type": "string",
      "format": "text",
      "description": "a folder on a laptop, a bucket on the three machines"
     },
     "catalogue": {
      "type": "string",
      "format": "address",
      "description": "the database that holds the lakehouse catalogue; the password comes from the secrets manager, never from here"
     },
     "catalogue_prefix": {
      "type": "string",
      "format": "text",
      "description": "one schema of the lakehouse catalogue for each plane under this prefix"
     },
     "scratch": {
      "type": "string",
      "format": "text",
      "description": "the folder the engine spills to when a read exceeds its memory; a folder named tmp beside the store's folder when absent, never the working folder of the process (read 27 September: 24 GB of spill in the platform's own tree made a release dirty)"
     }
    },
    "required": [
     "folder",
     "catalogue",
     "catalogue_prefix"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "04 §2.5"
   },
   "BasketReadInput": {
    "title": "BasketReadInput",
    "description": "a basket and what to read it over: one subject, a set, a scope or a cut into groups, with the window",
    "type": "object",
    "properties": {
     "basket": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "subject": {
      "type": "string",
      "format": "id",
      "description": "one subject"
     },
     "subjects": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "id"
      },
      "description": "a set, under the size bound"
     },
     "scope": {
      "$ref": "#/components/schemas/Predicate",
      "description": "a population by predicate"
     },
     "resolution": {
      "type": "number",
      "format": "share",
      "description": "a cut into groups at this resolution"
     },
     "window": {
      "$ref": "#/components/schemas/Window",
      "description": ""
     }
    },
    "required": [
     "basket"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "06 §3"
   },
   "BeatBudget": {
    "title": "BeatBudget",
    "description": "the beat's budget: the units a tick may evaluate and the definitions it may start; the rest wait for the next tick, oldest first, one tenant after another",
    "type": "object",
    "properties": {
     "units": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "definitions": {
      "type": "integer",
      "format": "count",
      "description": ""
     }
    },
    "required": [
     "units",
     "definitions"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "06 §2.6"
   },
   "MappingConnection": {
    "title": "MappingConnection",
    "description": "a link that becomes a connection",
    "type": "object",
    "properties": {
     "link": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "kind": {
      "type": "string",
      "description": "",
      "x-register": "KindOfConnection"
     },
     "role": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "field": {
      "type": "string",
      "format": "text",
      "description": "the declared field of the object that fills the role, when the object's own fields state the connection (a table of who is active where, of who links to which host) rather than the shared header; the field's identity, its namespace and prefix, is the mapping's identifier for that field"
     }
    },
    "required": [
     "link",
     "kind",
     "role"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "07 §2.1"
   },
   "DriverNode": {
    "title": "DriverNode",
    "description": "one node of a value driver tree: a leaf that a party states, or a formula over its children",
    "type": "object",
    "properties": {
     "driver": {
      "type": "string",
      "description": "the value driver this node produces, a kind of measure of the economics family",
      "x-register": "KindOfMeasure"
     },
     "operator": {
      "type": "string",
      "enum": [
       "leaf",
       "add",
       "subtract",
       "multiply",
       "divide",
       "minimum",
       "maximum",
       "constant",
       "share of",
       "per period",
       "clamp"
      ],
      "description": "leaf for a stated, read or benchmarked input; the rest are the closed operators the one evaluator computes"
     },
     "children": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/DriverNode"
      },
      "description": "the operands, in order; empty for a leaf"
     },
     "constant": {
      "description": "the value of a constant node, with the dimension below"
     },
     "dimension": {
      "type": "string",
      "format": "text",
      "description": "the dimension the node produces, which the evaluator checks follows from its children"
     },
     "stated_by": {
      "type": "string",
      "enum": [
       "the buyer",
       "a benchmark",
       "the record",
       "a formula"
      ],
      "description": "who supplies the number: the buyer states it, a benchmark carries it, the record holds it, or the formula computes it"
     },
     "question": {
      "type": "string",
      "format": "text",
      "description": "for a driver the buyer states: the question in the buyer's own words"
     },
     "bounds": {
      "$ref": "#/components/schemas/Interval",
      "description": "the floor and the ceiling a stated value may not cross"
     }
    },
    "required": [
     "driver",
     "operator",
     "dimension",
     "stated_by"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "one node of a driver tree",
    "x-places": [],
    "x-from": "25 §2.1; 25 §2.2"
   },
   "ComparisonQuestion": {
    "title": "ComparisonQuestion",
    "description": "one of the closed list of comparisons",
    "type": "object",
    "properties": {
     "name": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "structure": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "text"
      },
      "description": "the summaries it reads"
     }
    },
    "required": [
     "name",
     "structure"
    ],
    "additionalProperties": false,
    "x-kind": "row",
    "x-scope": "platform",
    "x-store": "postgres",
    "x-key": "its name",
    "x-places": [],
    "x-from": "12 §3"
   },
   "DataGroup": {
    "title": "DataGroup",
    "description": "a named set of units of one kind inside one scope, written as a predicate or a list",
    "type": "object",
    "properties": {
     "name": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "kind": {
      "type": "string",
      "description": "",
      "x-register": "Kind"
     },
     "scope": {
      "$ref": "#/components/schemas/Scope",
      "description": ""
     },
     "members": {
      "$ref": "#/components/schemas/Predicate",
      "description": "or a list"
     },
     "list": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "id"
      },
      "description": ""
     }
    },
    "required": [
     "name",
     "kind",
     "scope"
    ],
    "additionalProperties": false,
    "x-kind": "definition",
    "x-scope": "tenant",
    "x-store": "postgres",
    "x-key": "its name and its scope",
    "x-places": [],
    "x-from": "03 §2.2"
   },
   "GrantHolder": {
    "title": "GrantHolder",
    "description": "the holder of a grant",
    "type": "object",
    "properties": {
     "kind": {
      "type": "string",
      "enum": [
       "a user",
       "a role",
       "our agent",
       "a client",
       "a key"
      ],
      "description": ""
     },
     "id": {
      "type": "string",
      "format": "id",
      "description": ""
     }
    },
    "required": [
     "kind",
     "id"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "03 §2.2"
   },
   "SeedInput": {
    "title": "SeedInput",
    "description": "the manifest to seed from, and the window in months",
    "type": "object",
    "properties": {
     "manifest": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "window_months": {
      "type": "integer",
      "format": "count",
      "description": "the parameter's value when empty"
     }
    },
    "required": [
     "manifest"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "12 §3"
   },
   "BeatInput": {
    "title": "BeatInput",
    "description": "a beat to write",
    "type": "object",
    "properties": {
     "beat": {
      "$ref": "#/components/schemas/Beat",
      "description": ""
     }
    },
    "required": [
     "beat"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "09 §3"
   },
   "Parting": {
    "title": "Parting",
    "description": "a later fact that ends a merge, restoring both sides",
    "type": "object",
    "properties": {
     "merge": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "decision": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "facts_written_again": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "id"
      },
      "description": ""
     }
    },
    "required": [
     "merge",
     "decision",
     "facts_written_again"
    ],
    "additionalProperties": false,
    "x-kind": "fact",
    "x-scope": "follows",
    "x-store": "postgres+lake",
    "x-key": "the merge it ends",
    "x-places": [],
    "x-from": "05 §2.1"
   },
   "GrantLimits": {
    "title": "GrantLimits",
    "description": "the limits of a grant",
    "type": "object",
    "properties": {
     "budget": {
      "$ref": "#/components/schemas/Cost",
      "description": ""
     },
     "rate": {
      "$ref": "#/components/schemas/RateBound",
      "description": ""
     },
     "voices": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "id"
      },
      "description": ""
     },
     "sending_identities": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "id"
      },
      "description": ""
     },
     "kinds_of_reach": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "text"
      },
      "description": ""
     }
    },
    "required": [],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "03 §2.2"
   },
   "DelegateInput": {
    "title": "DelegateInput",
    "description": "something said to the agent",
    "type": "object",
    "properties": {
     "words": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "about": {
      "$ref": "#/components/schemas/UnitRef",
      "description": ""
     },
     "strategy": {
      "type": "string",
      "format": "id",
      "description": ""
     }
    },
    "required": [
     "words"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "09 §3"
   },
   "CoverageGap": {
    "title": "CoverageGap",
    "description": "a cell wanted and not covered, with its value and the reason",
    "type": "object",
    "properties": {
     "cell": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "value": {
      "type": "number",
      "format": "share",
      "description": ""
     },
     "reason": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "what_closes_it": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "cost": {
      "$ref": "#/components/schemas/Cost",
      "description": ""
     }
    },
    "required": [
     "cell",
     "value",
     "reason",
     "what_closes_it"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "07 §2.3"
   },
   "Company": {
    "title": "Company",
    "description": "a company, an entity of the record",
    "type": "object",
    "properties": {
     "brands": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "id"
      },
      "description": ""
     },
     "legal_entities": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "id"
      },
      "description": ""
     },
     "website": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "place": {
      "type": "string",
      "format": "id",
      "description": ""
     }
    },
    "required": [
     "brands",
     "legal_entities"
    ],
    "additionalProperties": false,
    "x-kind": "entity",
    "x-scope": "shared",
    "x-store": "postgres",
    "x-key": "decided",
    "x-places": [],
    "x-from": "12 §2.1"
   },
   "PriceTier": {
    "title": "PriceTier",
    "description": "one tier of the tenant's price ladder: its prices, its allowances, its offerings, who it is for, and where on the rivals' distribution it was set",
    "type": "object",
    "properties": {
     "name": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "order": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "monthly": {
      "type": "number",
      "format": "money",
      "description": ""
     },
     "annual": {
      "type": "number",
      "format": "money",
      "description": "the price a month on an annual term"
     },
     "currency": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "allowances": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/Allowance"
      },
      "description": ""
     },
     "seats": {
      "type": "integer",
      "format": "count",
      "description": "a parameter of the receive family"
     },
     "markets": {
      "type": "integer",
      "format": "count",
      "description": "a parameter of the receive family"
     },
     "credits": {
      "type": "integer",
      "format": "count",
      "description": "a parameter of the receive family"
     },
     "offerings": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "id"
      },
      "description": "the offerings the tier holds"
     },
     "for_kinds": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "id"
      },
      "description": "the buyer profiles it is for"
     },
     "quantile": {
      "type": "number",
      "format": "share",
      "description": "the position on the rivals' distribution the study set it at"
     }
    },
    "required": [
     "name",
     "order",
     "monthly",
     "annual",
     "currency",
     "allowances",
     "offerings"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "one tier of the ladder",
    "x-places": [],
    "x-from": "25 §2.1"
   },
   "FitReading": {
    "title": "FitReading",
    "description": "one result of a person's own product-market-fit test, as a reading the record keeps beside its readings: the tactic run, the market it was run in, the measure and its value in one of three positions, the sample, where it came from, and the hypothesis it settles",
    "type": "object",
    "properties": {
     "tactic": {
      "type": "string",
      "description": "",
      "x-register": "Tactic"
     },
     "vertical": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "segment": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "offering": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "measure": {
      "type": "string",
      "description": "",
      "x-register": "KindOfMeasure"
     },
     "value": {
      "$ref": "#/components/schemas/Summary",
      "description": ""
     },
     "sample": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "read_at": {
      "type": "string",
      "format": "time",
      "description": ""
     },
     "source": {
      "type": "string",
      "enum": [
       "a form",
       "a CRM",
       "a capture",
       "an upload",
       "a call",
       "the record"
      ],
      "description": ""
     },
     "hypothesis": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "note": {
      "type": "string",
      "format": "text",
      "description": ""
     }
    },
    "required": [
     "tactic",
     "vertical",
     "measure",
     "value",
     "read_at",
     "source"
    ],
    "additionalProperties": false,
    "x-kind": "fact",
    "x-scope": "brand",
    "x-store": "postgres+lake",
    "x-key": "the tactic, the market, the measure and the time",
    "x-places": [],
    "x-from": "26 §2.1"
   },
   "Strategy": {
    "title": "Strategy",
    "description": "a strategy under a brand, or under several that share an owning company",
    "type": "object",
    "properties": {
     "name": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "brands": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "id"
      },
      "description": ""
     },
     "goals": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "id"
      },
      "description": ""
     },
     "plays": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "id"
      },
      "description": ""
     },
     "monitors": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "id"
      },
      "description": ""
     },
     "moves": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "id"
      },
      "description": ""
     },
     "budget": {
      "$ref": "#/components/schemas/Budget",
      "description": ""
     },
     "people": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/RoleHeld"
      },
      "description": ""
     },
     "grants": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "id"
      },
      "description": ""
     },
     "memory": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "id"
      },
      "description": ""
     },
     "tasks": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "id"
      },
      "description": ""
     },
     "window": {
      "$ref": "#/components/schemas/Window",
      "description": ""
     },
     "standing": {
      "type": "boolean",
      "format": "bool",
      "description": "the brand's standing strategy"
     },
     "life": {
      "type": "string",
      "enum": [
       "drafted",
       "simulated",
       "rolled out in part",
       "running",
       "paused",
       "ended"
      ],
      "description": "the strategy's place in its life, moved only by the rules of the model's section 10.2; the standing strategy is born running"
     },
     "version": {
      "type": "integer",
      "format": "count",
      "description": "a change to the graph while it runs is a new version; running moves finish under the version that proposed them"
     },
     "game": {
      "type": "string",
      "description": "the game it plays, read from the brand's way of going to market and its vertical when drafted",
      "x-register": "Game"
     },
     "graph": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/GraphEdge"
      },
      "description": "the edges between its plays; a play with no edge into it starts on its own trigger"
     },
     "simulations": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "id"
      },
      "description": "every simulation it was laid on the twin for, the last one the frame N-13 shows"
     },
     "origin": {
      "type": "string",
      "format": "id",
      "description": "the ended strategy this one started from"
     },
     "policy": {
      "type": "string",
      "description": "the policy that chooses among its ready arms",
      "x-register": "Policy"
     }
    },
    "required": [
     "name",
     "brands",
     "goals",
     "plays",
     "monitors",
     "moves",
     "budget",
     "people",
     "grants",
     "memory",
     "tasks",
     "window",
     "standing",
     "life",
     "version",
     "game",
     "graph",
     "simulations",
     "policy"
    ],
    "additionalProperties": false,
    "x-kind": "definition",
    "x-scope": "strategy",
    "x-store": "postgres",
    "x-key": "its id",
    "x-places": [],
    "x-from": "13 §2.1"
   },
   "Invitation": {
    "title": "Invitation",
    "description": "a person invited by address to a role of the tenant, bound when they sign in with that address",
    "type": "object",
    "properties": {
     "tenant": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "address": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "role": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "invited_by": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "expires": {
      "type": "string",
      "format": "time",
      "description": ""
     },
     "standing": {
      "type": "string",
      "enum": [
       "open",
       "accepted",
       "expired",
       "withdrawn"
      ],
      "description": ""
     },
     "held_on": {
      "$ref": "#/components/schemas/Scope",
      "description": "the tenant, brand or strategy the role is held on once accepted; a guest's invitation names a brand"
     }
    },
    "required": [
     "tenant",
     "address",
     "role",
     "invited_by",
     "expires",
     "standing"
    ],
    "additionalProperties": false,
    "x-kind": "definition",
    "x-scope": "tenant",
    "x-store": "postgres",
    "x-key": "the tenant and the address",
    "x-places": [],
    "x-from": "03 §2.8"
   },
   "Template": {
    "title": "Template",
    "description": "a segment's vertical pack: rows a brand installs as copies naming their origin; its own origin is the vertical's pack; it carries a planted defect",
    "type": "object",
    "properties": {
     "vertical": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "segment": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "version": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "origin": {
      "type": "string",
      "format": "id",
      "description": "the vertical's pack"
     },
     "kinds_of_buyer": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/KindOfBuyer"
      },
      "description": "originals"
     },
     "ladders": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/Ladder"
      },
      "description": ""
     },
     "kinds_of_signal": {
      "type": "array",
      "items": {
       "type": "string",
       "description": "the name of a row of KindOfSignal",
       "x-register": "KindOfSignal"
      },
      "description": ""
     },
     "sources": {
      "type": "array",
      "items": {
       "type": "string",
       "description": "the name of a row of Source",
       "x-register": "Source"
      },
      "description": ""
     },
     "plays": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/Play"
      },
      "description": ""
     },
     "channels": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/ChannelRule"
      },
      "description": ""
     },
     "words": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/Word"
      },
      "description": ""
     },
     "regulations": {
      "type": "array",
      "items": {
       "type": "string",
       "description": "the name of a row of Regulation",
       "x-register": "Regulation"
      },
      "description": ""
     },
     "facets": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "id"
      },
      "description": ""
     },
     "proxies": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "id"
      },
      "description": ""
     },
     "ways_of_going_to_market": {
      "type": "array",
      "items": {
       "type": "string",
       "description": "the name of a row of WayOfGoingToMarket",
       "x-register": "WayOfGoingToMarket"
      },
      "description": ""
     },
     "planted_defect": {
      "type": "string",
      "format": "text",
      "description": "the install must refuse it"
     },
     "state": {
      "$ref": "#/components/schemas/Readiness",
      "description": ""
     }
    },
    "required": [
     "vertical",
     "segment",
     "version",
     "kinds_of_buyer",
     "ladders",
     "kinds_of_signal",
     "sources",
     "plays",
     "channels",
     "words",
     "regulations",
     "facets",
     "proxies",
     "ways_of_going_to_market",
     "planted_defect",
     "state"
    ],
    "additionalProperties": false,
    "x-kind": "definition",
    "x-scope": "platform",
    "x-store": "postgres",
    "x-key": "the segment and its version",
    "x-places": [],
    "x-from": "12 §2.1; SR-1207, SR-1218"
   },
   "Source": {
    "title": "Source",
    "description": "anywhere the market is read, with its rights and its role",
    "type": "object",
    "properties": {
     "name": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "market": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "jurisdiction": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "rights": {
      "$ref": "#/components/schemas/Rights",
      "description": ""
     },
     "role": {
      "type": "string",
      "enum": [
       "owns the record",
       "a copy of another platform's reading",
       "a one-off catch-up",
       "derived from other sources",
       "a tenant's own",
       "an extract with no chain of custody"
      ],
      "description": ""
     },
     "copy_of": {
      "type": "string",
      "description": "",
      "x-register": "Source"
     },
     "legality_tier": {
      "type": "string",
      "enum": [
       "1",
       "2",
       "3",
       "not allowed",
       "unknown"
      ],
      "description": "unknown makes the source not ready with the reason (SR-0730)"
     },
     "basis_of_times": {
      "type": "string",
      "enum": [
       "published",
       "scheduled",
       "first seen",
       "captured",
       "imported",
       "retrieved"
      ],
      "description": "captured is when the source or an exporter took the reading, imported when it entered the system that held it, retrieved when it was fetched from that system"
     },
     "state": {
      "$ref": "#/components/schemas/Readiness",
      "description": ""
     },
     "forced_open_by": {
      "type": "string",
      "format": "text",
      "description": "the law or rule that forces the source to publish, where one does; a register a regulator keeps names it"
     }
    },
    "required": [
     "name",
     "market",
     "jurisdiction",
     "rights",
     "role",
     "legality_tier",
     "basis_of_times",
     "state"
    ],
    "additionalProperties": false,
    "x-kind": "row",
    "x-scope": "platform",
    "x-store": "postgres",
    "x-key": "its name",
    "x-places": [],
    "x-from": "07 §2.1; DOMAIN/07"
   },
   "SignUpInput": {
    "title": "SignUpInput",
    "description": "the company a person names on their first sign-in, so the platform makes their tenant on the trial plan",
    "type": "object",
    "properties": {
     "company": {
      "type": "string",
      "format": "text",
      "description": "the company's name as the person states it"
     },
     "domain": {
      "type": "string",
      "format": "text",
      "description": "the company's website, which the map from a domain reads next"
     }
    },
    "required": [
     "company"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "03 §2.8; 03 §3"
   },
   "Membership": {
    "title": "Membership",
    "description": "a user in a tenant, as a member or a guest",
    "type": "object",
    "properties": {
     "user": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "tenant": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "kind": {
      "type": "string",
      "enum": [
       "member",
       "guest"
      ],
      "description": "a guest's home tenant is another one"
     },
     "state": {
      "$ref": "#/components/schemas/Readiness",
      "description": ""
     }
    },
    "required": [
     "user",
     "tenant",
     "kind",
     "state"
    ],
    "additionalProperties": false,
    "x-kind": "definition",
    "x-scope": "tenant",
    "x-store": "postgres",
    "x-key": "the user and the tenant",
    "x-places": [],
    "x-from": "03 §2.2"
   },
   "KeyRank": {
    "title": "KeyRank",
    "description": "one namespace of identifier, its rank of trust and the sources that supply it",
    "type": "object",
    "properties": {
     "namespace": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "rank": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "sources": {
      "type": "array",
      "items": {
       "type": "string",
       "description": "the name of a row of Source",
       "x-register": "Source"
      },
      "description": ""
     },
     "may_decide_same": {
      "type": "boolean",
      "format": "bool",
      "description": ""
     },
     "shared_by_design": {
      "type": "boolean",
      "format": "bool",
      "description": "a value shared by design is never a key"
     }
    },
    "required": [
     "namespace",
     "rank",
     "sources",
     "may_decide_same",
     "shared_by_design"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "05 §2.1; §2.3"
   },
   "JudgeFitInput": {
    "title": "JudgeFitInput",
    "description": "a kind of buyer and an entity to judge, without making a lead",
    "type": "object",
    "properties": {
     "kind_of_buyer": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "entity": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "brand": {
      "type": "string",
      "format": "id",
      "description": ""
     }
    },
    "required": [
     "kind_of_buyer",
     "entity"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "08 §3"
   },
   "NumberChange": {
    "title": "NumberChange",
    "description": "one number that moved",
    "type": "object",
    "properties": {
     "label": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "before": {
      "description": ""
     },
     "after": {
      "description": ""
     },
     "unit": {
      "type": "string",
      "format": "id",
      "description": ""
     }
    },
    "required": [
     "label",
     "before",
     "after",
     "unit"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "17 §2.1"
   },
   "SqlBounds": {
    "title": "SqlBounds",
    "description": "the value of the parameter the bounds of a statement through the SQL path: rows returned, time and memory",
    "type": "object",
    "properties": {
     "rows": {
      "type": "integer",
      "format": "count",
      "description": "rows returned"
     },
     "time_ms": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "memory_bytes": {
      "type": "integer",
      "format": "bytes",
      "description": ""
     }
    },
    "required": [
     "rows",
     "time_ms",
     "memory_bytes"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "06 §2.6"
   },
   "Play": {
    "title": "Play",
    "description": "written once, filled per brand: its goal, condition, class, tactic, the move it proposes, its price, its measure, its forecast rule, its comparison, when it stops",
    "type": "object",
    "properties": {
     "name": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "brand": {
      "type": "string",
      "format": "id",
      "description": "the brand the play is filled for; a platform original is copied per brand with original set"
     },
     "strategy": {
      "type": "string",
      "format": "id",
      "description": "the strategy it is armed in; absent until armed"
     },
     "goal": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "condition": {
      "$ref": "#/components/schemas/Predicate",
      "description": ""
     },
     "class": {
      "type": "string",
      "description": "the class last read on the beat (ClassReading); proposed on the arming from the kind's usual class and the rivals' coverage, never typed by taste",
      "x-register": "PlayClass"
     },
     "tactic": {
      "type": "string",
      "description": "",
      "x-register": "Tactic"
     },
     "proposes": {
      "type": "string",
      "format": "text",
      "description": "the move"
     },
     "price": {
      "$ref": "#/components/schemas/Cost",
      "description": ""
     },
     "measure": {
      "type": "string",
      "description": "",
      "x-register": "KindOfMeasure"
     },
     "window": {
      "type": "string",
      "format": "duration",
      "description": ""
     },
     "forecast_rule": {
      "type": "string",
      "format": "text",
      "description": "how its forecast is made"
     },
     "comparison": {
      "type": "string",
      "format": "text",
      "description": "what is left alone"
     },
     "stop": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "armed": {
      "type": "boolean",
      "format": "bool",
      "description": ""
     },
     "original": {
      "type": "string",
      "format": "id",
      "description": "a platform original in a template"
     },
     "mode": {
      "type": "string",
      "enum": [
       "harvest",
       "cultivate"
      ],
      "description": "a harvest play for present demand, a cultivation play for demand to be made"
     },
     "fit_phase": {
      "type": "string",
      "enum": [
       "find the market",
       "sculpt the offering",
       "test the fit",
       "build a beachhead",
       "engineer demand",
       "find demand",
       "grow in a market",
       "hedge"
      ],
      "description": "the phase of the search for product-market fit the play serves, where it serves one (26 §2.1)"
     },
     "kind": {
      "type": "string",
      "description": "the kind of play it is, from the register of kinds of play (26 §2.1)",
      "x-register": "KindOfPlay"
     },
     "kind_of_move": {
      "type": "string",
      "description": "the kind of move it proposes",
      "x-register": "KindOfMove"
     },
     "graph": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/GraphEdge"
      },
      "description": "the edges between the moves it proposes; empty for a play of one move"
     },
     "share": {
      "type": "number",
      "format": "share",
      "description": "the share of the admitted members the arming admits; under one, the play is an experiment"
     },
     "holdout": {
      "type": "number",
      "format": "share",
      "description": "the share left alone at random, read as the effect's comparison"
     },
     "trigger": {
      "type": "string",
      "enum": [
       "a match",
       "a beat",
       "a person's word"
      ],
      "description": "what starts the play when no edge enters it"
     }
    },
    "required": [
     "name",
     "brand",
     "goal",
     "condition",
     "class",
     "tactic",
     "proposes",
     "measure",
     "window",
     "forecast_rule",
     "comparison",
     "stop",
     "armed",
     "kind_of_move",
     "graph",
     "share",
     "holdout",
     "trigger"
    ],
    "additionalProperties": false,
    "x-kind": "definition",
    "x-scope": "follows",
    "x-store": "postgres",
    "x-key": "its name and version",
    "x-places": [],
    "x-from": "13 §2.1"
   },
   "TemplateInput": {
    "title": "TemplateInput",
    "description": "an extraction template to write, preview, arm or retire",
    "type": "object",
    "properties": {
     "template": {
      "$ref": "#/components/schemas/ExtractionTemplate",
      "description": ""
     },
     "flow": {
      "type": "string",
      "enum": [
       "write",
       "preview",
       "arm",
       "disarm",
       "retire"
      ],
      "description": ""
     }
    },
    "required": [
     "template",
     "flow"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "18 §3"
   },
   "Voice": {
    "title": "Voice",
    "description": "a platform account or person that speaks for the brand, with its role and its code",
    "type": "object",
    "properties": {
     "brand": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "speaker": {
      "type": "string",
      "format": "id",
      "description": "an account or a person"
     },
     "role": {
      "type": "string",
      "enum": [
       "own account",
       "staff",
       "founder",
       "paid voice on a code",
       "affiliate",
       "teacher",
       "advocate"
      ],
      "description": ""
     },
     "code": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "since": {
      "type": "string",
      "format": "time",
      "description": ""
     }
    },
    "required": [
     "brand",
     "speaker",
     "role",
     "since"
    ],
    "additionalProperties": false,
    "x-kind": "definition",
    "x-scope": "brand",
    "x-store": "postgres",
    "x-key": "the account or person and the brand",
    "x-places": [],
    "x-from": "12 §2.1"
   },
   "Key": {
    "title": "Key",
    "description": "a second kind of caller: a key with an identity of its own",
    "type": "object",
    "properties": {
     "owner": {
      "type": "string",
      "enum": [
       "the platform",
       "a tenant"
      ],
      "description": ""
     },
     "acts_for": {
      "type": "string",
      "format": "id",
      "description": "the one person or service it may act for"
     },
     "scopes": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/Scope"
      },
      "description": ""
     },
     "access_scopes": {
      "type": "array",
      "items": {
       "type": "string",
       "description": "the name of a row of AccessScope",
       "x-register": "AccessScope"
      },
      "description": ""
     },
     "mode": {
      "type": "string",
      "enum": [
       "read only",
       "propose",
       "act",
       "full autonomy"
      ],
      "description": ""
     },
     "ends_at": {
      "type": "string",
      "format": "time",
      "description": ""
     },
     "withdrawn_at": {
      "type": "string",
      "format": "time",
      "description": ""
     }
    },
    "required": [
     "owner",
     "acts_for",
     "scopes",
     "access_scopes",
     "mode"
    ],
    "additionalProperties": false,
    "x-kind": "definition",
    "x-scope": "tenant",
    "x-store": "postgres",
    "x-key": "its id",
    "x-places": [],
    "x-from": "03 §2.2"
   },
   "KeepBuyerInput": {
    "title": "KeepBuyerInput",
    "description": "a buyer profile as it should stand next: its own predicate in full, its bindings and its ladder; the platform compiles the predicate, keeps it by its hash, and writes the next version ready or not ready with the reason",
    "type": "object",
    "properties": {
     "kind_of_buyer": {
      "$ref": "#/components/schemas/KindOfBuyer",
      "description": "the whole profile, with the predicate's tree given in full"
     }
    },
    "required": [
     "kind_of_buyer"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "12 §3"
   },
   "StrategyInput": {
    "title": "StrategyInput",
    "description": "a strategy to make",
    "type": "object",
    "properties": {
     "strategy": {
      "$ref": "#/components/schemas/Strategy",
      "description": ""
     }
    },
    "required": [
     "strategy"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "13 §3"
   },
   "SourceProcedure": {
    "title": "SourceProcedure",
    "description": "how a source is read, derived from its row and its last reading: how it opens, every table with its count, population and control, the joins, the lineage and the pitfalls",
    "type": "object",
    "properties": {
     "source": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "kind": {
      "type": "string",
      "enum": [
       "lake",
       "catalogue",
       "folder of files",
       "hypergraph",
       "embedding store",
       "predicate set",
       "derived table"
      ],
      "description": "one row for every kind"
     },
     "path": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "hash": {
      "type": "string",
      "format": "hash",
      "description": "the file at the last reading"
     },
     "generator": {
      "type": "string",
      "format": "text",
      "description": "the program that made it, with its path and commit"
     },
     "engine": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "opens": {
      "type": "string",
      "format": "text",
      "description": "the statement that attaches it read-only"
     },
     "tables": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/SourceTable"
      },
      "description": "every table of the artefact with its count, population and control"
     },
     "joins": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/SourceJoin"
      },
      "description": "to other sources, by identifier"
     },
     "pitfalls": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "text"
      },
      "description": "each with the reading that showed it"
     },
     "read_at": {
      "type": "string",
      "format": "time",
      "description": ""
     },
     "stale": {
      "type": "boolean",
      "format": "bool",
      "description": "past the parameter's age"
     },
     "version": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "state": {
      "$ref": "#/components/schemas/Readiness",
      "description": "ready when the artefact opened and every table counted; not ready with the reason, such as a missing file or a table with no control (SR-1846); absent on a procedure not yet read"
     },
     "bytes": {
      "type": "integer",
      "format": "bytes",
      "description": "the size of the file, or of every file of the folder, at the reading; a changed size says the artefact was rebuilt without hashing it again"
     },
     "modified": {
      "type": "string",
      "format": "time",
      "description": "when the file, or the newest file of the folder, was last changed, at the reading; a later time says the artefact was rebuilt without hashing it again"
     }
    },
    "required": [
     "source",
     "kind",
     "path",
     "hash",
     "generator",
     "engine",
     "opens",
     "tables",
     "joins",
     "pitfalls",
     "read_at",
     "stale",
     "version"
    ],
    "additionalProperties": false,
    "x-kind": "row",
    "x-scope": "platform",
    "x-store": "postgres",
    "x-key": "the source and the reading",
    "x-places": [],
    "x-from": "18 §2.25"
   },
   "SearchRequest": {
    "title": "SearchRequest",
    "description": "one metasearch query through the self-hosted SearXNG, fanned out across engines",
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "engines": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "text"
      },
      "description": "empty means the rows' default set"
     },
     "categories": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "text"
      },
      "description": "general, news, science, social, code, images, videos, files, maps"
     },
     "time_range": {
      "$ref": "#/components/schemas/Window",
      "description": ""
     },
     "language": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "safe_search": {
      "type": "string",
      "enum": [
       "off",
       "moderate",
       "strict"
      ],
      "description": ""
     },
     "count": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "page": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "as_identity": {
      "type": "string",
      "format": "id",
      "description": "a held identity, lent by a grant"
     },
     "credit_cells": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "id"
      },
      "description": ""
     }
    },
    "required": [
     "query",
     "safe_search",
     "count",
     "page"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "18 §2.18"
   },
   "ConsentAnswer": {
    "title": "ConsentAnswer",
    "description": "a fact, or yes or no with the fact that decides",
    "type": "object",
    "properties": {
     "answer": {
      "type": "string",
      "enum": [
       "yes",
       "no"
      ],
      "description": ""
     },
     "fact": {
      "$ref": "#/components/schemas/Consent",
      "description": ""
     }
    },
    "required": [],
    "additionalProperties": false,
    "x-kind": "view",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "03 §3"
   },
   "StockLevel": {
    "title": "StockLevel",
    "description": "one stock's level at one moment, in one of three positions",
    "type": "object",
    "properties": {
     "stock": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "unit": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "level": {
      "$ref": "#/components/schemas/Summary",
      "description": ""
     },
     "as_of": {
      "type": "string",
      "format": "time",
      "description": ""
     }
    },
    "required": [
     "stock",
     "unit",
     "level",
     "as_of"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "26 §2.1"
   },
   "Allowance": {
    "title": "Allowance",
    "description": "one kind of usage a tier includes, with the quantity",
    "type": "object",
    "properties": {
     "kind": {
      "type": "string",
      "description": "",
      "x-register": "KindOfUsage"
     },
     "included": {
      "type": "integer",
      "format": "count",
      "description": "in the kind's unit"
     }
    },
    "required": [
     "kind",
     "included"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "one allowance of a tier",
    "x-places": [],
    "x-from": "25 §2.1"
   },
   "CrawlScope": {
    "title": "CrawlScope",
    "description": "what a scrape may walk: the seeds, the address patterns allowed and denied, the greatest depth and count of pages, whether the sitemap drives discovery, and the pagination rule",
    "type": "object",
    "properties": {
     "seeds": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "text"
      },
      "description": ""
     },
     "allow_patterns": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "text"
      },
      "description": ""
     },
     "deny_patterns": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "text"
      },
      "description": ""
     },
     "max_depth": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "max_pages": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "use_sitemap": {
      "type": "boolean",
      "format": "bool",
      "description": ""
     },
     "pagination": {
      "type": "string",
      "format": "text",
      "description": "a selector or a pattern for the next page"
     }
    },
    "required": [
     "seeds",
     "allow_patterns",
     "deny_patterns",
     "max_depth",
     "max_pages",
     "use_sitemap"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "18 §2.18"
   },
   "MarketSimulation": {
    "title": "MarketSimulation",
    "description": "one run of a systems model template over the record's readings with a strategy laid over it as interventions; the one evaluator steps every flow; deterministic under its seed; stops at its budget with the trajectories it reached",
    "type": "object",
    "properties": {
     "template": {
      "type": "string",
      "description": "",
      "x-register": "SystemsModelTemplate"
     },
     "template_version": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "vertical": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "segment": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "brand": {
      "type": "string",
      "format": "id",
      "description": "absent for a simulation of the shared market"
     },
     "readings_hash": {
      "type": "string",
      "format": "hash",
      "description": "the hash of every chain count, benchmark and stated number the run read, at their versions"
     },
     "interventions": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/Intervention"
      },
      "description": ""
     },
     "horizon": {
      "type": "string",
      "format": "duration",
      "description": ""
     },
     "step": {
      "type": "string",
      "format": "duration",
      "description": ""
     },
     "samples": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "seed": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "frame": {
      "type": "string",
      "format": "id",
      "description": "the frame it wrote"
     },
     "why_failed": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "elapsed": {
      "type": "string",
      "format": "duration",
      "description": ""
     }
    },
    "required": [
     "template",
     "template_version",
     "vertical",
     "readings_hash",
     "interventions",
     "horizon",
     "step",
     "samples",
     "seed"
    ],
    "additionalProperties": false,
    "x-kind": "work",
    "x-scope": "brand",
    "x-store": "postgres",
    "x-key": "the template version, the vertical, the readings hash, the interventions hash and the seed",
    "x-places": [
     "queued",
     "stepping",
     "done",
     "failed"
    ],
    "x-from": "26 §2.1"
   },
   "Beat": {
    "title": "Beat",
    "description": "when something runs again; one register and one scheduler",
    "type": "object",
    "properties": {
     "name": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "every": {
      "type": "string",
      "format": "duration",
      "description": ""
     },
     "anchor": {
      "type": "string",
      "format": "time",
      "description": ""
     },
     "zone": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "attempts": {
      "type": "integer",
      "format": "count",
      "description": "how many attempts one tick gets before its run is left failed; absent means one, so a failed tick waits for the next"
     },
     "retry_after": {
      "type": "string",
      "format": "duration",
      "description": "the wait between a failed attempt and the next; required when attempts is above one"
     }
    },
    "required": [
     "name",
     "every"
    ],
    "additionalProperties": false,
    "x-kind": "row",
    "x-scope": "platform",
    "x-store": "postgres",
    "x-key": "its name",
    "x-places": [],
    "x-from": "09 §2"
   },
   "LedgerInput": {
    "title": "LedgerInput",
    "description": "a strategy and the window",
    "type": "object",
    "properties": {
     "strategy": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "window": {
      "$ref": "#/components/schemas/Window",
      "description": ""
     }
    },
    "required": [
     "strategy",
     "window"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "13 §3"
   },
   "Turn": {
    "title": "Turn",
    "description": "one unit of the agent's work, started by one input and ended when its outputs are produced; it holds items in order",
    "type": "object",
    "properties": {
     "thread": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "sequence": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "input": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "started_at": {
      "type": "string",
      "format": "time",
      "description": ""
     },
     "ended_at": {
      "type": "string",
      "format": "time",
      "description": ""
     },
     "outcome": {
      "type": "string",
      "enum": [
       "completed",
       "cancelled",
       "failed",
       "waiting"
      ],
      "description": ""
     },
     "items": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/Item"
      },
      "description": ""
     }
    },
    "required": [
     "thread",
     "sequence",
     "input",
     "started_at",
     "items"
    ],
    "additionalProperties": false,
    "x-kind": "work",
    "x-scope": "strategy",
    "x-store": "postgres",
    "x-key": "the thread and its sequence",
    "x-places": [
     "running",
     "waiting",
     "completed•",
     "cancelled•",
     "failed•"
    ],
    "x-from": "09 §2.2"
   },
   "EgressReading": {
    "title": "EgressReading",
    "description": "bytes one connector sent and received through the relay on one day",
    "type": "object",
    "properties": {
     "connector": {
      "type": "string",
      "description": "the connector's registry row",
      "x-register": "Source"
     },
     "day": {
      "type": "string",
      "format": "date",
      "description": ""
     },
     "bytes_out": {
      "type": "integer",
      "format": "bytes",
      "description": ""
     },
     "bytes_in": {
      "type": "integer",
      "format": "bytes",
      "description": ""
     },
     "limit_reached_at": {
      "type": "string",
      "format": "time",
      "description": ""
     }
    },
    "required": [
     "connector",
     "day",
     "bytes_out",
     "bytes_in"
    ],
    "additionalProperties": false,
    "x-kind": "fact",
    "x-scope": "platform",
    "x-store": "postgres+lake",
    "x-key": "the connector and the day",
    "x-places": [],
    "x-from": "21 §2.4"
   },
   "IntelligenceInput": {
    "title": "IntelligenceInput",
    "description": "a subject and a kind of intelligence to read",
    "type": "object",
    "properties": {
     "subject": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "kind": {
      "type": "string",
      "format": "text",
      "description": "one of the register's kinds"
     }
    },
    "required": [
     "subject",
     "kind"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "14 §3"
   },
   "KindOfBuyer": {
    "title": "KindOfBuyer",
    "description": "a kind of customer a brand sells to, written as a predicate so its members can be counted; it compiles or it is not ready",
    "type": "object",
    "properties": {
     "name": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "sentence": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "predicate": {
      "$ref": "#/components/schemas/Predicate",
      "description": ""
     },
     "bindings": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/Binding"
      },
      "description": ""
     },
     "ladder": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "motives": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/Motive"
      },
      "description": "each kind of motive with its evidence; wants and puts-off are two of the kinds"
     },
     "who_else_must_agree": {
      "type": "array",
      "items": {
       "type": "string",
       "description": "the name of a row of RoleAroundADecision",
       "x-register": "RoleAroundADecision"
      },
      "description": ""
     },
     "preview": {
      "$ref": "#/components/schemas/PreviewAnswer",
      "description": "the last"
     },
     "hypothesis": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "original": {
      "type": "string",
      "format": "id",
      "description": "the template's original"
     },
     "fingerprint": {
      "$ref": "#/components/schemas/Predicate",
      "description": "the definition that finds members of the kind over communities, utterances and likeness; a kind without one is not ready"
     },
     "found_in": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/UnitRef"
      },
      "description": "the communities where its members are found, with the lift on the audience map"
     },
     "leads_to": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/LeadsTo"
      },
      "description": "the kinds this kind brings, becomes or crosses to, with the rate"
     },
     "economics": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/EconomicReading"
      },
      "description": "numbers about the kind that are not a count of members, each in its own position"
     },
     "reached_through": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/RouteToBuyer"
      },
      "description": "the routes to the buyer that are not communities"
     },
     "filed_under": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/UnitRef"
      },
      "description": "a family, a vertical, an application or a chain stock"
     },
     "basket": {
      "type": "string",
      "format": "id",
      "description": "the proxies its fingerprint names, kept as a basket"
     }
    },
    "required": [
     "name",
     "sentence",
     "predicate",
     "bindings",
     "ladder"
    ],
    "additionalProperties": false,
    "x-kind": "definition",
    "x-scope": "brand",
    "x-store": "postgres",
    "x-key": "its name and version",
    "x-places": [],
    "x-from": "12 §2.1"
   },
   "ConceptBars": {
    "title": "ConceptBars",
    "description": "the meaning bars of one concept under the model the bars were measured under: the score at each breadth's share for that concept alone, so a leaf's breadth means the same share whatever its concept",
    "type": "object",
    "properties": {
     "concept_hash": {
      "type": "string",
      "format": "hash",
      "description": "the hash of the concept's text"
     },
     "exact": {
      "type": "number",
      "format": "share",
      "description": ""
     },
     "similar": {
      "type": "number",
      "format": "share",
      "description": ""
     },
     "related": {
      "type": "number",
      "format": "share",
      "description": ""
     },
     "broad": {
      "type": "number",
      "format": "share",
      "description": ""
     },
     "units": {
      "type": "integer",
      "format": "count",
      "description": "the units the concept was ranked over"
     }
    },
    "required": [
     "concept_hash",
     "exact",
     "similar",
     "related",
     "broad",
     "units"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "06 §2.6; 14 §5"
   },
   "KindOfSignal": {
    "title": "KindOfSignal",
    "description": "a kind of signal: what it means, its population, its sources, and a floor for each of the four numbers of strength",
    "type": "object",
    "properties": {
     "name": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "meaning": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "population": {
      "type": "string",
      "description": "required before the kind is ready; absent while it is not ready with that reason",
      "x-register": "Population"
     },
     "sources": {
      "type": "array",
      "items": {
       "type": "string",
       "description": "the name of a row of Source",
       "x-register": "Source"
      },
      "description": "the kinds of source that can show it"
     },
     "floors": {
      "$ref": "#/components/schemas/ProxyStrength",
      "description": "required before the kind is ready; absent while it is not ready with that reason"
     },
     "stage": {
      "type": "string",
      "description": "",
      "x-register": "Stage"
     },
     "state": {
      "$ref": "#/components/schemas/Readiness",
      "description": "not ready when no ready monitor and no ready source can make it"
     },
     "evaluation": {
      "type": "string",
      "enum": [
       "an event lands",
       "a count over a window",
       "a change between readings",
       "a rate against a baseline",
       "made true by time passing",
       "an ordered sequence",
       "a meaning or phrase match",
       "an overlap between populations",
       "a join through a place or segment",
       "the tenant's own facts",
       "derived by a rule",
       "a membership or fit"
      ],
      "description": "the way it is evaluated, which decides the layout it needs"
     },
     "aliases": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "text"
      },
      "description": "other names for the same kind, merged by the seed"
     },
     "named_in": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "text"
      },
      "description": "the pages that name it"
     }
    },
    "required": [
     "name",
     "meaning",
     "sources",
     "state",
     "evaluation"
    ],
    "additionalProperties": false,
    "x-kind": "row",
    "x-scope": "platform",
    "x-store": "postgres",
    "x-key": "its name",
    "x-places": [],
    "x-from": "06 §2.2; requirement 11"
   },
   "BrandDesignSystemInput": {
    "title": "BrandDesignSystemInput",
    "description": "the brand, and the version wanted, else the newest",
    "type": "object",
    "properties": {
     "brand": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "version": {
      "type": "integer",
      "format": "count",
      "description": ""
     }
    },
    "required": [
     "brand"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "DESIGN/the-brand-graph-from-a-domain §7"
   },
   "BronzeObject": {
    "title": "BronzeObject",
    "description": "an artefact as the source gave it, keyed by its content hash, with the way it came by, the job, the time and the hop stamp; the bytes sit beside the row in the engine's own column, never in the row",
    "type": "object",
    "properties": {
     "hash": {
      "type": "string",
      "format": "hash",
      "description": "the artefact's content hash, its key"
     },
     "source": {
      "type": "string",
      "description": "",
      "x-register": "Source"
     },
     "way": {
      "type": "string",
      "description": "",
      "x-register": "AccessMethod"
     },
     "job": {
      "type": "string",
      "format": "id",
      "description": "the job or the capture that deposited it"
     },
     "address": {
      "type": "string",
      "format": "text",
      "description": "the address the artefact was read from, when it has one"
     },
     "kind": {
      "type": "string",
      "enum": [
       "a page",
       "a file",
       "a response",
       "a stream"
      ],
      "description": ""
     },
     "at": {
      "type": "string",
      "format": "time",
      "description": "when it was deposited"
     },
     "bytes": {
      "type": "integer",
      "format": "bytes",
      "description": "the size of the artefact"
     },
     "chunks": {
      "type": "integer",
      "format": "count",
      "description": "how many chunks the bytes were written in"
     },
     "hop": {
      "$ref": "#/components/schemas/HopStamp",
      "description": "the deposit's hop"
     },
     "plane": {
      "$ref": "#/components/schemas/Plane",
      "description": ""
     }
    },
    "required": [
     "hash",
     "source",
     "job",
     "kind",
     "at",
     "bytes",
     "chunks",
     "hop",
     "plane"
    ],
    "additionalProperties": false,
    "x-kind": "fact",
    "x-scope": "follows",
    "x-store": "lake:landed",
    "x-key": "its content hash on its plane",
    "x-places": [],
    "x-from": "18 §2.12; 04 §2.3"
   },
   "LandedArtefact": {
    "title": "LandedArtefact",
    "description": "the artefact as the source gave it, keyed by its content hash",
    "type": "object",
    "properties": {
     "bytes_hash": {
      "type": "string",
      "format": "hash",
      "description": ""
     },
     "bytes": {
      "type": "integer",
      "format": "bytes",
      "description": ""
     },
     "way": {
      "type": "string",
      "description": "",
      "x-register": "AccessMethod"
     },
     "fetched_at": {
      "type": "string",
      "format": "time",
      "description": ""
     },
     "ask": {
      "type": "string",
      "format": "id",
      "description": ""
     }
    },
    "required": [
     "bytes_hash",
     "bytes",
     "way",
     "fetched_at",
     "ask"
    ],
    "additionalProperties": false,
    "x-kind": "fact",
    "x-scope": "follows",
    "x-store": "lake:landed",
    "x-key": "its content hash",
    "x-places": [],
    "x-from": "07 §2.3; 04 §2.3"
   },
   "ReferabilityCondition": {
    "title": "ReferabilityCondition",
    "description": "one of the ten conditions that must hold before a professional puts a name behind a brand; every vertical pack writes its own instance with its own check",
    "type": "object",
    "properties": {
     "name": {
      "type": "string",
      "enum": [
       "scope stated",
       "admission criteria",
       "named accountable",
       "escalation path",
       "evidence graded",
       "protocol",
       "report back",
       "before and after",
       "qualified staff",
       "no overclaim"
      ],
      "description": ""
     },
     "order": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "general_form": {
      "type": "string",
      "format": "text",
      "description": ""
     }
    },
    "required": [
     "name",
     "order",
     "general_form"
    ],
    "additionalProperties": false,
    "x-kind": "row",
    "x-scope": "platform",
    "x-store": "postgres",
    "x-key": "its name",
    "x-places": [],
    "x-from": "12 §2.4"
   },
   "CatalogueInput": {
    "title": "CatalogueInput",
    "description": "a tenant or a brand, and a filter by source, kind of intelligence or vertical",
    "type": "object",
    "properties": {
     "tenant": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "brand": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "filter": {
      "type": "string",
      "format": "text",
      "description": ""
     }
    },
    "required": [],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "18 §3"
   },
   "Map": {
    "title": "Map",
    "description": "the brand's graph, every rival in the same shape, the markets, the channels, the chain, the voices, and for each part its coverage; it holds no rows of its own",
    "type": "object",
    "properties": {
     "brand": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "as_of": {
      "$ref": "#/components/schemas/TwoDates",
      "description": ""
     },
     "parts": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/MapPart"
      },
      "description": ""
     },
     "rivals": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "id"
      },
      "description": ""
     },
     "under_test": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "id"
      },
      "description": ""
     }
    },
    "required": [
     "brand",
     "as_of",
     "parts",
     "rivals",
     "under_test"
    ],
    "additionalProperties": false,
    "x-kind": "view",
    "x-scope": "brand",
    "x-store": "derived",
    "x-key": "the brand and the two dates",
    "x-places": [],
    "x-from": "12 §2.1"
   },
   "ProxyReading": {
    "title": "ProxyReading",
    "description": "its members as a population, with the raw count, the estimate corrected by the undercount, and the interval",
    "type": "object",
    "properties": {
     "proxy": {
      "$ref": "#/components/schemas/Proxy",
      "description": ""
     },
     "raw": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "corrected": {
      "$ref": "#/components/schemas/Interval",
      "description": ""
     },
     "population": {
      "$ref": "#/components/schemas/PopulationStatement",
      "description": ""
     },
     "members": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "id"
      },
      "description": "under the rights; never for aggregate-only"
     }
    },
    "required": [
     "proxy",
     "raw",
     "population"
    ],
    "additionalProperties": false,
    "x-kind": "view",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "06 §3"
   },
   "BrandCoordinate": {
    "title": "BrandCoordinate",
    "description": "one option of every design axis: where a variant sits",
    "type": "object",
    "properties": {
     "mode": {
      "type": "string",
      "description": "an option of the mode axis",
      "x-register": "DesignAxis"
     },
     "medium": {
      "type": "string",
      "description": "an option of the medium axis",
      "x-register": "DesignAxis"
     },
     "density": {
      "type": "string",
      "description": "an option of the density axis",
      "x-register": "DesignAxis"
     },
     "contrast": {
      "type": "string",
      "description": "an option of the contrast axis",
      "x-register": "DesignAxis"
     }
    },
    "required": [
     "mode",
     "medium",
     "density",
     "contrast"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "DESIGN/the-brand-graph-from-a-domain §5"
   },
   "Recipe": {
    "title": "Recipe",
    "description": "what a document reads: saved views, predicates, estimates and figures",
    "type": "object",
    "properties": {
     "saved_views": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "id"
      },
      "description": ""
     },
     "predicates": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "hash"
      },
      "description": ""
     },
     "estimates": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "id"
      },
      "description": ""
     },
     "figures": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/Figure"
      },
      "description": ""
     },
     "version": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "sections": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/ReportSection"
      },
      "description": "for a report: its sections in order, each running a method"
     }
    },
    "required": [
     "saved_views",
     "predicates",
     "estimates",
     "figures",
     "version"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "17 §2.1"
   },
   "UserMessage": {
    "title": "UserMessage",
    "description": "what a person typed into a turn",
    "type": "object",
    "properties": {
     "text": {
      "type": "string",
      "format": "text",
      "description": ""
     }
    },
    "required": [
     "text"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "09 §2.2"
   },
   "ClosedPartition": {
    "title": "ClosedPartition",
    "description": "a closed partition of the refined layer; final, with the hash of its rows",
    "type": "object",
    "properties": {
     "layer": {
      "type": "string",
      "enum": [
       "refined"
      ],
      "description": ""
     },
     "plane": {
      "$ref": "#/components/schemas/Plane",
      "description": ""
     },
     "source": {
      "type": "string",
      "description": "",
      "x-register": "Source"
     },
     "day": {
      "type": "string",
      "format": "date",
      "description": ""
     },
     "number": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "rows": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "rows_hash": {
      "type": "string",
      "format": "hash",
      "description": ""
     },
     "files": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/LakeFile"
      },
      "description": ""
     },
     "closed_at": {
      "type": "string",
      "format": "time",
      "description": ""
     },
     "closed_because": {
      "type": "string",
      "enum": [
       "longest age",
       "row cap",
       "adopted whole"
      ],
      "description": "adopted whole: the platform did not build this partition. The connector's own parser had already written one month of the archive as files, and the engine registered those files as they stand (18 §2.12)."
     },
     "table": {
      "type": "string",
      "description": "",
      "x-register": "SilverTable"
     },
     "bucket": {
      "type": "integer",
      "format": "count",
      "description": ""
     }
    },
    "required": [
     "layer",
     "plane",
     "source",
     "day",
     "number",
     "rows",
     "rows_hash",
     "files",
     "closed_at",
     "closed_because"
    ],
    "additionalProperties": false,
    "x-kind": "fact",
    "x-scope": "follows",
    "x-store": "lake:refined",
    "x-key": "the partition and its number",
    "x-places": [],
    "x-from": "07 §2.3; 04 §2.3"
   },
   "Catch": {
    "title": "Catch",
    "description": "a unit admitted by a predicate at a place, with the conditions and the words that admitted it",
    "type": "object",
    "properties": {
     "predicate": {
      "type": "string",
      "format": "hash",
      "description": ""
     },
     "unit": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "place": {
      "type": "string",
      "description": "",
      "x-register": "PlaceARunsAt"
     },
     "observation": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "conditions": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/ConditionMatch"
      },
      "description": ""
     },
     "monitor": {
      "type": "string",
      "format": "id",
      "description": ""
     }
    },
    "required": [
     "predicate",
     "unit",
     "place",
     "observation",
     "conditions"
    ],
    "additionalProperties": false,
    "x-kind": "fact",
    "x-scope": "follows",
    "x-store": "postgres+lake",
    "x-key": "the hash, the unit, the place and the observation read",
    "x-places": [],
    "x-from": "06 §2.2"
   },
   "Move": {
    "title": "Move",
    "description": "one proposed carrying out of a play: its forecast, its actions, its assignments, its effect",
    "type": "object",
    "properties": {
     "play": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "play_version": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "vertex": {
      "type": "string",
      "format": "text",
      "description": "the vertex of the play's graph this move carries out; absent for a play whose graph is one move"
     },
     "catch": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "kinds_of_action": {
      "type": "array",
      "items": {
       "type": "string",
       "description": "the name of a row of KindOfAction",
       "x-register": "KindOfAction"
      },
      "description": ""
     },
     "voice": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "what_is_said": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "proof": {
      "type": "string",
      "format": "text",
      "description": "the proof this buyer accepts"
     },
     "price": {
      "$ref": "#/components/schemas/Cost",
      "description": ""
     },
     "forecast": {
      "$ref": "#/components/schemas/Forecast",
      "description": "withheld when there is no like population"
     },
     "forecast_withheld_because": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "code": {
      "type": "string",
      "format": "text",
      "description": "the code it minted"
     },
     "assignments": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/Assignment"
      },
      "description": ""
     },
     "actions": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "id"
      },
      "description": ""
     },
     "effect": {
      "$ref": "#/components/schemas/Effect",
      "description": ""
     },
     "hypothesis": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "decided_by": {
      "$ref": "#/components/schemas/Caller",
      "description": ""
     },
     "frame": {
      "$ref": "#/components/schemas/SaleFrame",
      "description": "the sale framed for this buyer"
     },
     "kind": {
      "type": "string",
      "description": "",
      "x-register": "KindOfMove"
     },
     "actor": {
      "type": "string",
      "format": "id",
      "description": "the Actor routed by propensity, or waiting to be assigned"
     },
     "content": {
      "type": "string",
      "format": "id",
      "description": "the content chosen by propensity"
     },
     "graph": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/GraphEdge"
      },
      "description": "the edges between its actions; empty for a list"
     },
     "propensities": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "id"
      },
      "description": "the PropensityToMove facts that chose the actor and the content, with their odds"
     }
    },
    "required": [
     "play",
     "play_version",
     "kinds_of_action",
     "price",
     "assignments",
     "actions",
     "kind",
     "graph",
     "propensities"
    ],
    "additionalProperties": false,
    "x-kind": "work",
    "x-scope": "strategy",
    "x-store": "postgres",
    "x-key": "the play's version and the catch",
    "x-places": [
     "proposed",
     "waiting for a person",
     "approved",
     "running",
     "done",
     "window open",
     "measured",
     "stopped",
     "declined"
    ],
    "x-from": "13 §2.1"
   },
   "KnownExamples": {
    "title": "KnownExamples",
    "description": "labelled pairs or items in both directions, kept apart from the audit's samples",
    "type": "object",
    "properties": {
     "model": {
      "type": "string",
      "description": "",
      "x-register": "Model"
     },
     "items": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "labelled_by": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "how": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "both_directions": {
      "type": "boolean",
      "format": "bool",
      "description": ""
     },
     "path": {
      "type": "string",
      "format": "text",
      "description": ""
     }
    },
    "required": [
     "model",
     "items",
     "labelled_by",
     "how",
     "both_directions",
     "path"
    ],
    "additionalProperties": false,
    "x-kind": "fact",
    "x-scope": "platform",
    "x-store": "postgres",
    "x-key": "the model, the version and the date",
    "x-places": [],
    "x-from": "14 §2.1"
   },
   "PushMapping": {
    "title": "PushMapping",
    "description": "a record attribute written to a source field",
    "type": "object",
    "properties": {
     "attribute": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "source_field": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "reversible": {
      "type": "boolean",
      "format": "bool",
      "description": "a field with no reverse is pull-only"
     }
    },
    "required": [
     "attribute",
     "source_field",
     "reversible"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "18 §2.8"
   },
   "Model": {
    "title": "Model",
    "description": "a model: the task it decides, its kind, its address, its calibration, its state",
    "type": "object",
    "properties": {
     "name": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "version": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "task": {
      "type": "string",
      "format": "text",
      "description": "in one sentence"
     },
     "kind": {
      "type": "string",
      "enum": [
       "classifier",
       "embedder",
       "estimator",
       "generator",
       "normaliser",
       "chunker",
       "language head",
       "quality head",
       "near-duplicate method",
       "pooling recipe",
       "probe"
      ],
      "description": ""
     },
     "width": {
      "type": "integer",
      "format": "count",
      "description": "for an embedder"
     },
     "address": {
      "type": "string",
      "format": "address",
      "description": "with no default"
     },
     "provider": {
      "type": "string",
      "format": "text",
      "description": "who serves it; the settings name the provider's key by its environment name"
     },
     "leaves_the_platform": {
      "type": "boolean",
      "format": "bool",
      "description": "whether text sent to it leaves the platform"
     },
     "price_per_million_prompt_tokens": {
      "type": "number",
      "format": "money",
      "description": "the list price the provider states"
     },
     "price_per_million_completion_tokens": {
      "type": "number",
      "format": "money",
      "description": "the list price the provider states; none for an embedder"
     },
     "longest_input": {
      "type": "integer",
      "format": "count",
      "description": "tokens"
     },
     "prefix": {
      "type": "string",
      "format": "text",
      "description": "the prefix the model expects before a query, if any"
     },
     "licence": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "known_examples": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "id"
      },
      "description": ""
     },
     "controls": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/ControlResult"
      },
      "description": ""
     },
     "statistics": {
      "$ref": "#/components/schemas/ModelStatistics",
      "description": ""
     },
     "cost_per_call": {
      "$ref": "#/components/schemas/Cost",
      "description": ""
     },
     "state": {
      "$ref": "#/components/schemas/Readiness",
      "description": ""
     },
     "life": {
      "type": "string",
      "enum": [
       "candidate",
       "under test",
       "in shadow",
       "frozen",
       "serving",
       "retired"
      ],
      "description": ""
     }
    },
    "required": [
     "name",
     "version",
     "task",
     "kind",
     "address",
     "provider",
     "leaves_the_platform",
     "known_examples",
     "controls",
     "state",
     "life"
    ],
    "additionalProperties": false,
    "x-kind": "row",
    "x-scope": "platform",
    "x-store": "postgres",
    "x-key": "its name and version",
    "x-places": [],
    "x-from": "14 §2.1"
   },
   "DryRunInput": {
    "title": "DryRunInput",
    "description": "an action to dry run",
    "type": "object",
    "properties": {
     "action": {
      "type": "string",
      "format": "id",
      "description": ""
     }
    },
    "required": [
     "action"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "13 §3"
   },
   "MarketTwin": {
    "title": "MarketTwin",
    "description": "A digital twin is a model of a market that stays current because the record feeds it. It holds no second copy of the readings. For one brand, that model is one template of a model family laid over the record's readings. The template brings the vertical's value chain and the parties placed on it. As of a date, the twin carries the level of every stock. It also carries the simulations that ran on it, in order. The plays the brand's strategy has armed arrive as its interventions",
    "type": "object",
    "properties": {
     "vertical": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "segment": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "brand": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "template": {
      "type": "string",
      "description": "",
      "x-register": "SystemsModelTemplate"
     },
     "template_version": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "family": {
      "type": "string",
      "description": "",
      "x-register": "ModelFamily"
     },
     "way": {
      "type": "string",
      "description": "the way of going to market the twin serves",
      "x-register": "WayOfGoingToMarket"
     },
     "chain": {
      "type": "string",
      "format": "id",
      "description": "the vertical's chain the stocks start from"
     },
     "participants": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "id"
      },
      "description": "the participants placed on the chain for this brand"
     },
     "readings_hash": {
      "type": "string",
      "format": "hash",
      "description": "the hash of every reading the twin was instanced over, at their versions"
     },
     "as_of": {
      "type": "string",
      "format": "time",
      "description": "the date the state is read as of"
     },
     "state": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/StockLevel"
      },
      "description": "the level of every stock as of the date"
     },
     "steps": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "id"
      },
      "description": "the simulations run on this twin, in order"
     },
     "strategy": {
      "type": "string",
      "format": "id",
      "description": "the strategy whose plays are the twin's interventions"
     },
     "game": {
      "$ref": "#/components/schemas/GameOfRoles",
      "description": "the game of roles laid over the twin, where its family or its template carries one"
     },
     "version": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "content_hash": {
      "type": "string",
      "format": "hash",
      "description": ""
     },
     "state_of": {
      "$ref": "#/components/schemas/Readiness",
      "description": "ready when every stock the template needs has a reading or is marked never measured, and the template is ready"
     }
    },
    "required": [
     "vertical",
     "brand",
     "template",
     "template_version",
     "family",
     "chain",
     "participants",
     "readings_hash",
     "as_of",
     "state",
     "steps",
     "version",
     "content_hash",
     "state_of"
    ],
    "additionalProperties": false,
    "x-kind": "definition",
    "x-scope": "brand",
    "x-store": "postgres",
    "x-key": "the vertical, the template version, the brand and the readings hash, versioned",
    "x-places": [],
    "x-from": "26 §2.1; 12 §2.4"
   },
   "Claim": {
    "title": "Claim",
    "description": "an attribute of an entity, from one source, for a time",
    "type": "object",
    "properties": {
     "entity": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "attribute": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "value": {
      "description": ""
     },
     "from_when": {
      "type": "string",
      "format": "time",
      "description": ""
     },
     "until_when": {
      "type": "string",
      "format": "time",
      "description": ""
     },
     "identity_decision": {
      "type": "string",
      "format": "id",
      "description": "the decision it was attached under"
     }
    },
    "required": [
     "entity",
     "attribute",
     "value",
     "identity_decision"
    ],
    "additionalProperties": false,
    "x-kind": "fact",
    "x-scope": "follows",
    "x-store": "lake:ready",
    "x-key": "the entity, the attribute, the source and the time it was true",
    "x-places": [],
    "x-from": "04 §2.2"
   },
   "SystemsModelsInput": {
    "title": "SystemsModelsInput",
    "description": "the vertical or the kind of offering the templates must fit; both absent asks for every template",
    "type": "object",
    "properties": {
     "vertical": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "kind_of_offering": {
      "type": "string",
      "description": "",
      "x-register": "KindOfOffering"
     }
    },
    "required": [],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "26 §3"
   },
   "KindOfPlay": {
    "title": "KindOfPlay",
    "description": "one kind of play a strategy may run in a market: its family, what it does, the mechanism it works by, what it changes on the living market's model (which flow, loop, stock or payoff, and how), the number that decides it with its control, its known failure, the phases of the search it serves, the ways of going to market and kinds of offering it fits, the roles it moves, the class it usually reads against the rivals, and the counter-play a rival makes; a play of the strategy engine names its kind, and the catalogue of tactics names the methods a kind runs",
    "type": "object",
    "properties": {
     "name": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "family": {
      "type": "string",
      "enum": [
       "demand engineering",
       "demand capture",
       "channel and partnership",
       "pricing",
       "positioning and proof",
       "offering design",
       "market entry and beachhead",
       "growth in a market",
       "retention and existing customers",
       "competitive",
       "regulatory and payer",
       "education and enablement",
       "sales motion and operations",
       "hedge and portfolio",
       "ecosystem and platform"
      ],
      "description": ""
     },
     "what": {
      "type": "string",
      "format": "text",
      "description": "what the play does, in one sentence"
     },
     "mechanism": {
      "type": "string",
      "format": "text",
      "description": "how it works, in the field's terms"
     },
     "changes": {
      "type": "string",
      "enum": [
       "the rate of a flow",
       "the delay of a flow",
       "the inflow of a stock",
       "the outflow of a stock",
       "the limit of a loop",
       "a payoff of a role",
       "a handover's count",
       "a stock's reader"
      ],
      "description": "what it changes on the model"
     },
     "on": {
      "type": "string",
      "format": "text",
      "description": "which flow, loop, stock, handover or role it changes, in the template's words"
     },
     "deciding_number": {
      "type": "string",
      "format": "text",
      "description": "the number that says it worked, and its bar"
     },
     "control": {
      "type": "string",
      "format": "text",
      "description": "the control read in the same run"
     },
     "known_failure": {
      "type": "string",
      "format": "text",
      "description": "the way it goes wrong, and the answer"
     },
     "phases": {
      "type": "array",
      "items": {
       "type": "string",
       "enum": [
        "find the market",
        "sculpt the offering",
        "test the fit",
        "build a beachhead",
        "engineer demand",
        "find demand",
        "grow in a market",
        "hedge"
       ]
      },
      "description": "the phases of the search it serves"
     },
     "ways": {
      "type": "array",
      "items": {
       "type": "string",
       "description": "the name of a row of WayOfGoingToMarket",
       "x-register": "WayOfGoingToMarket"
      },
      "description": "the ways of going to market it fits; empty means every way"
     },
     "kinds_of_offering": {
      "type": "array",
      "items": {
       "type": "string",
       "description": "the name of a row of KindOfOffering",
       "x-register": "KindOfOffering"
      },
      "description": "empty means every kind"
     },
     "roles_moved": {
      "type": "array",
      "items": {
       "type": "string",
       "description": "the name of a row of RoleAroundADecision",
       "x-register": "RoleAroundADecision"
      },
      "description": "the roles whose decision it moves"
     },
     "usual_class": {
      "type": "string",
      "enum": [
       "table stakes",
       "alpha",
       "expansion",
       "hedge",
       "depends on the rivals"
      ],
      "description": "the class it usually reads against the rivals' coverage (DOMAIN/10 section 2); read, never assumed, when a play is armed"
     },
     "counter_play": {
      "type": "string",
      "format": "text",
      "description": "the play a rival makes in answer, where the field knows one"
     },
     "tactics": {
      "type": "array",
      "items": {
       "type": "string",
       "description": "the name of a row of Tactic",
       "x-register": "Tactic"
      },
      "description": "the tactics of the catalogue that run it, where they exist"
     }
    },
    "required": [
     "name",
     "family",
     "what",
     "mechanism",
     "changes",
     "on",
     "deciding_number",
     "control",
     "known_failure",
     "phases",
     "ways",
     "kinds_of_offering",
     "roles_moved",
     "usual_class"
    ],
    "additionalProperties": false,
    "x-kind": "row",
    "x-scope": "platform",
    "x-store": "postgres",
    "x-key": "its name",
    "x-places": [],
    "x-from": "26 §2.1; 13 §2.1; DOMAIN/10"
   },
   "ContentItem": {
    "title": "ContentItem",
    "description": "a piece of content, the same by construction",
    "type": "object",
    "properties": {
     "versions": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "hash"
      },
      "description": "each the hash of its content"
     },
     "author_account": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "parent": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "root": {
      "type": "string",
      "format": "id",
      "description": "a reply is a member of its thread and never a thread"
     },
     "community": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "kind": {
      "type": "string",
      "description": "a kind whose parent kind is the content item: a post, a comment, a page, a job posting, a filing, a listing, a message, a review, a video, an episode, a transcript segment, an image, an ad creative, a paper, a patent",
      "x-register": "KindOfEntity"
     },
     "span": {
      "description": "a start, an end and a unit, seconds, characters or a page, within its parent"
     }
    },
    "required": [
     "versions",
     "kind"
    ],
    "additionalProperties": false,
    "x-kind": "entity",
    "x-scope": "shared",
    "x-store": "postgres+lake",
    "x-key": "the source and the source's own id",
    "x-places": [],
    "x-from": "04 §2.2"
   },
   "CallEnvelope": {
    "title": "CallEnvelope",
    "description": "what every call carries beside its input: the scope, the two dates for a read, and for a change the key made from the input",
    "type": "object",
    "properties": {
     "scope": {
      "$ref": "#/components/schemas/Scope",
      "description": ""
     },
     "as_of": {
      "$ref": "#/components/schemas/TwoDates",
      "description": "for a read; both default to now"
     },
     "key": {
      "type": "string",
      "format": "text",
      "description": "for a change: made from the input, so a repeat writes nothing"
     },
     "surface": {
      "type": "string",
      "enum": [
       "the interface",
       "our agent",
       "an outside agent",
       "the api"
      ],
      "description": "the surface it calls from"
     }
    },
    "required": [
     "scope",
     "surface"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "MODELS/the-tool-register §1"
   },
   "NextAction": {
    "title": "NextAction",
    "description": "what can be done next from a card",
    "type": "object",
    "properties": {
     "tool": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "label": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "input": {
      "description": ""
     }
    },
    "required": [
     "tool",
     "label"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "09 §2"
   },
   "FitVerdict": {
    "title": "FitVerdict",
    "description": "the search's verdict for one market: fit, no fit or not yet read, with the readings behind it",
    "type": "object",
    "properties": {
     "vertical": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "segment": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "verdict": {
      "type": "string",
      "enum": [
       "fit",
       "no fit",
       "not yet read"
      ],
      "description": ""
     },
     "evidence": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/EvidenceRef"
      },
      "description": ""
     },
     "readings": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "id"
      },
      "description": "the fit readings it rests on"
     }
    },
    "required": [
     "vertical",
     "verdict",
     "evidence",
     "readings"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "26 §2.1"
   },
   "ParameterInput": {
    "title": "ParameterInput",
    "description": "a parameter by name and where it is set",
    "type": "object",
    "properties": {
     "name": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "scope": {
      "$ref": "#/components/schemas/Scope",
      "description": ""
     }
    },
    "required": [
     "name"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "01 §3"
   },
   "ListMapping": {
    "title": "ListMapping",
    "description": "how the items of a list field become entities of a kind, each keyed by the first of its key paths that holds a value, with one connection of a registered kind between the object's own entity and each item",
    "type": "object",
    "properties": {
     "field": {
      "type": "string",
      "format": "text",
      "description": "the list field of the source object"
     },
     "kind": {
      "type": "string",
      "description": "",
      "x-register": "KindOfEntity"
     },
     "key_namespace": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "key_paths": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "text"
      },
      "description": "the first path that holds a value keys the item"
     },
     "key_prefix": {
      "type": "string",
      "format": "text",
      "description": "put before the key's value, for a platform-and-handle key"
     },
     "name_path": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "connection": {
      "type": "string",
      "description": "",
      "x-register": "KindOfConnection"
     },
     "own_role": {
      "type": "string",
      "format": "text",
      "description": "the object's entity's role"
     },
     "item_role": {
      "type": "string",
      "format": "text",
      "description": "each item's role"
     },
     "texts": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "text"
      },
      "description": "the item fields kept as long texts of the item's entity, each a claim stated by the source under the field's name, as the object's own texts are"
     },
     "readings": {
      "type": "array",
      "items": {
       "type": "string",
       "description": "the name of a row of KindOfMeasure",
       "x-register": "KindOfMeasure"
      },
      "description": "the item fields that are counts, each a reading of the measure on the item's entity at the time the page was read"
     },
     "parent": {
      "$ref": "#/components/schemas/ListParent",
      "description": "the thing each item belongs to, when the item carries its key"
     }
    },
    "required": [
     "field",
     "kind",
     "key_namespace",
     "key_paths"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "07 §2.1"
   },
   "Level": {
    "title": "Level",
    "description": "a service level: a metric, an aggregation over a window, a target, and the beat it is computed on; the ops console reads levels, never raw metrics",
    "type": "object",
    "properties": {
     "name": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "metric": {
      "type": "string",
      "description": "",
      "x-register": "Metric"
     },
     "aggregation": {
      "type": "string",
      "enum": [
       "p50",
       "p95",
       "p99",
       "mean",
       "share",
       "count",
       "max"
      ],
      "description": ""
     },
     "window": {
      "type": "string",
      "format": "duration",
      "description": ""
     },
     "target": {
      "type": "number",
      "format": "share",
      "description": ""
     },
     "beat": {
      "type": "string",
      "format": "duration",
      "description": ""
     },
     "alarm": {
      "type": "string",
      "description": "the alarm raised when the target is missed",
      "x-register": "Alarm"
     }
    },
    "required": [
     "name",
     "metric",
     "aggregation",
     "window",
     "target",
     "beat"
    ],
    "additionalProperties": false,
    "x-kind": "definition",
    "x-scope": "platform",
    "x-store": "postgres",
    "x-key": "its name",
    "x-places": [],
    "x-from": "22 §2.2; 11 §2"
   },
   "GrantsInput": {
    "title": "GrantsInput",
    "description": "the caller, and a place",
    "type": "object",
    "properties": {
     "place": {
      "$ref": "#/components/schemas/Scope",
      "description": ""
     }
    },
    "required": [
     "place"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "03 §3"
   },
   "BrowseView": {
    "title": "BrowseView",
    "description": "one frame of a browsing session's page as the person sees it, with the page's size and address, read by a dashboard that shows the session live and forwards the person's clicks and words as steps; never a raw browser over the network",
    "type": "object",
    "properties": {
     "session": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "address": {
      "type": "string",
      "format": "text",
      "description": "the page's address now"
     },
     "width": {
      "type": "integer",
      "format": "count",
      "description": "the viewport's width in pixels"
     },
     "height": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "frame": {
      "type": "string",
      "format": "text",
      "description": "one JPEG frame of the viewport, base64"
     },
     "taken_at": {
      "type": "string",
      "format": "time",
      "description": ""
     }
    },
    "required": [
     "session",
     "width",
     "height",
     "frame",
     "taken_at"
    ],
    "additionalProperties": false,
    "x-kind": "view",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "the session and the time taken",
    "x-places": [],
    "x-from": "18 §2.19"
   },
   "Forecast": {
    "title": "Forecast",
    "description": "written before the first action: the number expected and the number that proves it wrong, each with an interval",
    "type": "object",
    "properties": {
     "move": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "expected": {
      "$ref": "#/components/schemas/Interval",
      "description": ""
     },
     "proves_wrong": {
      "$ref": "#/components/schemas/Interval",
      "description": ""
     },
     "window": {
      "type": "string",
      "format": "duration",
      "description": ""
     },
     "rule": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "play_version": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "tactic_version": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "like_population": {
      "$ref": "#/components/schemas/PopulationStatement",
      "description": ""
     },
     "written_at": {
      "type": "string",
      "format": "time",
      "description": ""
     }
    },
    "required": [
     "move",
     "expected",
     "proves_wrong",
     "window",
     "rule",
     "play_version",
     "tactic_version",
     "like_population",
     "written_at"
    ],
    "additionalProperties": false,
    "x-kind": "fact",
    "x-scope": "strategy",
    "x-store": "postgres+lake",
    "x-key": "the move",
    "x-places": [],
    "x-from": "13 §2.1"
   },
   "FieldSpec": {
    "title": "FieldSpec",
    "description": "one field of an extraction: its name, how it is found (a CSS selector, an XPath, a regular expression, a JSON path), the attribute read, its type, whether many, and nested fields",
    "type": "object",
    "properties": {
     "name": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "selector_kind": {
      "type": "string",
      "enum": [
       "css",
       "xpath",
       "regex",
       "json path"
      ],
      "description": ""
     },
     "selector": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "attribute": {
      "type": "string",
      "format": "text",
      "description": "text by default; for a pattern, where it runs: the visible text by default, address (the page's own address), nodes (the text nodes joined by a bar) or html (the page's markup, or the item's inside a list, so an identity kept in a data attribute or a link is read the same way on every surface)"
     },
     "type": {
      "type": "string",
      "format": "text",
      "description": "a type of the register"
     },
     "many": {
      "type": "boolean",
      "format": "bool",
      "description": ""
     },
     "fields": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/FieldSpec"
      },
      "description": "nested"
     }
    },
    "required": [
     "name",
     "selector_kind",
     "selector",
     "type",
     "many"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "18 §2.18"
   },
   "RivalMarking": {
    "title": "RivalMarking",
    "description": "a tenant's marking of a rival, with the evidence that made it one; never on the shared plane",
    "type": "object",
    "properties": {
     "brand": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "rival": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "marked_by": {
      "$ref": "#/components/schemas/Caller",
      "description": ""
     },
     "evidence": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/EvidenceRef"
      },
      "description": ""
     },
     "hypothesis": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "standing": {
      "type": "string",
      "enum": [
       "under test",
       "supported",
       "refuted",
       "not a rival"
      ],
      "description": ""
     }
    },
    "required": [
     "brand",
     "rival",
     "marked_by",
     "evidence",
     "hypothesis",
     "standing"
    ],
    "additionalProperties": false,
    "x-kind": "fact",
    "x-scope": "brand",
    "x-store": "postgres",
    "x-key": "the brand and the rival",
    "x-places": [],
    "x-from": "12 §2.1"
   },
   "SimulationFrameInput": {
    "title": "SimulationFrameInput",
    "description": "the simulation whose frame is read",
    "type": "object",
    "properties": {
     "simulation": {
      "type": "string",
      "format": "id",
      "description": ""
     }
    },
    "required": [
     "simulation"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "26 §3"
   },
   "Scope": {
    "title": "Scope",
    "description": "one of the six scopes, each naming the ones above it",
    "type": "object",
    "properties": {
     "level": {
      "type": "string",
      "enum": [
       "shared",
       "platform",
       "tenant",
       "brand",
       "strategy",
       "user"
      ],
      "description": ""
     },
     "tenant": {
      "type": "string",
      "format": "id",
      "description": "absent for shared and platform"
     },
     "brand": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "strategy": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "user": {
      "type": "string",
      "format": "id",
      "description": ""
     }
    },
    "required": [
     "level"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "01 §2.1; 03 §2.1"
   },
   "Attainability": {
    "title": "Attainability",
    "description": "learned from jobs that failed: whether a thing can be reached",
    "type": "object",
    "properties": {
     "connector": {
      "type": "string",
      "description": "",
      "x-register": "Connector"
     },
     "source_object": {
      "type": "string",
      "description": "",
      "x-register": "SourceObject"
     },
     "domain": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "attainable": {
      "type": "string",
      "enum": [
       "yes",
       "no",
       "unknown"
      ],
      "description": ""
     },
     "reason": {
      "type": "string",
      "format": "text",
      "description": ""
     }
    },
    "required": [
     "connector",
     "source_object",
     "domain",
     "attainable"
    ],
    "additionalProperties": false,
    "x-kind": "fact",
    "x-scope": "follows",
    "x-store": "postgres+lake",
    "x-key": "the connector, the source object and the domain",
    "x-places": [],
    "x-from": "07 §2.3"
   },
   "LocalProcedureInput": {
    "title": "LocalProcedureInput",
    "description": "a procedure the app runs itself, with its steps in the app's own journal",
    "type": "object",
    "properties": {
     "procedure": {
      "type": "string",
      "description": "",
      "x-register": "NamedProcedure"
     },
     "inputs": {
      "description": ""
     }
    },
    "required": [
     "procedure"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "MODELS/the-outside-agent-path §7"
   },
   "ClientInfo": {
    "title": "ClientInfo",
    "description": "what a client states about itself in the handshake",
    "type": "object",
    "properties": {
     "name": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "title": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "version": {
      "type": "string",
      "format": "text",
      "description": ""
     }
    },
    "required": [
     "name",
     "title",
     "version"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "09 §2.2"
   },
   "SharedRow": {
    "title": "SharedRow",
    "description": "the one layout of a row of silver, in the refined layer",
    "type": "object",
    "properties": {
     "source": {
      "type": "string",
      "description": "",
      "x-register": "Source"
     },
     "source_object": {
      "type": "string",
      "description": "",
      "x-register": "SourceObject"
     },
     "own_id": {
      "$ref": "#/components/schemas/IdWithSource",
      "description": ""
     },
     "version": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "times": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/TimeWithBasis"
      },
      "description": "each with the basis of that time"
     },
     "thread_root": {
      "$ref": "#/components/schemas/IdWithSource",
      "description": ""
     },
     "parent": {
      "$ref": "#/components/schemas/IdWithSource",
      "description": ""
     },
     "author_account": {
      "$ref": "#/components/schemas/IdWithSource",
      "description": ""
     },
     "community": {
      "$ref": "#/components/schemas/IdWithSource",
      "description": ""
     },
     "text": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "text_hash": {
      "type": "string",
      "format": "hash",
      "description": ""
     },
     "measures": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/Measure"
      },
      "description": ""
     },
     "payload": {
      "description": "only what the source object declares free-form; every declared field is a typed column of the source object's own silver table (SilverTable)"
     },
     "plane": {
      "$ref": "#/components/schemas/Plane",
      "description": ""
     },
     "ask": {
      "type": "string",
      "format": "id",
      "description": "the ask it serves"
     },
     "hops": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/HopStamp"
      },
      "description": "a stamp for each hop"
     }
    },
    "required": [
     "source",
     "source_object",
     "own_id",
     "version",
     "times",
     "measures",
     "payload",
     "plane",
     "ask",
     "hops"
    ],
    "additionalProperties": false,
    "x-kind": "fact",
    "x-scope": "follows",
    "x-store": "lake:refined",
    "x-key": "the source, its own id and the version",
    "x-places": [],
    "x-from": "02 §2.4; 18 §2.5"
   },
   "FitSearch": {
    "title": "FitSearch",
    "description": "the search for product-market fit from either end: an offering looking for its most advantageous markets, or a concept looking for whether a market exists and how to sculpt the offering to unmet demand; each step a hypothesis settled by readings",
    "type": "object",
    "properties": {
     "brand": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "from_end": {
      "type": "string",
      "enum": [
       "an offering",
       "a concept"
      ],
      "description": ""
     },
     "offerings": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "id"
      },
      "description": "empty for a concept"
     },
     "concept": {
      "type": "string",
      "format": "text",
      "description": "for a concept: the business or offering in the person's words"
     },
     "candidate_verticals": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "id"
      },
      "description": "empty asks for every vertical the register holds"
     },
     "inputs_hash": {
      "type": "string",
      "format": "hash",
      "description": ""
     },
     "steps": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/FitStep"
      },
      "description": ""
     },
     "frame": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "why_stopped": {
      "type": "string",
      "format": "text",
      "description": ""
     }
    },
    "required": [
     "brand",
     "from_end",
     "offerings",
     "candidate_verticals",
     "inputs_hash",
     "steps"
    ],
    "additionalProperties": false,
    "x-kind": "work",
    "x-scope": "brand",
    "x-store": "postgres",
    "x-key": "the brand, the end it starts from and the inputs hash",
    "x-places": [
     "proposed",
     "reading the markets",
     "reading the rivals",
     "sculpting",
     "testing",
     "settled",
     "stopped"
    ],
    "x-from": "26 §2.1"
   },
   "VerticalInput": {
    "title": "VerticalInput",
    "description": "the vertical, or a brand whose vertical is meant",
    "type": "object",
    "properties": {
     "vertical": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "brand": {
      "type": "string",
      "format": "id",
      "description": ""
     }
    },
    "required": [],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "12 §3"
   },
   "GameMove": {
    "title": "GameMove",
    "description": "one role's choice in a game of roles: the options it may choose among, its payoff as a driver tree over the frame's drivers, and its best response as the solver reports it",
    "type": "object",
    "properties": {
     "role": {
      "type": "string",
      "description": "",
      "x-register": "RoleAroundADecision"
     },
     "options": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "text"
      },
      "description": "the choices the role may make, in the vertical's words"
     },
     "payoff": {
      "$ref": "#/components/schemas/DriverNode",
      "description": "the role's payoff, a driver tree the one evaluator computes"
     },
     "best_response": {
      "type": "string",
      "format": "text",
      "description": "the option the solver reports as the role's best response, with the interval; absent until solved"
     }
    },
    "required": [
     "role",
     "options",
     "payoff"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "26 §2.1"
   },
   "WaitingItem": {
    "title": "WaitingItem",
    "description": "a unit in a place whose reader is a person",
    "type": "object",
    "properties": {
     "unit": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "place": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "since": {
      "type": "string",
      "format": "time",
      "description": ""
     },
     "tool": {
      "type": "string",
      "format": "text",
      "description": "the tool that resolves it"
     }
    },
    "required": [
     "unit",
     "place",
     "since",
     "tool"
    ],
    "additionalProperties": false,
    "x-kind": "view",
    "x-scope": "none",
    "x-store": "derived",
    "x-key": "the unit",
    "x-places": [],
    "x-from": "11 §2"
   },
   "SignedInIdentity": {
    "title": "SignedInIdentity",
    "description": "an identity a person captured in a browser; the agent never types a password",
    "type": "object",
    "properties": {
     "platform": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "label": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "vault_entry": {
      "type": "string",
      "format": "id",
      "description": "the store entry: made from the account when the session material reads one, so one account on one platform has one entry whatever it is called, and from the label otherwise"
     },
     "account": {
      "type": "string",
      "format": "text",
      "description": "the platform's own id of the account that the session belongs to, read at the hold by the session material's account cookie or pattern; absent when the platform gives no way to read it"
     },
     "names": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "text"
      },
      "description": "the other labels this account was held under, kept as names for it"
     },
     "held_as": {
      "type": "string",
      "format": "id",
      "description": "the store entry that holds this account now, when a later hold of the same account replaced this entry; a run under this entry follows it there"
     },
     "last_probe": {
      "$ref": "#/components/schemas/ControlResult",
      "description": ""
     },
     "state": {
      "$ref": "#/components/schemas/Readiness",
      "description": ""
     }
    },
    "required": [
     "platform",
     "label",
     "vault_entry",
     "state"
    ],
    "additionalProperties": false,
    "x-kind": "definition",
    "x-scope": "tenant",
    "x-store": "postgres",
    "x-key": "its id",
    "x-places": [],
    "x-from": "07 §2.2"
   },
   "RoutingAnswer": {
    "title": "RoutingAnswer",
    "description": "the rule; for a preview, which leads it would have admitted and who would have had them",
    "type": "object",
    "properties": {
     "rule": {
      "$ref": "#/components/schemas/RoutingRule",
      "description": ""
     },
     "would_admit": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/LeadAssignment"
      },
      "description": ""
     }
    },
    "required": [
     "rule"
    ],
    "additionalProperties": false,
    "x-kind": "view",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "08 §3"
   },
   "Certificate": {
    "title": "Certificate",
    "description": "a TLS certificate issued inside the cluster by cert-manager and kept as a secret",
    "type": "object",
    "properties": {
     "hosts": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "text"
      },
      "description": ""
     },
     "issuer": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "not_before": {
      "type": "string",
      "format": "time",
      "description": ""
     },
     "not_after": {
      "type": "string",
      "format": "time",
      "description": ""
     },
     "secret": {
      "$ref": "#/components/schemas/VaultEntry",
      "description": "where the key is kept; never on disk in a file"
     },
     "renew_before": {
      "type": "string",
      "format": "duration",
      "description": "the alarm and the renewal fire this long before expiry"
     }
    },
    "required": [
     "hosts",
     "issuer",
     "not_before",
     "not_after",
     "secret",
     "renew_before"
    ],
    "additionalProperties": false,
    "x-kind": "definition",
    "x-scope": "platform",
    "x-store": "vault",
    "x-key": "the host names it covers",
    "x-places": [],
    "x-from": "21 §2.1"
   },
   "ReceiptsInput": {
    "title": "ReceiptsInput",
    "description": "which receipts to read",
    "type": "object",
    "properties": {
     "kind": {
      "type": "string",
      "enum": [
       "export",
       "erasure"
      ],
      "description": ""
     }
    },
    "required": [
     "kind"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "03 §3"
   },
   "SyncRule": {
    "title": "SyncRule",
    "description": "one way or two ways from the same rows: pull arms cells, push runs as a move, a conflict is decided by the rule",
    "type": "object",
    "properties": {
     "installed_connector": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "offer": {
      "$ref": "#/components/schemas/SyncOffer",
      "description": ""
     },
     "direction": {
      "type": "string",
      "enum": [
       "pull",
       "push",
       "both"
      ],
      "description": ""
     },
     "push_mappings": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/PushMapping"
      },
      "description": "the reverse of the mapping's pull side"
     },
     "pushes": {
      "$ref": "#/components/schemas/Predicate",
      "description": "over entities or leads, previewed first"
     },
     "conflict": {
      "type": "string",
      "enum": [
       "the source wins",
       "the record wins",
       "the newest valid time wins",
       "ask"
      ],
      "description": ""
     },
     "cadence": {
      "type": "string",
      "format": "duration",
      "description": "pull arms cells at it"
     },
     "grant": {
      "type": "string",
      "format": "id",
      "description": "the mode a push runs under"
     },
     "state": {
      "$ref": "#/components/schemas/Readiness",
      "description": ""
     }
    },
    "required": [
     "installed_connector",
     "offer",
     "direction",
     "push_mappings",
     "conflict",
     "grant",
     "state"
    ],
    "additionalProperties": false,
    "x-kind": "definition",
    "x-scope": "follows",
    "x-store": "postgres",
    "x-key": "the installed connector and the offer, versioned",
    "x-places": [],
    "x-from": "18 §2.8"
   },
   "SourceTime": {
    "title": "SourceTime",
    "description": "a time of a source object, with what it means",
    "type": "object",
    "properties": {
     "field": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "basis": {
      "type": "string",
      "enum": [
       "published",
       "scheduled",
       "first seen",
       "captured",
       "imported",
       "retrieved"
      ],
      "description": "published, scheduled and first seen say when the thing happened; captured, imported and retrieved say when a reading of it was taken, and fill a fact's time with the basis read"
     }
    },
    "required": [
     "field",
     "basis"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "07 §2.1"
   },
   "KindOfMove": {
    "title": "KindOfMove",
    "description": "one kind of move a play proposes: what it does, how far its actions reach, how it is read, the class it usually reads, the play families it serves, whether it routes an actor and carries content",
    "type": "object",
    "properties": {
     "name": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "does": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "reach": {
      "type": "string",
      "format": "text",
      "description": "how far its actions reach, in the words of the kinds of action"
     },
     "how_read": {
      "type": "string",
      "format": "text",
      "description": "the measure that reads it"
     },
     "usual_class": {
      "type": "string",
      "description": "",
      "x-register": "PlayClass"
     },
     "families": {
      "type": "array",
      "items": {
       "type": "string",
       "enum": [
        "demand engineering",
        "demand capture",
        "channel and partnership",
        "pricing",
        "positioning and proof",
        "offering design",
        "market entry and beachhead",
        "growth in a market",
        "retention and existing customers",
        "competitive",
        "regulatory and payer",
        "education and enablement",
        "sales motion and operations",
        "hedge and portfolio",
        "ecosystem and platform"
       ]
      },
      "description": "the play families it serves"
     },
     "routes_an_actor": {
      "type": "boolean",
      "format": "bool",
      "description": "true when the move is carried by a person, a voice or a held identity chosen by propensity"
     },
     "carries_content": {
      "type": "boolean",
      "format": "bool",
      "description": "true when the move carries content chosen by propensity"
     },
     "example": {
      "type": "string",
      "format": "text",
      "description": "from the work by hand"
     }
    },
    "required": [
     "name",
     "does",
     "reach",
     "how_read",
     "usual_class",
     "families",
     "routes_an_actor",
     "carries_content",
     "example"
    ],
    "additionalProperties": false,
    "x-kind": "row",
    "x-scope": "platform",
    "x-store": "postgres",
    "x-key": "its name",
    "x-places": [],
    "x-from": "DOMAIN/10 §3; MODELS/the-strategy-system-as-a-formal-model §1"
   },
   "SignalExport": {
    "title": "SignalExport",
    "description": "one export of one signal kind from the collector to the store as Parquet",
    "type": "object",
    "properties": {
     "signal": {
      "type": "string",
      "enum": [
       "traces",
       "logs",
       "metrics"
      ],
      "description": ""
     },
     "interval": {
      "type": "string",
      "format": "duration",
      "description": ""
     },
     "files_written": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "text"
      },
      "description": ""
     },
     "rows": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "bytes": {
      "type": "integer",
      "format": "bytes",
      "description": ""
     }
    },
    "required": [
     "signal",
     "interval",
     "files_written",
     "rows",
     "bytes"
    ],
    "additionalProperties": false,
    "x-kind": "work",
    "x-scope": "platform",
    "x-store": "postgres",
    "x-key": "the signal kind and the interval",
    "x-places": [
     "exporting",
     "exported•",
     "failed•"
    ],
    "x-from": "22 §2.3"
   },
   "HopStamp": {
    "title": "HopStamp",
    "description": "one hop of an acquisition unit through the system: the stage, the host, the time, the job, and the trace and span that hop wrote, so the unit's flow is one trace",
    "type": "object",
    "properties": {
     "stage": {
      "type": "string",
      "enum": [
       "fetched",
       "captured",
       "deposited",
       "refined",
       "closed",
       "handed over",
       "accepted",
       "matched",
       "delivered"
      ],
      "description": ""
     },
     "host": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "at": {
      "type": "string",
      "format": "time",
      "description": ""
     },
     "job": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "trace_id": {
      "type": "string",
      "format": "text",
      "description": "the W3C trace id of the unit's flow"
     },
     "span_id": {
      "type": "string",
      "format": "text",
      "description": "this hop's span"
     }
    },
    "required": [
     "stage",
     "host",
     "at",
     "job",
     "trace_id",
     "span_id"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "18 §2.17"
   },
   "Pole": {
    "title": "Pole",
    "description": "one pole of a language scale",
    "type": "object",
    "properties": {
     "name": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "phrases": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "text"
      },
      "description": ""
     }
    },
    "required": [
     "name",
     "phrases"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "06 §2.1"
   },
   "PartitionHandover": {
    "title": "PartitionHandover",
    "description": "what the engine hands the record",
    "type": "object",
    "properties": {
     "partition": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "job_result": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "asks_served": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "id"
      },
      "description": ""
     },
     "tries": {
      "type": "integer",
      "format": "count",
      "description": ""
     }
    },
    "required": [
     "asks_served",
     "tries"
    ],
    "additionalProperties": false,
    "x-kind": "work",
    "x-scope": "follows",
    "x-store": "postgres",
    "x-key": "the closed partition, or the job's result",
    "x-places": [
     "sent",
     "retrying",
     "acknowledged",
     "declined"
    ],
    "x-from": "07 §2.3; 04 §3"
   },
   "Register": {
    "title": "Register",
    "description": "a register: a named list of rows whose shape is fixed and which grows by a row",
    "type": "object",
    "properties": {
     "name": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "row_type": {
      "type": "string",
      "format": "text",
      "description": "the owning type of a row"
     },
     "closed_or_rows": {
      "type": "string",
      "enum": [
       "closed list in code",
       "rows"
      ],
      "description": "by the rule of §2.1 (D-41)"
     },
     "hash": {
      "type": "string",
      "format": "hash",
      "description": "of its rows, served with every read"
     },
     "version": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "rows": {
      "type": "array",
      "items": {},
      "description": "the rows, each the serialization of the row type"
     }
    },
    "required": [
     "name",
     "row_type",
     "closed_or_rows",
     "hash",
     "version",
     "rows"
    ],
    "additionalProperties": false,
    "x-kind": "row",
    "x-scope": "platform",
    "x-store": "postgres",
    "x-key": "its name",
    "x-places": [],
    "x-from": "02 §2.2"
   },
   "ContactKind": {
    "title": "ContactKind",
    "description": "one way a person or a company is reached or found anywhere on the web, as the extension reads it on every page and the accept keys it: an email, a phone, a handle on a platform, an invite, a site; found by the addresses of links, by a pattern over the visible text, or by a bare handle near a cue word; it becomes an identifier of the namespace the row names",
    "type": "object",
    "properties": {
     "name": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "namespace": {
      "type": "string",
      "format": "text",
      "description": "the identifier namespace a found value becomes"
     },
     "of": {
      "type": "string",
      "enum": [
       "a person",
       "a company",
       "either"
      ],
      "description": ""
     },
     "link_patterns": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "text"
      },
      "description": "address patterns of links that are this kind, a * for any run; mailto:* and tel:* included"
     },
     "text_pattern": {
      "type": "string",
      "format": "text",
      "description": "a regular expression over the visible text, with one capturing group for the value"
     },
     "cue_words": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "text"
      },
      "description": "words near a bare @handle that make it this kind"
     },
     "platform": {
      "type": "string",
      "format": "text",
      "description": "the platform whose own pages make a bare @handle this kind"
     },
     "normalisation": {
      "type": "string",
      "enum": [
       "lowercase",
       "strip the at sign",
       "strip the scheme",
       "digits only",
       "the host only",
       "as is"
      ],
      "description": ""
     },
     "trust_rank": {
      "type": "integer",
      "format": "count",
      "description": "1 decides sameness, 2 supports it, 3 is a hint"
     },
     "catch_all": {
      "type": "boolean",
      "format": "bool",
      "description": "read last, for a link that no other kind claims"
     }
    },
    "required": [
     "name",
     "namespace",
     "of",
     "link_patterns",
     "cue_words",
     "normalisation",
     "trust_rank",
     "catch_all"
    ],
    "additionalProperties": false,
    "x-kind": "row",
    "x-scope": "platform",
    "x-store": "postgres",
    "x-key": "its name",
    "x-places": [],
    "x-from": "24 §2.1"
   },
   "NotificationChannelInput": {
    "title": "NotificationChannelInput",
    "description": "a channel to write: its kind, its address and the notices it carries",
    "type": "object",
    "properties": {
     "kind": {
      "type": "string",
      "enum": [
       "in the app",
       "email",
       "Slack",
       "webhook",
       "the extension"
      ],
      "description": ""
     },
     "address": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "notices": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "text"
      },
      "description": ""
     }
    },
    "required": [
     "kind",
     "address",
     "notices"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "08 §3"
   },
   "StatedNumber": {
    "title": "StatedNumber",
    "description": "one number a buyer stated about itself, within its driver's bounds, under the consent ground the surface stated; never edited, a later statement is a later fact",
    "type": "object",
    "properties": {
     "subject": {
      "$ref": "#/components/schemas/UnitRef",
      "description": "an entity, a lead, or an anonymous session on a public page"
     },
     "driver": {
      "type": "string",
      "description": "",
      "x-register": "KindOfMeasure"
     },
     "value": {
      "description": ""
     },
     "dimension": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "stated_through": {
      "type": "string",
      "enum": [
       "a page",
       "a call",
       "a form",
       "a capture"
      ],
      "description": ""
     },
     "consent_ground": {
      "type": "string",
      "format": "text",
      "description": "the ground of specification 3 under which it is kept"
     },
     "retention_class": {
      "type": "string",
      "description": "for a stranger's number: the class whose clock erases it",
      "x-register": "RetentionClass"
     }
    },
    "required": [
     "subject",
     "driver",
     "value",
     "dimension",
     "stated_through",
     "consent_ground"
    ],
    "additionalProperties": false,
    "x-kind": "fact",
    "x-scope": "brand",
    "x-store": "postgres+lake",
    "x-key": "its subject, its driver and its time",
    "x-places": [],
    "x-from": "25 §2.1"
   },
   "IntelligenceAnswer": {
    "title": "IntelligenceAnswer",
    "description": "a kind of intelligence about a subject: the facts with their basis, the coverage and the date",
    "type": "object",
    "properties": {
     "subject": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "kind": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "facts": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/Claim"
      },
      "description": ""
     },
     "coverage": {
      "$ref": "#/components/schemas/Coverage",
      "description": ""
     },
     "as_of": {
      "$ref": "#/components/schemas/TwoDates",
      "description": ""
     }
    },
    "required": [
     "subject",
     "kind",
     "facts",
     "coverage",
     "as_of"
    ],
    "additionalProperties": false,
    "x-kind": "view",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "14 §3"
   },
   "TaskQuestion": {
    "title": "TaskQuestion",
    "description": "a question a run asks the caller; answering it is the one approval",
    "type": "object",
    "properties": {
     "id": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "what": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "options": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "text"
      },
      "description": ""
     },
     "answered": {
      "description": ""
     },
     "by": {
      "$ref": "#/components/schemas/Caller",
      "description": ""
     }
    },
    "required": [
     "id",
     "what"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "09 §2; 10 §2"
   },
   "ChippedNumber": {
    "title": "ChippedNumber",
    "description": "a number in a document, with the unit that supplied it and its instrument",
    "type": "object",
    "properties": {
     "label": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "value": {
      "description": ""
     },
     "unit": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "instrument": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "basis": {
      "$ref": "#/components/schemas/Basis",
      "description": ""
     }
    },
    "required": [
     "label",
     "value",
     "unit",
     "instrument",
     "basis"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "17 §2.1"
   },
   "PageNetworkEvent": {
    "title": "PageNetworkEvent",
    "description": "one call the page made or one frame it received while a capture rule was on, as the page hook in the main world saw it: its kind, its method and address, the status, and the bodies sent and received, cut to a bound; never a header, a cookie or a credential",
    "type": "object",
    "properties": {
     "at": {
      "type": "string",
      "format": "time",
      "description": ""
     },
     "kind": {
      "type": "string",
      "enum": [
       "fetch",
       "xhr",
       "websocket in",
       "websocket out",
       "beacon",
       "form post"
      ],
      "description": ""
     },
     "method": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "url": {
      "type": "string",
      "format": "text",
      "description": "the address with session keys removed"
     },
     "status": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "request_body": {
      "type": "string",
      "format": "text",
      "description": "the body sent, with secret fields removed"
     },
     "response_body": {
      "type": "string",
      "format": "text",
      "description": "the body received"
     },
     "bytes": {
      "type": "integer",
      "format": "count",
      "description": "the bytes seen, before any cut"
     },
     "truncated": {
      "type": "boolean",
      "format": "bool",
      "description": ""
     },
     "duration_ms": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "step": {
      "type": "integer",
      "format": "count",
      "description": "the index of the step that caused it, when one did"
     }
    },
    "required": [
     "at",
     "kind",
     "url",
     "bytes",
     "truncated"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "24 §2.1; 24 §2.2"
   },
   "BrandDecision": {
    "title": "BrandDecision",
    "description": "a tenant's decision on one value of the brand's design system: accepted, declined, or changed to the tenant's own; the brand's memory, read by the merge and by every builder",
    "type": "object",
    "properties": {
     "brand": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "path": {
      "type": "string",
      "format": "text",
      "description": "the value's path in the system"
     },
     "proposed": {
      "description": "the value proposed at the time"
     },
     "decision": {
      "type": "string",
      "enum": [
       "accepted",
       "declined",
       "changed"
      ],
      "description": ""
     },
     "value": {
      "description": "the tenant's own value when changed"
     },
     "why": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "version": {
      "type": "integer",
      "format": "count",
      "description": "the version of the system the decision was made on"
     }
    },
    "required": [
     "brand",
     "path",
     "decision",
     "version"
    ],
    "additionalProperties": false,
    "x-kind": "fact",
    "x-scope": "brand",
    "x-store": "postgres",
    "x-key": "the brand, the path and the time",
    "x-places": [],
    "x-from": "DESIGN/the-brand-graph-from-a-domain §5; WA-377"
   },
   "AttributeCount": {
    "title": "AttributeCount",
    "description": "one attribute a population's units carry: its path, its plain name, how many units carry it and the value type that was read",
    "type": "object",
    "properties": {
     "path": {
      "type": "string",
      "format": "text",
      "description": "the attribute path a condition names"
     },
     "plain_words": {
      "type": "string",
      "format": "text",
      "description": "the name a composer shows"
     },
     "units": {
      "type": "integer",
      "format": "count",
      "description": "the units that carry a value"
     },
     "value_type": {
      "type": "string",
      "format": "text",
      "description": "text, number, time, yes or no, list, or mixed"
     },
     "examples": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "text"
      },
      "description": "up to three values, the most common first"
     }
    },
    "required": [
     "path",
     "plain_words",
     "units",
     "value_type",
     "examples"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "06 §2.1"
   },
   "PlanReportRow": {
    "title": "PlanReportRow",
    "description": "one play of the strategy against what was done: completed, partial, missing, or an item done off any plan",
    "type": "object",
    "properties": {
     "play": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "move": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "state": {
      "type": "string",
      "enum": [
       "completed",
       "partial",
       "missing",
       "off plan"
      ],
      "description": ""
     },
     "items": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "id"
      },
      "description": ""
     },
     "why": {
      "type": "string",
      "format": "text",
      "description": ""
     }
    },
    "required": [
     "state",
     "items",
     "why"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "13 §3"
   },
   "Client": {
    "title": "Client",
    "description": "an application that asks for tokens: our web interface, our desktop interface, an outside agent, the acquisition system's host, the capture extension",
    "type": "object",
    "properties": {
     "name": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "kind": {
      "type": "string",
      "enum": [
       "our web interface",
       "our desktop interface",
       "an outside agent",
       "the crawler",
       "a customer's program"
      ],
      "description": ""
     },
     "access_scopes_allowed": {
      "type": "array",
      "items": {
       "type": "string",
       "description": "the name of a row of AccessScope",
       "x-register": "AccessScope"
      },
      "description": ""
     },
     "redirects": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "address"
      },
      "description": "where it may send a person back"
     },
     "published_description": {
      "type": "string",
      "format": "address",
      "description": "for an outside agent made on request"
     },
     "key_binding": {
      "type": "boolean",
      "format": "bool",
      "description": "whether its tokens are tied to its key"
     },
     "made_on_request": {
      "type": "boolean",
      "format": "bool",
      "description": ""
     },
     "state": {
      "$ref": "#/components/schemas/Readiness",
      "description": ""
     }
    },
    "required": [
     "name",
     "kind",
     "access_scopes_allowed",
     "redirects",
     "key_binding",
     "made_on_request",
     "state"
    ],
    "additionalProperties": false,
    "x-kind": "row",
    "x-scope": "platform",
    "x-store": "postgres",
    "x-key": "its id or its published address",
    "x-places": [],
    "x-from": "03 §2.2; D-53"
   },
   "BuildFacetInput": {
    "title": "BuildFacetInput",
    "description": "a facet to build from a seed",
    "type": "object",
    "properties": {
     "facet_kind": {
      "type": "string",
      "description": "",
      "x-register": "FacetKind"
     },
     "seed": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "again": {
      "type": "boolean",
      "format": "bool",
      "description": "when true, the same seed is built again as new work, for a presence that changed since the last build; without it the same seed under the same measure is the same work and returns the run already made"
     },
     "asked_again_at": {
      "type": "string",
      "format": "time",
      "description": "set by the tool from the ask, so the run's key differs; never typed by hand"
     },
     "scope": {
      "$ref": "#/components/schemas/Scope",
      "description": ""
     }
    },
    "required": [
     "facet_kind",
     "seed",
     "scope"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "06 §3"
   },
   "Reason": {
    "title": "Reason",
    "description": "one link of a chain of reasons",
    "type": "object",
    "properties": {
     "unit": {
      "$ref": "#/components/schemas/UnitRef",
      "description": ""
     },
     "state": {
      "$ref": "#/components/schemas/Readiness",
      "description": ""
     },
     "because": {
      "$ref": "#/components/schemas/UnitRef",
      "description": ""
     }
    },
    "required": [
     "unit",
     "state"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "04 §3"
   },
   "Vector": {
    "title": "Vector",
    "description": "a vector from a model that carries meaning, named by its model; never a hash",
    "type": "object",
    "properties": {
     "text_hash": {
      "type": "string",
      "format": "hash",
      "description": ""
     },
     "model": {
      "type": "string",
      "description": "a model whose row is ready",
      "x-register": "Model"
     },
     "tier": {
      "type": "string",
      "enum": [
       "narrow",
       "wide"
      ],
      "description": ""
     },
     "width": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "numbers": {
      "type": "array",
      "items": {
       "type": "number",
       "format": "number"
      },
      "description": "the vector's numbers at the model's width; the gold column keeps them at one byte a number for the narrow tier and at full precision for the wide, and the wire always carries the numbers"
     },
     "centroid": {
      "type": "integer",
      "format": "count",
      "description": "the centroid of the coarse index (SR-0440)"
     },
     "sketch": {
      "type": "array",
      "items": {
       "type": "integer",
       "format": "count"
      },
      "description": "the one-bit sketch for the first pass, as 64-bit words; its width is the parameter of specification 4 section 2.5"
     },
     "media_hash": {
      "type": "string",
      "format": "hash",
      "description": "for a vector of an image, a frame or a sound, in place of the text's hash"
     },
     "unit": {
      "type": "string",
      "format": "id",
      "description": "the unit whose text was given meaning, when the text is one unit's: an entity, a content item, an observation"
     }
    },
    "required": [
     "text_hash",
     "model",
     "tier",
     "width",
     "numbers"
    ],
    "additionalProperties": false,
    "x-kind": "fact",
    "x-scope": "follows",
    "x-store": "postgres+lake",
    "x-key": "the hash of the text, the model and the tier",
    "x-places": [],
    "x-from": "04 §2.2, §2.4; CLAUDE.md 00e"
   },
   "WatchSiteInput": {
    "title": "WatchSiteInput",
    "description": "a site watch to write, preview or arm",
    "type": "object",
    "properties": {
     "watch": {
      "$ref": "#/components/schemas/SiteWatch",
      "description": ""
     },
     "flow": {
      "type": "string",
      "enum": [
       "write",
       "preview",
       "arm",
       "disarm"
      ],
      "description": ""
     }
    },
    "required": [
     "watch",
     "flow"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "18 §3"
   },
   "PredicateNode": {
    "title": "PredicateNode",
    "description": "one node of a predicate: a group, a condition or an operator node",
    "type": "object",
    "properties": {
     "form": {
      "type": "string",
      "enum": [
       "group",
       "condition",
       "operator node"
      ],
      "description": ""
     },
     "op": {
      "type": "string",
      "enum": [
       "all",
       "any",
       "none"
      ],
      "description": "for a group"
     },
     "children": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/PredicateNode"
      },
      "description": "for a group"
     },
     "subject": {
      "type": "string",
      "format": "text",
      "description": "for a condition: the field or the subject"
     },
     "relationship": {
      "type": "string",
      "description": "",
      "x-register": "Operator"
     },
     "value": {
      "description": ""
     },
     "threshold": {
      "type": "number",
      "format": "share",
      "description": "for a leaf that compares by nearness, a match by name or a semantic leaf by meaning: its floor, in place of a breadth"
     },
     "breadth": {
      "type": "string",
      "enum": [
       "exact",
       "similar",
       "related",
       "broad"
      ],
      "description": "for a leaf that compares by nearness: how near, in place of a floor; resolved at compile to the leaf's channel bar of the bars of nearness (06 §2.1)"
     },
     "concept": {
      "type": "string",
      "format": "id",
      "description": "a semantic leaf names a concept, never a phrase"
     },
     "walks": {
      "type": "string",
      "description": "for an operator node: the connection it walks, by role",
      "x-register": "KindOfConnection"
     },
     "role": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "inner": {
      "$ref": "#/components/schemas/PredicateNode",
      "description": ""
     }
    },
    "required": [
     "form"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "06 §2.1"
   },
   "CoverageByCellInput": {
    "title": "CoverageByCellInput",
    "description": "a source, or a scope with a window",
    "type": "object",
    "properties": {
     "source": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "scope": {
      "$ref": "#/components/schemas/Predicate",
      "description": ""
     },
     "window": {
      "$ref": "#/components/schemas/Window",
      "description": ""
     }
    },
    "required": [],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "18 §3"
   },
   "RedactionRule": {
    "title": "RedactionRule",
    "description": "what never leaves the browser: a field, a header, an address key or a pattern in the body, applied before hashing",
    "type": "object",
    "properties": {
     "name": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "applies_to": {
      "type": "string",
      "enum": [
       "field",
       "header",
       "address key",
       "body pattern"
      ],
      "description": ""
     },
     "pattern": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "person": {
      "type": "string",
      "format": "id",
      "description": "set when the rule is the person's own"
     },
     "source": {
      "type": "string",
      "enum": [
       "the platform",
       "the connector",
       "the person"
      ],
      "description": ""
     }
    },
    "required": [
     "name",
     "applies_to",
     "pattern",
     "source"
    ],
    "additionalProperties": false,
    "x-kind": "row",
    "x-scope": "platform",
    "x-store": "postgres",
    "x-key": "its name, and the person when it is the person's own",
    "x-places": [],
    "x-from": "24 §2.2"
   },
   "MonitorStrengthInput": {
    "title": "MonitorStrengthInput",
    "description": "the monitor and a window",
    "type": "object",
    "properties": {
     "monitor": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "window": {
      "$ref": "#/components/schemas/Window",
      "description": ""
     }
    },
    "required": [
     "monitor",
     "window"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "06 §3"
   },
   "Mention": {
    "title": "Mention",
    "description": "a thing named in an observation, on its way to an entity",
    "type": "object",
    "properties": {
     "observation": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "where": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "kind": {
      "type": "string",
      "description": "the kind the map gave it",
      "x-register": "KindOfEntity"
     },
     "identifiers": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/Identifier"
      },
      "description": "once keyed"
     },
     "set_aside_reason": {
      "type": "string",
      "format": "text",
      "description": ""
     }
    },
    "required": [
     "observation",
     "where",
     "kind",
     "identifiers"
    ],
    "additionalProperties": false,
    "x-kind": "work",
    "x-scope": "follows",
    "x-store": "postgres",
    "x-key": "the observation and where in it the thing is named",
    "x-places": [
     "unresolved",
     "resolved",
     "held for review",
     "set aside"
    ],
    "x-from": "05 §2.1"
   },
   "Alarm": {
    "title": "Alarm",
    "description": "the law or the level it reads, the threshold, who is told, the runbook",
    "type": "object",
    "properties": {
     "name": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "reads": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "threshold": {
      "description": ""
     },
     "tells": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "id"
      },
      "description": ""
     },
     "runbook": {
      "type": "string",
      "format": "text",
      "description": ""
     }
    },
    "required": [
     "name",
     "reads",
     "threshold",
     "tells",
     "runbook"
    ],
    "additionalProperties": false,
    "x-kind": "row",
    "x-scope": "platform",
    "x-store": "postgres",
    "x-key": "its name",
    "x-places": [],
    "x-from": "19 §2.1"
   },
   "SavedViewAnswer": {
    "title": "SavedViewAnswer",
    "description": "the definition, or its rows with when they were built",
    "type": "object",
    "properties": {
     "view": {
      "$ref": "#/components/schemas/SavedView",
      "description": ""
     },
     "rows": {
      "type": "array",
      "items": {},
      "description": "each the serialisation of the columns' types"
     },
     "built_at": {
      "type": "string",
      "format": "time",
      "description": ""
     }
    },
    "required": [
     "view"
    ],
    "additionalProperties": false,
    "x-kind": "view",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "06 §3"
   },
   "Signal": {
    "title": "Signal",
    "description": "a match with its kind, what it is about, its evidence and its rank for this brand",
    "type": "object",
    "properties": {
     "catch": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "kind": {
      "type": "string",
      "description": "",
      "x-register": "KindOfSignal"
     },
     "about": {
      "$ref": "#/components/schemas/SignalSubject",
      "description": ""
     },
     "evidence": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/EvidenceRef"
      },
      "description": "walkable to the sentence; a signal with no evidence cannot be written"
     },
     "rank": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "confidence": {
      "type": "number",
      "format": "share",
      "description": ""
     },
     "independent_sources": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "brand": {
      "type": "string",
      "format": "id",
      "description": ""
     }
    },
    "required": [
     "catch",
     "kind",
     "about",
     "evidence",
     "confidence",
     "independent_sources"
    ],
    "additionalProperties": false,
    "x-kind": "fact",
    "x-scope": "follows",
    "x-store": "postgres+lake",
    "x-key": "the catch",
    "x-places": [],
    "x-from": "06 §2.2; requirement 11"
   },
   "NotificationRuleInput": {
    "title": "NotificationRuleInput",
    "description": "a rule to write: the notices, the channel, quiet hours and the digest",
    "type": "object",
    "properties": {
     "name": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "notices": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "text"
      },
      "description": ""
     },
     "channel": {
      "type": "string",
      "description": "",
      "x-register": "NotificationChannel"
     },
     "quiet_hours": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "digest": {
      "type": "string",
      "enum": [
       "none",
       "hourly",
       "daily"
      ],
      "description": ""
     }
    },
    "required": [
     "name",
     "notices",
     "channel",
     "digest"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "08 §3"
   },
   "UndoMergeInput": {
    "title": "UndoMergeInput",
    "description": "a merge to undo, or a decision to undo",
    "type": "object",
    "properties": {
     "merge": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "decision": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "reason": {
      "type": "string",
      "format": "text",
      "description": ""
     }
    },
    "required": [
     "reason"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "05 §3"
   },
   "BrowsingSession": {
    "title": "BrowsingSession",
    "description": "a browser of the pool the agent or a person drives step by step through the controlled API, with a live view; never a raw browser over the network",
    "type": "object",
    "properties": {
     "session": {
      "type": "string",
      "format": "id",
      "description": "the session's own id, which every later step, view and take-over names; absent on a row written before it was carried"
     },
     "caller": {
      "$ref": "#/components/schemas/Caller",
      "description": "our agent under its own role and scope, or a person"
     },
     "strategy": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "identity": {
      "type": "string",
      "format": "id",
      "description": "a held identity, lent by a grant"
     },
     "proxy_policy": {
      "$ref": "#/components/schemas/ProxyPolicy",
      "description": ""
     },
     "filter": {
      "$ref": "#/components/schemas/ResourceFilter",
      "description": ""
     },
     "mode": {
      "type": "string",
      "enum": [
       "read only",
       "propose",
       "act",
       "full autonomy"
      ],
      "description": "the grant's mode"
     },
     "steps": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/BrowsingStep"
      },
      "description": ""
     },
     "live_view": {
      "type": "boolean",
      "format": "bool",
      "description": "the screencast on the app server's wire"
     },
     "taken_over_by": {
      "type": "string",
      "format": "id",
      "description": "a person who took the wheel"
     }
    },
    "required": [
     "caller",
     "filter",
     "mode",
     "steps",
     "live_view"
    ],
    "additionalProperties": false,
    "x-kind": "work",
    "x-scope": "follows",
    "x-store": "postgres",
    "x-key": "the caller, the strategy and the time opened",
    "x-places": [
     "opened",
     "driving",
     "waiting for a person",
     "closed",
     "failed"
    ],
    "x-from": "18 §2.19"
   },
   "NetworkProxyPool": {
    "title": "NetworkProxyPool",
    "description": "a pool of exits, ready or not ready with the reason; over its ceiling, its jobs are held",
    "type": "object",
    "properties": {
     "provider": {
      "type": "string",
      "description": "",
      "x-register": "NetworkProxyProvider"
     },
     "kind": {
      "type": "string",
      "enum": [
       "none",
       "datacenter",
       "residential",
       "ISP",
       "mobile"
      ],
      "description": ""
     },
     "country": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "sticky": {
      "type": "boolean",
      "format": "bool",
      "description": ""
     },
     "ceiling": {
      "$ref": "#/components/schemas/Cost",
      "description": "of the receive family"
     },
     "spend": {
      "$ref": "#/components/schemas/Cost",
      "description": "read at the exit"
     },
     "state": {
      "$ref": "#/components/schemas/Readiness",
      "description": ""
     }
    },
    "required": [
     "provider",
     "kind",
     "sticky",
     "ceiling",
     "spend",
     "state"
    ],
    "additionalProperties": false,
    "x-kind": "definition",
    "x-scope": "platform",
    "x-store": "postgres",
    "x-key": "the provider, the kind and the country",
    "x-places": [],
    "x-from": "18 §2.4"
   },
   "BenchmarksInput": {
    "title": "BenchmarksInput",
    "description": "the driver, and the buyer profile or population the benchmarks must apply to",
    "type": "object",
    "properties": {
     "driver": {
      "type": "string",
      "description": "",
      "x-register": "KindOfMeasure"
     },
     "kind_of_buyer": {
      "type": "string",
      "format": "text",
      "description": ""
     }
    },
    "required": [
     "driver"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "one ask for the benchmarks",
    "x-places": [],
    "x-from": "25 §3"
   },
   "CoverageReading": {
    "title": "CoverageReading",
    "description": "one reading of coverage",
    "type": "object",
    "properties": {
     "position": {
      "type": "string",
      "enum": [
       "measured",
       "never measured",
       "withheld"
      ],
      "description": ""
     },
     "way": {
      "type": "string",
      "description": "",
      "x-register": "AccessMethod"
     },
     "depth": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "read_at": {
      "type": "string",
      "format": "time",
      "description": ""
     },
     "reason": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "stand_in_lost": {
      "type": "string",
      "format": "text",
      "description": ""
     }
    },
    "required": [
     "position"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "07 §2.3"
   },
   "Connection": {
    "title": "Connection",
    "description": "a connection with any number of members, one row for the connection and one for each member",
    "type": "object",
    "properties": {
     "kind": {
      "type": "string",
      "description": "",
      "x-register": "KindOfConnection"
     },
     "members": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/ConnectionMember"
      },
      "description": "each with its role; a member's kind must be one its role allows"
     },
     "adds": {
      "description": "what the kind adds: a share, a code, a weight, a period"
     },
     "period": {
      "type": "string",
      "format": "text",
      "description": "for co-presence: the month"
     },
     "weight": {
      "type": "integer",
      "format": "count",
      "description": "whole millionths, so a collapse over months is the same in any order of rows (SR-0437)"
     },
     "recipe_version": {
      "type": "string",
      "format": "text",
      "description": ""
     }
    },
    "required": [
     "kind",
     "members"
    ],
    "additionalProperties": false,
    "x-kind": "fact",
    "x-scope": "follows",
    "x-store": "lake:ready",
    "x-key": "its kind, its members with their roles, the source and the time",
    "x-places": [],
    "x-from": "04 §2.2; DOMAIN/03"
   },
   "SignalsAnswer": {
    "title": "SignalsAnswer",
    "description": "the facts, with the coverage and the count not evaluable for the same window",
    "type": "object",
    "properties": {
     "signals": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/Signal"
      },
      "description": ""
     },
     "catches": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/Catch"
      },
      "description": ""
     },
     "coverage": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/ChannelCoverage"
      },
      "description": ""
     },
     "not_evaluable": {
      "type": "integer",
      "format": "count",
      "description": ""
     }
    },
    "required": [
     "signals",
     "coverage",
     "not_evaluable"
    ],
    "additionalProperties": false,
    "x-kind": "view",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "06 §3"
   },
   "HoldIdentityInput": {
    "title": "HoldIdentityInput",
    "description": "a signed-in identity to hold for the tenant: the platform's own browser opens on the platform, the person signs in, and the session state is checkpointed once the probe reads signed in",
    "type": "object",
    "properties": {
     "platform": {
      "type": "string",
      "format": "text",
      "description": "the platform's slug, a row of the platform domains"
     },
     "label": {
      "type": "string",
      "format": "text",
      "description": "the person's name for this identity, unique within the tenant and platform"
     },
     "wait_seconds": {
      "type": "integer",
      "format": "count",
      "description": "how long the platform waits for the sign-in; the parameter row's value when absent"
     },
     "session": {
      "type": "string",
      "format": "id",
      "description": "an open browsing session with a live view in which the person signed in; the platform reads the session's cookies as the session given, so nothing leaves any browser; the web version's way that lasts"
     },
     "cookies": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/HeldCookie"
      },
      "description": "the session's cookies given as data, read from the person's own browser by the platform's own extension or pasted by the person, for the web version where no window of the platform can open beside the person; when given, no window opens, and the platform keeps the cookies of the platform's domains and probes them"
     }
    },
    "required": [
     "platform",
     "label"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "18 §2.3"
   },
   "LookupAnswer": {
    "title": "LookupAnswer",
    "description": "the entity, or the possible matches, or nothing",
    "type": "object",
    "properties": {
     "entity": {
      "$ref": "#/components/schemas/Entity",
      "description": ""
     },
     "possible": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/PossibleMatch"
      },
      "description": ""
     }
    },
    "required": [],
    "additionalProperties": false,
    "x-kind": "view",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "05 §3"
   },
   "MembershipInput": {
    "title": "MembershipInput",
    "description": "invite, suspend or remove a user, as a member or a guest",
    "type": "object",
    "properties": {
     "user": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "mail": {
      "type": "string",
      "format": "address",
      "description": "to invite"
     },
     "tenant": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "do": {
      "type": "string",
      "enum": [
       "invite",
       "suspend",
       "remove"
      ],
      "description": ""
     },
     "kind": {
      "type": "string",
      "enum": [
       "member",
       "guest"
      ],
      "description": ""
     }
    },
    "required": [
     "tenant",
     "do"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "03 §3"
   },
   "Cost": {
    "title": "Cost",
    "description": "a cost by kind",
    "type": "object",
    "properties": {
     "money_outside": {
      "type": "number",
      "format": "money",
      "description": ""
     },
     "model_calls": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "model_tokens": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "machine_time": {
      "type": "string",
      "format": "duration",
      "description": ""
     },
     "people_hours": {
      "type": "string",
      "format": "duration",
      "description": ""
     }
    },
    "required": [],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "01 §2.1; 13 §2.1"
   },
   "ForecastsAnswer": {
    "title": "ForecastsAnswer",
    "description": "every forecast with its effect, how well the band held, and the proper score and the calibration by play, tactic, kind of buyer, framing, actor and content, so calibration is a read of this row and never a report of its own",
    "type": "object",
    "properties": {
     "pairs": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/ForecastAndEffect"
      },
      "description": ""
     },
     "band_held": {
      "type": "number",
      "format": "share",
      "description": "the share of the effects that fell inside their forecast's band, over the pairs with an effect"
     },
     "scored": {
      "type": "integer",
      "format": "count",
      "description": "the pairs with an effect and a score"
     },
     "by_segment": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/ScoreBySegment"
      },
      "description": "the scores and the calibration by segment; a segment under the calibration floor is not ready with the reason"
     }
    },
    "required": [
     "pairs",
     "band_held",
     "scored",
     "by_segment"
    ],
    "additionalProperties": false,
    "x-kind": "view",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "13 §3; MODELS/the-strategy-system-as-a-formal-model §6.1"
   },
   "WhatChanged": {
    "title": "WhatChanged",
    "description": "every number that moved, with its unit, and every figure replaced",
    "type": "object",
    "properties": {
     "first": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "second": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "moved": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/NumberChange"
      },
      "description": ""
     },
     "figures_replaced": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "text"
      },
      "description": ""
     }
    },
    "required": [
     "first",
     "second",
     "moved",
     "figures_replaced"
    ],
    "additionalProperties": false,
    "x-kind": "view",
    "x-scope": "none",
    "x-store": "derived",
    "x-key": "two builds of one document",
    "x-places": [],
    "x-from": "17 §2.1"
   },
   "WebhookInput": {
    "title": "WebhookInput",
    "description": "an address to be told at, and the kinds",
    "type": "object",
    "properties": {
     "telling": {
      "$ref": "#/components/schemas/Telling",
      "description": ""
     }
    },
    "required": [
     "telling"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "10 §3"
   },
   "TimeWithBasis": {
    "title": "TimeWithBasis",
    "description": "a time with what it means",
    "type": "object",
    "properties": {
     "at": {
      "type": "string",
      "format": "time",
      "description": ""
     },
     "basis": {
      "type": "string",
      "enum": [
       "published",
       "scheduled",
       "first seen",
       "read",
       "computed"
      ],
      "description": ""
     },
     "precision": {
      "type": "string",
      "enum": [
       "instant",
       "day",
       "month",
       "year"
      ],
      "description": ""
     }
    },
    "required": [
     "at",
     "basis",
     "precision"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "02 §2.4; 04 §2.1"
   },
   "Leak": {
    "title": "Leak",
    "description": "a resting place with no reader",
    "type": "object",
    "properties": {
     "name": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "what": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "reader": {
      "type": "string",
      "format": "text",
      "description": ""
     }
    },
    "required": [
     "name",
     "what"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "MODELS/the-chain"
   },
   "BrowseStepInput": {
    "title": "BrowseStepInput",
    "description": "one step in an open browsing session",
    "type": "object",
    "properties": {
     "session": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "step": {
      "$ref": "#/components/schemas/BrowsingStep",
      "description": ""
     }
    },
    "required": [
     "session",
     "step"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "18 §3"
   },
   "LayerOfLikeness": {
    "title": "LayerOfLikeness",
    "description": "the share each of three layers contributed, held apart and never blended",
    "type": "object",
    "properties": {
     "relational": {
      "type": "number",
      "format": "share",
      "description": ""
     },
     "associative": {
      "type": "number",
      "format": "share",
      "description": ""
     },
     "semantic": {
      "type": "number",
      "format": "share",
      "description": ""
     },
     "model": {
      "type": "string",
      "description": "for the semantic share",
      "x-register": "Model"
     }
    },
    "required": [
     "relational",
     "associative",
     "semantic"
    ],
    "additionalProperties": false,
    "x-kind": "property",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "14 §2.1"
   },
   "ClusterCard": {
    "title": "ClusterCard",
    "description": "a group of subjects with the share of each layer first, its lists, its trend, the proxies that placed it, and how it was cut",
    "type": "object",
    "properties": {
     "group": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "layers": {
      "$ref": "#/components/schemas/LayerOfLikeness",
      "description": ""
     },
     "top_communities": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "id"
      },
      "description": ""
     },
     "top_words": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "text"
      },
      "description": ""
     },
     "top_domains": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "text"
      },
      "description": ""
     },
     "size": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "trend_by_month": {
      "type": "object",
      "additionalProperties": {
       "type": "integer",
       "format": "count"
      },
      "description": ""
     },
     "proxies": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "id"
      },
      "description": ""
     },
     "resolution": {
      "type": "number",
      "format": "share",
      "description": ""
     },
     "seed": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "sample": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "id"
      },
      "description": ""
     }
    },
    "required": [
     "group",
     "layers",
     "top_communities",
     "top_words",
     "top_domains",
     "size",
     "trend_by_month",
     "proxies",
     "resolution",
     "sample"
    ],
    "additionalProperties": false,
    "x-kind": "view",
    "x-scope": "follows",
    "x-store": "derived",
    "x-key": "the group and the cut",
    "x-places": [],
    "x-from": "MODELS/the-hypergraph §5; SR-0433"
   },
   "Stock": {
    "title": "Stock",
    "description": "for one kind, one place and one scope: the level, the rates, the age of the oldest with its reason, the count past the longest wait, and who reads it",
    "type": "object",
    "properties": {
     "kind": {
      "type": "string",
      "description": "",
      "x-register": "Kind"
     },
     "place": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "scope": {
      "$ref": "#/components/schemas/Scope",
      "description": ""
     },
     "level": {
      "type": "integer",
      "format": "count",
      "description": "no level when never read"
     },
     "rate_in": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "rate_out": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "oldest": {
      "$ref": "#/components/schemas/Oldest",
      "description": ""
     },
     "past_longest_wait": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "reader": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "read_at": {
      "type": "string",
      "format": "time",
      "description": ""
     }
    },
    "required": [
     "kind",
     "place",
     "scope",
     "reader"
    ],
    "additionalProperties": false,
    "x-kind": "view",
    "x-scope": "platform",
    "x-store": "derived",
    "x-key": "the kind, the place and the scope",
    "x-places": [],
    "x-from": "11 §2"
   },
   "StatusInput": {
    "title": "StatusInput",
    "description": "watch, answer or stop a task",
    "type": "object",
    "properties": {
     "task": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "do": {
      "type": "string",
      "enum": [
       "watch",
       "answer",
       "stop"
      ],
      "description": ""
     },
     "answer": {
      "$ref": "#/components/schemas/TaskQuestion",
      "description": ""
     }
    },
    "required": [
     "task",
     "do"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "09 §3"
   },
   "WithdrawInput": {
    "title": "WithdrawInput",
    "description": "a publishing to withdraw",
    "type": "object",
    "properties": {
     "publishing": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "reason": {
      "type": "string",
      "format": "text",
      "description": ""
     }
    },
    "required": [
     "publishing",
     "reason"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "17 §3"
   },
   "RouteDeclaration": {
    "title": "RouteDeclaration",
    "description": "one route of the register with the data it loads: the tools it calls, their inputs and the slot each answer fills, and its transition class",
    "type": "object",
    "properties": {
     "route": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "scope": {
      "type": "string",
      "enum": [
       "user",
       "strategy",
       "brand",
       "tenant",
       "platform"
      ],
      "description": ""
     },
     "title": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "slots": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "text"
      },
      "description": ""
     },
     "loads": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/RouteLoad"
      },
      "description": ""
     },
     "transition": {
      "type": "string",
      "enum": [
       "none",
       "swap",
       "slide",
       "fade"
      ],
      "description": "a class of the motion rules"
     }
    },
    "required": [
     "route",
     "scope",
     "title",
     "slots",
     "loads",
     "transition"
    ],
    "additionalProperties": false,
    "x-kind": "definition",
    "x-scope": "platform",
    "x-store": "postgres",
    "x-key": "its route",
    "x-places": [],
    "x-from": "15 §2.4"
   },
   "DocumentInput": {
    "title": "DocumentInput",
    "description": "the document and the version",
    "type": "object",
    "properties": {
     "document": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "version": {
      "type": "integer",
      "format": "count",
      "description": ""
     }
    },
    "required": [
     "document"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "17 §3"
   },
   "MachineAddress": {
    "title": "MachineAddress",
    "description": "one machine on the private network",
    "type": "object",
    "properties": {
     "machine": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "address": {
      "type": "string",
      "format": "address",
      "description": ""
     },
     "in_control_plane": {
      "type": "boolean",
      "format": "bool",
      "description": ""
     }
    },
    "required": [
     "machine",
     "address",
     "in_control_plane"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "21 §2.1"
   },
   "BrandDesignSystem": {
    "title": "BrandDesignSystem",
    "description": "the brand's visual system made from its pages held whole: every value with its basis and the artefacts it was read from, and the same values in the platform's token shape",
    "type": "object",
    "properties": {
     "brand": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "website": {
      "type": "string",
      "format": "address",
      "description": "the site the pages were captured from"
     },
     "pages_read": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "hash"
      },
      "description": "the captures whose documents were read whole"
     },
     "site_tokens": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/BrandSiteToken"
      },
      "description": "the custom properties the site declares on its root"
     },
     "colours": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/BrandColour"
      },
      "description": "every colour declared, with its count, and the roles"
     },
     "modes": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "text"
      },
      "description": "the colour modes measured: light, and dark where the site declares one"
     },
     "faces": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/BrandFace"
      },
      "description": "the body, heading and fixed-width faces"
     },
     "type_scale": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/BrandTypeStep"
      },
      "description": ""
     },
     "scale_ratio": {
      "$ref": "#/components/schemas/BrandRatio",
      "description": "the ratio between consecutive sizes when the scale is modular, inferred by the named rule"
     },
     "hierarchy": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/BrandHierarchyLevel"
      },
      "description": "the visual hierarchy and what makes it up: each level's size, line, weight, colour and the space below it, from the rules on the heading elements, the body and the small text"
     },
     "spacing": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/BrandStep"
      },
      "description": ""
     },
     "spacing_unit": {
      "$ref": "#/components/schemas/BrandStep",
      "description": "inferred by the named rule from the most used steps"
     },
     "rhythm": {
      "$ref": "#/components/schemas/BrandRhythm",
      "description": "the vertical rhythm: the baseline and the share of vertical steps on it, inferred by the named rule"
     },
     "radii": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/BrandStep"
      },
      "description": ""
     },
     "borders": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/BrandBorder"
      },
      "description": "every border width and style declared"
     },
     "shadows": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/BrandShadow"
      },
      "description": ""
     },
     "gradients": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/BrandGradient"
      },
      "description": "every gradient declared, with its colours"
     },
     "durations": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/BrandDuration"
      },
      "description": "every transition and animation duration declared"
     },
     "easings": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/BrandEasing"
      },
      "description": "every timing function declared"
     },
     "keyframes": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/BrandKeyframes"
      },
      "description": "every keyframes block declared: the site's own animations"
     },
     "breakpoints": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/BrandBreakpoint"
      },
      "description": "every width the media queries turn on"
     },
     "z_layers": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/BrandLayer"
      },
      "description": "every z-index declared: the site's stacking layers"
     },
     "grid": {
      "$ref": "#/components/schemas/BrandGrid",
      "description": "the layout grid: container widths, column counts and gutters"
     },
     "icons": {
      "$ref": "#/components/schemas/BrandIconography",
      "description": "the icon system the pages use and the sizes drawn"
     },
     "components": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/BrandComponent"
      },
      "description": "the recurring parts of the pages: a class the stylesheet styles as a surface, used on the pages, with its declarations"
     },
     "elements": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/BrandElement"
      },
      "description": "the brand's elements by kind: logo, icon, mark, texture, illustration, imagery, photo, shape; the held file of each where one is held"
     },
     "assets": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/BrandAsset"
      },
      "description": "every file the pages load that is held: images, animated images, icons, fonts and media, each by its bytes"
     },
     "traits": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/BrandTrait"
      },
      "description": "the motifs read from the measured values by named rules: the palette's shape, the corners, the depth, the type, the grid, the buttons, the cards, the fields, the badges, the iconography; imagery and composition come from the rendered pass"
     },
     "frameworks": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "text"
      },
      "description": "the style frameworks the pages show signs of (Tailwind, Bootstrap), measured from the class names and the compiled stylesheet"
     },
     "variants": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/BrandVariant"
      },
      "description": "the base and every variant: the dark mode measured or derived, the densities, the high contrast, and the media, each a sparse delta over its parent with its derivation and its rules; the resolver reads the effective system at any coordinate"
     },
     "templates": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/BrandTemplate"
      },
      "description": "the templates of every format on the base variant, derived by rule: the frames, their scaffolds and their CSS"
     },
     "logo": {
      "$ref": "#/components/schemas/BrandLogo",
      "description": ""
     },
     "gaps": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/CoverageGap"
      },
      "description": "what was not measured and what would measure it"
     },
     "platform_tokens": {
      "description": "the measured values in the DesignSystem row's token shape, generated from the typed values and nowhere else"
     },
     "exports": {
      "$ref": "#/components/schemas/BrandExports",
      "description": "the same values as CSS custom properties, a Tailwind theme extension, Figma variables with modes and a design-tokens (DTCG) file, generated from the typed values and nowhere else"
     }
    },
    "required": [
     "brand",
     "website",
     "pages_read",
     "site_tokens",
     "colours",
     "modes",
     "faces",
     "type_scale",
     "hierarchy",
     "spacing",
     "radii",
     "borders",
     "shadows",
     "gradients",
     "durations",
     "easings",
     "keyframes",
     "breakpoints",
     "z_layers",
     "components",
     "elements",
     "assets",
     "traits",
     "frameworks",
     "variants",
     "templates",
     "gaps",
     "platform_tokens",
     "exports"
    ],
    "additionalProperties": false,
    "x-kind": "definition",
    "x-scope": "brand",
    "x-store": "postgres",
    "x-key": "the brand and its version",
    "x-places": [],
    "x-from": "12 §2.1; DESIGN/the-brand-graph-from-a-domain §5"
   },
   "MovesPass": {
    "title": "MovesPass",
    "description": "one pass of the beat that proposes the ready moves: every open instance of an armed play read, the vertices whose edges hold proposed under the instance's trigger, and the vertices held counted",
    "type": "object",
    "properties": {
     "plays": {
      "type": "integer",
      "format": "count",
      "description": "the armed plays read"
     },
     "instances": {
      "type": "integer",
      "format": "count",
      "description": "the open instances read"
     },
     "proposed": {
      "type": "integer",
      "format": "count",
      "description": "moves proposed"
     },
     "held": {
      "type": "integer",
      "format": "count",
      "description": "vertices held, their edges not holding or not evaluable"
     },
     "at": {
      "type": "string",
      "format": "time",
      "description": ""
     }
    },
    "required": [
     "plays",
     "instances",
     "proposed",
     "held",
     "at"
    ],
    "additionalProperties": false,
    "x-kind": "work",
    "x-scope": "platform",
    "x-store": "postgres",
    "x-key": "the beat's tick",
    "x-places": [
     "asked",
     "done"
    ],
    "x-from": "13 §2.1; MODELS/the-strategy-system-as-a-formal-model §2.2"
   },
   "CatalogueEntry": {
    "title": "CatalogueEntry",
    "description": "the only way to read a file of the lakehouse",
    "type": "object",
    "properties": {
     "layer": {
      "type": "string",
      "enum": [
       "as landed",
       "refined",
       "ready to use"
      ],
      "description": ""
     },
     "plane": {
      "$ref": "#/components/schemas/Plane",
      "description": ""
     },
     "source": {
      "type": "string",
      "description": "",
      "x-register": "Source"
     },
     "day": {
      "type": "string",
      "format": "date",
      "description": "required only when the table is split by day"
     },
     "files": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/LakeFile"
      },
      "description": ""
     },
     "rows": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "made_from": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "id"
      },
      "description": ""
     },
     "table": {
      "type": "string",
      "description": "",
      "x-register": "SilverTable"
     },
     "bucket": {
      "type": "integer",
      "format": "count",
      "description": "for a table split by entity bucket"
     },
     "snapshot": {
      "type": "integer",
      "format": "count",
      "description": "the lakehouse catalogue's snapshot that is this entry (SR-0439)"
     },
     "version": {
      "type": "integer",
      "format": "count",
      "description": "the partition's version, from the entry's key"
     },
     "hash": {
      "type": "string",
      "format": "hash",
      "description": "the hash of the partition's rows, as the closed partition carries it; the commit carries it (SR-0439)"
     }
    },
    "required": [
     "layer",
     "plane",
     "files",
     "rows",
     "made_from",
     "table",
     "snapshot",
     "version"
    ],
    "additionalProperties": false,
    "x-kind": "definition",
    "x-scope": "follows",
    "x-store": "postgres",
    "x-key": "the layer, the plane, the source, the day and the version",
    "x-places": [],
    "x-from": "04 §2.2"
   },
   "Card": {
    "title": "Card",
    "description": "the one result of every tool: a typed value, its foot, and what can be done next; it cannot be built without its foot",
    "type": "object",
    "properties": {
     "body_type": {
      "type": "string",
      "format": "text",
      "description": "a type of this register"
     },
     "body": {
      "description": "the serialisation of that type"
     },
     "text": {
      "type": "string",
      "format": "text",
      "description": "the text face, first"
     },
     "foot": {
      "$ref": "#/components/schemas/CardFoot",
      "description": ""
     },
     "next": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/NextAction"
      },
      "description": ""
     },
     "basis": {
      "$ref": "#/components/schemas/Basis",
      "description": "shown as a symbol and a word"
     },
     "hypothesis": {
      "type": "string",
      "format": "id",
      "description": "for a claim under test: its evidence and tests"
     },
     "archetype": {
      "type": "string",
      "enum": [
       "scorecard",
       "ranked list",
       "chart",
       "key-value",
       "media",
       "next move",
       "record",
       "document"
      ],
      "description": "the generic renderer a card of no registered kind uses; a registered kind names its own"
     },
     "tier": {
      "type": "string",
      "enum": [
       "a step row",
       "a compact block",
       "an expanded block",
       "the canvas"
      ],
      "description": "the tier the card opens at (specification 15 section 2.4)"
     }
    },
    "required": [
     "body_type",
     "body",
     "text",
     "foot",
     "next",
     "basis"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "09 §2; 15 §2.1; 10 §2"
   },
   "BenchmarkPopulation": {
    "title": "BenchmarkPopulation",
    "description": "who a benchmark measured, as the source states it",
    "type": "object",
    "properties": {
     "who": {
      "type": "string",
      "format": "text",
      "description": "the population in the source's words"
     },
     "count": {
      "type": "integer",
      "format": "count",
      "description": "the sample or the population size when the source states it"
     },
     "sampling_frame": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "geography": {
      "type": "string",
      "format": "text",
      "description": ""
     }
    },
    "required": [
     "who"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "who a benchmark measured",
    "x-places": [],
    "x-from": "25 §2.1"
   },
   "EntitySurface": {
    "title": "EntitySurface",
    "description": "every identifier it ever had, every account, everything it published, every thread, community and gathering, and every connection",
    "type": "object",
    "properties": {
     "entity": {
      "$ref": "#/components/schemas/Entity",
      "description": ""
     },
     "identifiers": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/Identifier"
      },
      "description": ""
     },
     "accounts": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "id"
      },
      "description": ""
     },
     "published": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "id"
      },
      "description": ""
     },
     "communities": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "id"
      },
      "description": ""
     },
     "connections": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/Connection"
      },
      "description": ""
     },
     "claims": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/Claim"
      },
      "description": ""
     },
     "hypotheses": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "id"
      },
      "description": ""
     }
    },
    "required": [
     "entity",
     "identifiers",
     "accounts",
     "published",
     "communities",
     "connections",
     "claims",
     "hypotheses"
    ],
    "additionalProperties": false,
    "x-kind": "view",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "05 §3"
   },
   "Budget": {
    "title": "Budget",
    "description": "a strategy's budget by kind, of the receive family; reading the public market is never in it",
    "type": "object",
    "properties": {
     "money_outside": {
      "type": "number",
      "format": "money",
      "description": ""
     },
     "model_calls": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "workbench_time": {
      "type": "string",
      "format": "duration",
      "description": ""
     },
     "people_hours": {
      "type": "string",
      "format": "duration",
      "description": ""
     },
     "spent": {
      "$ref": "#/components/schemas/Cost",
      "description": ""
     },
     "window": {
      "$ref": "#/components/schemas/Window",
      "description": ""
     }
    },
    "required": [
     "money_outside",
     "model_calls",
     "workbench_time",
     "people_hours",
     "spent",
     "window"
    ],
    "additionalProperties": false,
    "x-kind": "parameter",
    "x-scope": "strategy",
    "x-store": "postgres",
    "x-key": "the strategy",
    "x-places": [],
    "x-from": "13 §2.1"
   },
   "Telling": {
    "title": "Telling",
    "description": "an address a tenant registered to be told at, with its signed calls as durable work",
    "type": "object",
    "properties": {
     "tenant": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "address": {
      "type": "string",
      "format": "address",
      "description": ""
     },
     "kinds": {
      "type": "array",
      "items": {
       "type": "string",
       "description": "the name of a row of Flow",
       "x-register": "Flow"
      },
      "description": ""
     },
     "secret": {
      "type": "string",
      "format": "id",
      "description": "a vault entry"
     },
     "tries_bound": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "failed_calls": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/FailedCall"
      },
      "description": ""
     }
    },
    "required": [
     "tenant",
     "address",
     "kinds",
     "secret",
     "tries_bound",
     "failed_calls"
    ],
    "additionalProperties": false,
    "x-kind": "definition",
    "x-scope": "tenant",
    "x-store": "postgres",
    "x-key": "the tenant, the address and the kinds",
    "x-places": [],
    "x-from": "10 §2"
   },
   "Parameter": {
    "title": "Parameter",
    "description": "a named number or choice a reader or a law uses; data a person can change from the console",
    "type": "object",
    "properties": {
     "name": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "family": {
      "type": "string",
      "enum": [
       "intend",
       "machinery",
       "receive",
       "source"
      ],
      "description": ""
     },
     "dimension": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "value": {
      "description": ""
     },
     "set_at_scope": {
      "$ref": "#/components/schemas/Scope",
      "description": ""
     },
     "enforced_at": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "version": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "changed_by": {
      "$ref": "#/components/schemas/Caller",
      "description": ""
     }
    },
    "required": [
     "name",
     "family",
     "dimension",
     "value",
     "set_at_scope",
     "enforced_at",
     "version"
    ],
    "additionalProperties": false,
    "x-kind": "parameter",
    "x-scope": "platform",
    "x-store": "postgres",
    "x-key": "its name and where it is set",
    "x-places": [],
    "x-from": "01 §2.7; requirement 40"
   },
   "FileEntry": {
    "title": "FileEntry",
    "description": "one file of the workspace",
    "type": "object",
    "properties": {
     "path": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "bytes": {
      "type": "integer",
      "format": "bytes",
      "description": ""
     },
     "kind": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "written_at": {
      "type": "string",
      "format": "time",
      "description": ""
     }
    },
    "required": [
     "path",
     "bytes",
     "kind",
     "written_at"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "MODELS/the-outside-agent-path §7"
   },
   "Listener": {
    "title": "Listener",
    "description": "one listening endpoint of one role: its port, protocol and exposure class",
    "type": "object",
    "properties": {
     "role": {
      "type": "string",
      "enum": [
       "api-gateway",
       "judge",
       "record",
       "work",
       "models",
       "local-server",
       "crawler",
       "identity-provider",
       "secrets-manager",
       "collector",
       "database",
       "durable-engine"
      ],
      "description": ""
     },
     "port": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "protocol": {
      "type": "string",
      "enum": [
       "https",
       "http",
       "websocket",
       "unix-socket",
       "named-pipe",
       "postgres",
       "grpc"
      ],
      "description": ""
     },
     "exposure": {
      "type": "string",
      "enum": [
       "public-through-ingress",
       "private-network",
       "loopback-only"
      ],
      "description": "public means reachable only through the ingress; nothing binds a public interface itself"
     },
     "health_path": {
      "type": "string",
      "format": "text",
      "description": "the path the load balancer and the ingress probe"
     },
     "declared_in": {
      "type": "string",
      "format": "text",
      "description": "the settings declaration that renders it; a listener found running and not declared fails the release check"
     }
    },
    "required": [
     "role",
     "port",
     "protocol",
     "exposure",
     "declared_in"
    ],
    "additionalProperties": false,
    "x-kind": "definition",
    "x-scope": "platform",
    "x-store": "postgres",
    "x-key": "the role and the port",
    "x-places": [],
    "x-from": "21 §2.1"
   },
   "Policy": {
    "title": "Policy",
    "description": "a rule that chooses among the ready arms of a strategy, a play, an actor or a content, and logs the odds of its choice; a tenant may choose another row and replay it on the history first",
    "type": "object",
    "properties": {
     "name": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "version": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "what": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "chooses": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "default": {
      "type": "boolean",
      "format": "bool",
      "description": ""
     },
     "source": {
      "type": "string",
      "format": "text",
      "description": ""
     }
    },
    "required": [
     "name",
     "version",
     "what",
     "chooses",
     "default",
     "source"
    ],
    "additionalProperties": false,
    "x-kind": "row",
    "x-scope": "platform",
    "x-store": "postgres",
    "x-key": "its name and version",
    "x-places": [],
    "x-from": "MODELS/the-strategy-system-as-a-formal-model §8.4; 14 §2.1"
   },
   "LeadsTo": {
    "title": "LeadsTo",
    "description": "one buyer profile leading to another: brought in, becoming, or crossing to, with the rate",
    "type": "object",
    "properties": {
     "kind": {
      "type": "string",
      "format": "id",
      "description": "the kind led to"
     },
     "how": {
      "type": "string",
      "enum": [
       "brings",
       "becomes",
       "crosses to"
      ],
      "description": ""
     },
     "rate": {
      "$ref": "#/components/schemas/Summary",
      "description": ""
     }
    },
    "required": [
     "kind",
     "how"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "12 §2.4"
   },
   "StepResult": {
    "title": "StepResult",
    "description": "one step's result, kept so a second pass reads it back and never asks again",
    "type": "object",
    "properties": {
     "step": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "key": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "outcome": {
      "type": "string",
      "enum": [
       "done",
       "failed",
       "waiting",
       "skipped"
      ],
      "description": ""
     },
     "result": {
      "description": "a card, or a model's answer"
     },
     "cost": {
      "$ref": "#/components/schemas/Cost",
      "description": ""
     },
     "at": {
      "type": "string",
      "format": "time",
      "description": ""
     }
    },
    "required": [
     "step",
     "key",
     "outcome",
     "cost",
     "at"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "09 §2"
   },
   "Population": {
    "title": "Population",
    "description": "what a predicate runs over, with the reader that serves it at each speed",
    "type": "object",
    "properties": {
     "name": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "unit_kind": {
      "type": "string",
      "description": "",
      "x-register": "Kind"
     },
     "readers": {
      "type": "object",
      "additionalProperties": {
       "type": "string",
       "format": "text"
      },
      "description": "for each speed of the preview and for live evaluation"
     },
     "state": {
      "$ref": "#/components/schemas/Readiness",
      "description": "a population with no reader is not ready"
     },
     "sample_strata": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "text"
      },
      "description": "the attribute paths whose values stratify a preview's sample, so the sample is spread over them"
     }
    },
    "required": [
     "name",
     "unit_kind",
     "readers",
     "state"
    ],
    "additionalProperties": false,
    "x-kind": "row",
    "x-scope": "platform",
    "x-store": "postgres",
    "x-key": "its name",
    "x-places": [],
    "x-from": "06 §2.1"
   },
   "SqlInput": {
    "title": "SqlInput",
    "description": "a read-only query, in a strategy",
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "strategy": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "bound": {
      "type": "integer",
      "format": "count",
      "description": ""
     }
    },
    "required": [
     "query",
     "strategy"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "09 §3; D-49"
   },
   "PairingsInput": {
    "title": "PairingsInput",
    "description": "a scope",
    "type": "object",
    "properties": {
     "scope": {
      "$ref": "#/components/schemas/Scope",
      "description": ""
     }
    },
    "required": [
     "scope"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "11 §3"
   },
   "PartialAnswer": {
    "title": "PartialAnswer",
    "description": "which bound was reached, what was dropped, and which way that biases the count",
    "type": "object",
    "properties": {
     "bound": {
      "type": "string",
      "enum": [
       "units",
       "time",
       "expansion"
      ],
      "description": ""
     },
     "dropped": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "bias": {
      "type": "string",
      "enum": [
       "an upper bound",
       "a lower bound",
       "neither"
      ],
      "description": ""
     }
    },
    "required": [
     "bound",
     "dropped",
     "bias"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "06 §2.3"
   },
   "TransportKind": {
    "title": "TransportKind",
    "description": "one way of connecting, with one shared client; a transport inside a connector is a defect",
    "type": "object",
    "properties": {
     "name": {
      "type": "string",
      "enum": [
       "HTTPS REST",
       "GraphQL",
       "gRPC",
       "WebSocket",
       "server-sent events",
       "an inbound webhook",
       "a feed",
       "SFTP",
       "an object store",
       "a database wire",
       "IMAP and SMTP",
       "a bulk file",
       "a rendered page",
       "a person's own browser",
       "metasearch",
       "a browsing session",
       "a file a user brings"
      ],
      "description": "The short name of the transport. The table in 18 §2.2 lists the members of each kind after a colon or a comma."
     },
     "client": {
      "type": "string",
      "format": "text",
      "description": "the shared client module"
     },
     "credential_kinds": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "text"
      },
      "description": "the kinds it takes"
     },
     "cursor_kinds": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "text"
      },
      "description": ""
     },
     "can_push": {
      "type": "boolean",
      "format": "bool",
      "description": ""
     }
    },
    "required": [
     "name",
     "client",
     "credential_kinds",
     "cursor_kinds",
     "can_push"
    ],
    "additionalProperties": false,
    "x-kind": "row",
    "x-scope": "platform",
    "x-store": "postgres",
    "x-key": "its name",
    "x-places": [],
    "x-from": "18 §2.2"
   },
   "Operator": {
    "title": "Operator",
    "description": "an operator or a comparator of the closed language, as a row",
    "type": "object",
    "properties": {
     "name": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "plain_words": {
      "type": "string",
      "format": "text",
      "description": "the words a composer shows for the operator, in the buyers' own language; a row without them fails the register's check"
     },
     "form": {
      "type": "string",
      "enum": [
       "condition",
       "operator node",
       "group"
      ],
      "description": ""
     },
     "slots": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/OperatorSlot"
      },
      "description": "each with the type of its value"
     },
     "cost_class": {
      "type": "string",
      "enum": [
       "cheap",
       "scan",
       "semantic",
       "walk"
      ],
      "description": ""
     },
     "keeps_state": {
      "type": "boolean",
      "format": "bool",
      "description": ""
     },
     "register_hash": {
      "type": "string",
      "format": "hash",
      "description": ""
     },
     "accepts": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "text"
      },
      "description": "for a comparator, the value types of the attribute it admits, from the closed list of SourceField types"
     },
     "rhs": {
      "type": "string",
      "enum": [
       "none",
       "scalar",
       "many",
       "range",
       "relative window"
      ],
      "description": "for a comparator, the shape of its right-hand value"
     },
     "label": {
      "type": "string",
      "format": "text",
      "description": "the words the composer shows for it"
     },
     "can_trigger": {
      "type": "boolean",
      "format": "bool",
      "description": "whether a unit this operator admits can by itself make a match; a tree with no such leaf cannot arm"
     }
    },
    "required": [
     "name",
     "plain_words",
     "form",
     "slots",
     "cost_class",
     "keeps_state",
     "register_hash"
    ],
    "additionalProperties": false,
    "x-kind": "row",
    "x-scope": "platform",
    "x-store": "postgres",
    "x-key": "its name",
    "x-places": [],
    "x-from": "06 §2.1; F05"
   },
   "PostureInput": {
    "title": "PostureInput",
    "description": "a community and the window",
    "type": "object",
    "properties": {
     "community": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "window": {
      "$ref": "#/components/schemas/Window",
      "description": ""
     }
    },
    "required": [
     "community"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "12 §3"
   },
   "Entity": {
    "title": "Entity",
    "description": "a thing of the market that lasts",
    "type": "object",
    "properties": {
     "kind": {
      "type": "string",
      "description": "",
      "x-register": "KindOfEntity"
     },
     "name": {
      "type": "string",
      "format": "text",
      "description": "the display name, itself a claim"
     },
     "identifiers": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/Identifier"
      },
      "description": "every key it ever had"
     },
     "plane": {
      "$ref": "#/components/schemas/Plane",
      "description": "kept once, or a tenant's"
     }
    },
    "required": [
     "kind",
     "name",
     "identifiers",
     "plane"
    ],
    "additionalProperties": false,
    "x-kind": "entity",
    "x-scope": "shared",
    "x-store": "postgres",
    "x-key": "decided; never made from an attribute",
    "x-places": [],
    "x-from": "05 §2.1"
   },
   "PlayClass": {
    "title": "PlayClass",
    "description": "one class a play reads against the rivals and the tide: table stakes, benchmark, beta, alpha, expansion or hedge; a class is a hypothesis read on the beat, never typed",
    "type": "object",
    "properties": {
     "name": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "order": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "what": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "assigned_by": {
      "type": "string",
      "format": "text",
      "description": "the reading that assigns it"
     },
     "decays_to": {
      "type": "string",
      "description": "the class it falls to as the rivals copy it",
      "x-register": "PlayClass"
     },
     "measure": {
      "type": "string",
      "format": "text",
      "description": "what is read to assign it"
     },
     "in_the_sources_words": {
      "type": "string",
      "format": "text",
      "description": ""
     }
    },
    "required": [
     "name",
     "order",
     "what",
     "assigned_by",
     "measure",
     "in_the_sources_words"
    ],
    "additionalProperties": false,
    "x-kind": "row",
    "x-scope": "platform",
    "x-store": "postgres",
    "x-key": "its name",
    "x-places": [],
    "x-from": "MODELS/the-strategy-system-as-a-formal-model §7; DOMAIN/10 §2; D-22"
   },
   "UndoActionInput": {
    "title": "UndoActionInput",
    "description": "the move to undo",
    "type": "object",
    "properties": {
     "move": {
      "type": "string",
      "format": "id",
      "description": ""
     }
    },
    "required": [
     "move"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "18 §3"
   },
   "GroundInput": {
    "title": "GroundInput",
    "description": "a subject to ground at a breadth: exactly one of a capture, an entity, a text or an address; the same grounding serves the capture panel, the entity page of the web and desktop shells, the agent and the API",
    "type": "object",
    "properties": {
     "capture": {
      "type": "string",
      "format": "hash",
      "description": "the artefact's hash"
     },
     "entity": {
      "type": "string",
      "format": "id",
      "description": "an entity of the record"
     },
     "text": {
      "type": "string",
      "format": "text",
      "description": "a text a person or the agent pasted, cut to 4,000 characters"
     },
     "address": {
      "type": "string",
      "format": "text",
      "description": "an address of a page the record may hold as a capture"
     },
     "breadth": {
      "type": "string",
      "enum": [
       "exact",
       "similar",
       "related",
       "broad"
      ],
      "description": "the person's default when absent"
     }
    },
    "required": [],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "24 §3; 24 §2.8"
   },
   "Figure": {
    "title": "Figure",
    "description": "a figure of a recipe: what it shows, its form, the units it reads, the chip on every number",
    "type": "object",
    "properties": {
     "label": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "form": {
      "type": "string",
      "format": "text",
      "description": "from the catalogue of forms"
     },
     "reads": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "id"
      },
      "description": ""
     },
     "chips": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/Basis"
      },
      "description": ""
     }
    },
    "required": [
     "label",
     "form",
     "reads",
     "chips"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "17 §2.1"
   },
   "CacheEntry": {
    "title": "CacheEntry",
    "description": "one cached answer",
    "type": "object",
    "properties": {
     "call": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "input_hash": {
      "type": "string",
      "format": "hash",
      "description": ""
     },
     "as_of": {
      "$ref": "#/components/schemas/TwoDates",
      "description": ""
     },
     "expires_at": {
      "type": "string",
      "format": "time",
      "description": ""
     },
     "expires_on_event": {
      "type": "string",
      "description": "",
      "x-register": "Flow"
     }
    },
    "required": [
     "call",
     "input_hash",
     "as_of",
     "expires_at"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "MODELS/the-outside-agent-path §7"
   },
   "PlatformList": {
    "title": "PlatformList",
    "description": "a list a page or an API answer carries whose items are things of the platform, each keyed by the first of its key paths that holds a value, and the relation between the page's thing and each item",
    "type": "object",
    "properties": {
     "field": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "thing": {
      "type": "string",
      "format": "text",
      "description": "a thing of the domain"
     },
     "relation": {
      "type": "string",
      "format": "text",
      "description": "a relation of the domain; absent when the items stand alone"
     },
     "key_paths": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "text"
      },
      "description": ""
     },
     "name_path": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "items_are_from": {
      "type": "boolean",
      "format": "bool",
      "description": "true when each item takes the relation's from role and the page's thing its to role; false the other way round"
     },
     "parent": {
      "$ref": "#/components/schemas/PlatformListParent",
      "description": "the thing each item belongs to, when the item carries its key: a comment's post, an edition's newsletter"
     },
     "needs": {
      "type": "string",
      "enum": [
       "anyone",
       "signed in",
       "connected",
       "member",
       "admin",
       "premium",
       "licensed"
      ],
      "description": "what the viewer must be to see the list at all"
     }
    },
    "required": [
     "field",
     "thing",
     "key_paths",
     "items_are_from",
     "needs"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "24 §2.1"
   },
   "KeyFitness": {
    "title": "KeyFitness",
    "description": "how often a key is present, and how often two different things share a value",
    "type": "object",
    "properties": {
     "kind": {
      "type": "string",
      "description": "",
      "x-register": "KindOfEntity"
     },
     "namespace": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "window": {
      "$ref": "#/components/schemas/Window",
      "description": ""
     },
     "present_share": {
      "type": "number",
      "format": "share",
      "description": ""
     },
     "shared_share": {
      "type": "number",
      "format": "share",
      "description": ""
     }
    },
    "required": [
     "kind",
     "namespace",
     "window",
     "present_share",
     "shared_share"
    ],
    "additionalProperties": false,
    "x-kind": "fact",
    "x-scope": "platform",
    "x-store": "postgres",
    "x-key": "the kind, the namespace and the window",
    "x-places": [],
    "x-from": "05 §2.1"
   },
   "Pairing": {
    "title": "Pairing",
    "description": "two kinds the product needs together, the rule that joins them, and the sentence shown when one is missing",
    "type": "object",
    "properties": {
     "first": {
      "type": "string",
      "description": "",
      "x-register": "Kind"
     },
     "second": {
      "type": "string",
      "description": "",
      "x-register": "Kind"
     },
     "rule": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "sentence": {
      "type": "string",
      "format": "text",
      "description": ""
     }
    },
    "required": [
     "first",
     "second",
     "rule",
     "sentence"
    ],
    "additionalProperties": false,
    "x-kind": "row",
    "x-scope": "platform",
    "x-store": "postgres",
    "x-key": "the two kinds",
    "x-places": [],
    "x-from": "11 §2"
   },
   "Oldest": {
    "title": "Oldest",
    "description": "the oldest unit in a place, with its reason",
    "type": "object",
    "properties": {
     "unit": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "since": {
      "type": "string",
      "format": "time",
      "description": ""
     },
     "reason": {
      "type": "string",
      "format": "text",
      "description": ""
     }
    },
    "required": [
     "unit",
     "since",
     "reason"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "11 §2"
   },
   "BrandDelta": {
    "title": "BrandDelta",
    "description": "one value a variant changes over its parent, by its path",
    "type": "object",
    "properties": {
     "path": {
      "type": "string",
      "format": "text",
      "description": "the value's path in the system: colours.surface.light, spacing.unit, type_scale.3.px"
     },
     "value": {
      "description": ""
     },
     "basis": {
      "$ref": "#/components/schemas/Basis",
      "description": "measured where the site declares it, derived by the named rule otherwise"
     },
     "from": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "hash"
      },
      "description": ""
     }
    },
    "required": [
     "path",
     "value",
     "basis",
     "from"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "DESIGN/the-brand-graph-from-a-domain §5"
   },
   "UndoMergeAnswer": {
    "title": "UndoMergeAnswer",
    "description": "a parting, or a later decision with the facts written again",
    "type": "object",
    "properties": {
     "parting": {
      "$ref": "#/components/schemas/Parting",
      "description": ""
     },
     "decision": {
      "$ref": "#/components/schemas/IdentityDecision",
      "description": ""
     }
    },
    "required": [],
    "additionalProperties": false,
    "x-kind": "view",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "05 §3"
   },
   "ToolCall": {
    "title": "ToolCall",
    "description": "one call of a tool inside a turn: the tool, its inputs, and what it became, a card or a refusal",
    "type": "object",
    "properties": {
     "tool": {
      "type": "string",
      "description": "",
      "x-register": "Tool"
     },
     "inputs": {
      "description": "the tool's input type, serialized"
     },
     "card": {
      "$ref": "#/components/schemas/Card",
      "description": "the answer, once the call completed"
     },
     "refusal": {
      "$ref": "#/components/schemas/Refusal",
      "description": "why it was not run, once the call failed"
     }
    },
    "required": [
     "tool",
     "inputs"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "09 §2.2"
   },
   "Envelope": {
    "title": "Envelope",
    "description": "the shared envelope every event and every crossing carries",
    "type": "object",
    "properties": {
     "id": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "kind": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "version_of_shape": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "at": {
      "type": "string",
      "format": "time",
      "description": ""
     },
     "plane": {
      "type": "string",
      "enum": [
       "tenant plane",
       "work plane",
       "shared",
       "tenant"
      ],
      "description": ""
     },
     "trace": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "payload": {
      "description": "the serialisation of the owning type the kind names"
     }
    },
    "required": [
     "id",
     "kind",
     "version_of_shape",
     "at",
     "plane",
     "trace",
     "payload"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "01 §2.4; 02 §2.4"
   },
   "BrandIconography": {
    "title": "BrandIconography",
    "description": "the icon system the pages use",
    "type": "object",
    "properties": {
     "system": {
      "type": "string",
      "enum": [
       "inline svg",
       "svg sprite",
       "icon font",
       "image files",
       "none"
      ],
      "description": ""
     },
     "count": {
      "type": "integer",
      "format": "count",
      "description": "the icons drawn on the pages held"
     },
     "sizes": {
      "type": "array",
      "items": {
       "type": "number",
       "format": "number"
      },
      "description": "the sizes drawn, in px"
     },
     "basis": {
      "$ref": "#/components/schemas/Basis",
      "description": ""
     },
     "from": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "hash"
      },
      "description": ""
     }
    },
    "required": [
     "system",
     "count",
     "sizes",
     "basis",
     "from"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "DESIGN/the-brand-graph-from-a-domain §5"
   },
   "ConsolePanel": {
    "title": "ConsolePanel",
    "description": "one panel of the ops console: the levels, stocks or alarms it draws, and the query it runs over the signal store",
    "type": "object",
    "properties": {
     "name": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "draws": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "text"
      },
      "description": "level, stock or alarm names"
     },
     "query": {
      "type": "string",
      "format": "text",
      "description": "read-only SQL over the signal store and the served tables"
     },
     "audience": {
      "type": "string",
      "enum": [
       "platform-administrator"
      ],
      "description": "the console is exposed to administrators alone"
     }
    },
    "required": [
     "name",
     "draws",
     "query",
     "audience"
    ],
    "additionalProperties": false,
    "x-kind": "definition",
    "x-scope": "platform",
    "x-store": "postgres",
    "x-key": "its name",
    "x-places": [],
    "x-from": "22 §2.4; 11 §2"
   },
   "CapacityInput": {
    "title": "CapacityInput",
    "description": "a user, how many, and the period",
    "type": "object",
    "properties": {
     "user": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "per_period": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "period": {
      "type": "string",
      "format": "duration",
      "description": ""
     }
    },
    "required": [
     "user",
     "per_period",
     "period"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "08 §3"
   },
   "WatchInput": {
    "title": "WatchInput",
    "description": "a public entity to watch",
    "type": "object",
    "properties": {
     "entity": {
      "type": "string",
      "format": "id",
      "description": ""
     }
    },
    "required": [
     "entity"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "07 §3"
   },
   "PermissionAnswer": {
    "title": "PermissionAnswer",
    "description": "the typed answer of the permission check before any action, which the acting function takes as an argument",
    "type": "object",
    "properties": {
     "allowed": {
      "type": "boolean",
      "format": "bool",
      "description": ""
     },
     "mode": {
      "type": "string",
      "enum": [
       "read only",
       "propose",
       "act",
       "full autonomy"
      ],
      "description": ""
     },
     "failed_test": {
      "type": "string",
      "enum": [
       "1",
       "2",
       "3",
       "4",
       "5"
      ],
      "description": ""
     },
     "refusal": {
      "$ref": "#/components/schemas/Refusal",
      "description": ""
     },
     "grant": {
      "type": "string",
      "format": "id",
      "description": "the narrowest grant that covers it"
     },
     "limits_left": {
      "$ref": "#/components/schemas/GrantLimits",
      "description": ""
     }
    },
    "required": [
     "allowed"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "03 §2.4"
   },
   "Thread": {
    "title": "Thread",
    "description": "the durable container of one conversation between a user and the agent; created, resumed, forked and archived; its history is the event log",
    "type": "object",
    "properties": {
     "id": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "strategy": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "user": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "title": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "forked_from": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "cursor": {
      "$ref": "#/components/schemas/EventCursor",
      "description": "the last event a client rendered"
     }
    },
    "required": [
     "id",
     "strategy",
     "user",
     "cursor"
    ],
    "additionalProperties": false,
    "x-kind": "work",
    "x-scope": "strategy",
    "x-store": "postgres",
    "x-key": "its id",
    "x-places": [
     "open",
     "archived•"
    ],
    "x-from": "09 §2.2"
   },
   "SignOutInput": {
    "title": "SignOutInput",
    "description": "the session, or the user for every session",
    "type": "object",
    "properties": {
     "session": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "user": {
      "type": "string",
      "format": "id",
      "description": ""
     }
    },
    "required": [],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "03 §3"
   },
   "Draft": {
    "title": "Draft",
    "description": "a thing being made in the definitions studio: the rows it is made from, its preview, its proofs",
    "type": "object",
    "properties": {
     "kind": {
      "type": "string",
      "description": "",
      "x-register": "Kind"
     },
     "input": {
      "description": ""
     },
     "version": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "rows": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "id"
      },
      "description": ""
     },
     "preview": {
      "$ref": "#/components/schemas/PreviewAnswer",
      "description": ""
     },
     "proofs": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "id"
      },
      "description": ""
     },
     "becomes": {
      "type": "string",
      "format": "id",
      "description": "the register row"
     }
    },
    "required": [
     "kind",
     "input",
     "version",
     "rows",
     "proofs"
    ],
    "additionalProperties": false,
    "x-kind": "work",
    "x-scope": "follows",
    "x-store": "postgres",
    "x-key": "the kind, the designer's input and the version",
    "x-places": [
     "drafting",
     "previewed",
     "proved",
     "ready",
     "discarded"
    ],
    "x-from": "16 §2.1"
   },
   "Assignment": {
    "title": "Assignment",
    "description": "which members a move touched and which it left alone, written before the first action",
    "type": "object",
    "properties": {
     "move": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "member": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "group": {
      "type": "string",
      "enum": [
       "touched",
       "left alone"
      ],
      "description": ""
     },
     "chosen_at": {
      "type": "string",
      "format": "time",
      "description": ""
     },
     "replaces": {
      "type": "string",
      "format": "id",
      "description": "a member that changes group later is a new fact that names the first"
     }
    },
    "required": [
     "move",
     "member",
     "group",
     "chosen_at"
    ],
    "additionalProperties": false,
    "x-kind": "fact",
    "x-scope": "strategy",
    "x-store": "postgres+lake",
    "x-key": "the move, the member and the group",
    "x-places": [],
    "x-from": "04 §2.2; 13"
   },
   "Ladder": {
    "title": "Ladder",
    "description": "ordered rungs, each written as the rung below with further conditions",
    "type": "object",
    "properties": {
     "name": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "rungs": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/Rung"
      },
      "description": ""
     },
     "qualifying_rung": {
      "type": "string",
      "format": "text",
      "description": "the template's default, changeable by the brand"
     },
     "original": {
      "type": "string",
      "format": "id",
      "description": ""
     }
    },
    "required": [
     "name",
     "rungs",
     "qualifying_rung"
    ],
    "additionalProperties": false,
    "x-kind": "definition",
    "x-scope": "follows",
    "x-store": "postgres",
    "x-key": "the brand or the vertical, and its name",
    "x-places": [],
    "x-from": "06 §2.2; D-11"
   },
   "Deadline": {
    "title": "Deadline",
    "description": "one unit waiting on a window's end, judged again at that moment by the one evaluator, so a condition made true by nothing arriving still fires",
    "type": "object",
    "properties": {
     "predicate": {
      "type": "string",
      "format": "hash",
      "description": ""
     },
     "unit": {
      "type": "string",
      "format": "id",
      "description": "the unit that opened the window"
     },
     "due": {
      "type": "string",
      "format": "time",
      "description": ""
     },
     "monitor": {
      "type": "string",
      "format": "id",
      "description": ""
     }
    },
    "required": [
     "predicate",
     "unit",
     "due"
    ],
    "additionalProperties": false,
    "x-kind": "work",
    "x-scope": "follows",
    "x-store": "postgres",
    "x-key": "the predicate, the unit and the time it falls due",
    "x-places": [
     "waiting",
     "judged"
    ],
    "x-from": "06 §5"
   },
   "NumberInPosition": {
    "title": "NumberInPosition",
    "description": "one number in exactly one of three positions: a summary measured, an estimate with its interval, or a parameter stipulated",
    "type": "object",
    "properties": {
     "summary": {
      "$ref": "#/components/schemas/Summary",
      "description": "measured"
     },
     "estimate": {
      "type": "string",
      "format": "id",
      "description": "estimated, with its interval"
     },
     "parameter": {
      "type": "string",
      "format": "id",
      "description": "stipulated, of the intend family"
     }
    },
    "required": [],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "12 §2.4"
   },
   "ExtractionTemplate": {
    "title": "ExtractionTemplate",
    "description": "the scraping framework's unit: what a page kind looks like, how far to walk, how to render and navigate, what to extract, how each field is normalised, what makes a row the same row, which source object and mapping the rows become, under which policies, proved by recorded samples",
    "type": "object",
    "properties": {
     "name": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "page_kind": {
      "type": "string",
      "enum": [
       "listing",
       "detail",
       "feed",
       "table",
       "search results",
       "infinite scroll",
       "document",
       "API response"
      ],
      "description": ""
     },
     "scope": {
      "$ref": "#/components/schemas/CrawlScope",
      "description": "maps onto spider-rs's configuration"
     },
     "render": {
      "type": "string",
      "enum": [
       "static",
       "auto",
       "rendered"
      ],
      "description": ""
     },
     "navigation": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/BrowsingStep"
      },
      "description": "run on CloakBrowser before extraction: open, click, type, scroll, wait, paginate"
     },
     "fields": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/FieldSpec"
      },
      "description": ""
     },
     "schema": {
      "description": "for the model-assisted reader, every value with its evidence span"
     },
     "normalisation": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/NormalisationRule"
      },
      "description": ""
     },
     "dedup_key": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "text"
      },
      "description": "the fields that make one row the same row across reads"
     },
     "source_object": {
      "type": "string",
      "description": "",
      "x-register": "SourceObject"
     },
     "mapping": {
      "type": "string",
      "description": "",
      "x-register": "Mapping"
     },
     "filter": {
      "$ref": "#/components/schemas/ResourceFilter",
      "description": ""
     },
     "identity_needed": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "proxy_policy": {
      "$ref": "#/components/schemas/ProxyPolicy",
      "description": ""
     },
     "freshness": {
      "type": "string",
      "format": "duration",
      "description": "how long a read stays good; a re-read before it is a read of bronze"
     },
     "attempt_caps": {
      "type": "object",
      "additionalProperties": {
       "type": "integer",
       "format": "count"
      },
      "description": "by failure class"
     },
     "budget": {
      "type": "object",
      "additionalProperties": {
       "type": "integer",
       "format": "count"
      },
      "description": "pages, bytes, money"
     },
     "copied_from": {
      "type": "string",
      "format": "id",
      "description": "the platform original a tenant copied"
     },
     "samples_hash": {
      "type": "string",
      "format": "hash",
      "description": "the recorded pages and their expected rows"
     },
     "state": {
      "$ref": "#/components/schemas/Readiness",
      "description": "ready only when the samples check passes"
     },
     "kind_of_entity": {
      "type": "string",
      "description": "the kind of entity a page of this template shows first",
      "x-register": "KindOfEntity"
     }
    },
    "required": [
     "name",
     "page_kind",
     "scope",
     "render",
     "navigation",
     "fields",
     "normalisation",
     "dedup_key",
     "source_object",
     "filter",
     "freshness",
     "attempt_caps",
     "budget",
     "state"
    ],
    "additionalProperties": false,
    "x-kind": "definition",
    "x-scope": "follows",
    "x-store": "postgres",
    "x-key": "its name and version, a tenant's or the platform's",
    "x-places": [],
    "x-from": "18 §2.23"
   },
   "Measure": {
    "title": "Measure",
    "description": "a measure, as a registered kind with a value",
    "type": "object",
    "properties": {
     "kind": {
      "type": "string",
      "description": "",
      "x-register": "KindOfMeasure"
     },
     "value": {
      "description": ""
     },
     "dimension": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "read_at": {
      "$ref": "#/components/schemas/TimeWithBasis",
      "description": ""
     }
    },
    "required": [
     "kind",
     "value",
     "dimension",
     "read_at"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "02 §2.4"
   },
   "RoleHeld": {
    "title": "RoleHeld",
    "description": "a role held on a tenant, a brand or a strategy",
    "type": "object",
    "properties": {
     "user": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "role": {
      "type": "string",
      "description": "",
      "x-register": "Role"
     },
     "held_on": {
      "$ref": "#/components/schemas/Scope",
      "description": ""
     }
    },
    "required": [
     "user",
     "role",
     "held_on"
    ],
    "additionalProperties": false,
    "x-kind": "definition",
    "x-scope": "tenant",
    "x-store": "postgres",
    "x-key": "the user, the role and where",
    "x-places": [],
    "x-from": "03 §2.2"
   },
   "BrandKeyframes": {
    "title": "BrandKeyframes",
    "description": "one keyframes block a site declares: an animation of its own",
    "type": "object",
    "properties": {
     "name": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "steps": {
      "type": "integer",
      "format": "count",
      "description": "the keyframe selectors in the block"
     },
     "properties": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "text"
      },
      "description": "the properties the animation moves"
     },
     "basis": {
      "$ref": "#/components/schemas/Basis",
      "description": ""
     },
     "from": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "hash"
      },
      "description": ""
     }
    },
    "required": [
     "name",
     "steps",
     "properties",
     "basis",
     "from"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "DESIGN/the-brand-graph-from-a-domain §5"
   },
   "PrivateNetwork": {
    "title": "PrivateNetwork",
    "description": "the private network the machines share: its address range and the machines on it",
    "type": "object",
    "properties": {
     "name": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "cidr": {
      "type": "string",
      "format": "text",
      "description": "10.60.0.0/24 on the three machines"
     },
     "members": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/MachineAddress"
      },
      "description": ""
     }
    },
    "required": [
     "name",
     "cidr",
     "members"
    ],
    "additionalProperties": false,
    "x-kind": "definition",
    "x-scope": "platform",
    "x-store": "postgres",
    "x-key": "its name",
    "x-places": [],
    "x-from": "21 §2.1"
   },
   "ParameterWriteInput": {
    "title": "ParameterWriteInput",
    "description": "a parameter of the record written from the console or by a person's own tool: its name, its value and the scope it is set at",
    "type": "object",
    "properties": {
     "name": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "value": {
      "description": ""
     },
     "scope": {
      "$ref": "#/components/schemas/Scope",
      "description": "the caller's tenant when absent"
     }
    },
    "required": [
     "name",
     "value"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "01 §3; requirement 40"
   },
   "Kind": {
    "title": "Kind",
    "description": "a kind, as a row of the register of kinds",
    "type": "object",
    "properties": {
     "name": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "type": {
      "type": "string",
      "enum": [
       "fact",
       "work",
       "entity",
       "definition",
       "view",
       "value",
       "parameter",
       "row"
      ],
      "description": ""
     },
     "places": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/Place"
      },
      "description": "for work: its closed list of places"
     },
     "scope": {
      "type": "string",
      "enum": [
       "shared",
       "platform",
       "tenant",
       "brand",
       "strategy",
       "user"
      ],
      "description": "the widest scope a unit of the kind may live at"
     },
     "plane_bound": {
      "type": "boolean",
      "format": "bool",
      "description": "whether a unit of the kind carries a plane"
     },
     "who_may_write": {
      "type": "array",
      "items": {
       "type": "string",
       "description": "the name of a row of Permission",
       "x-register": "Permission"
      },
      "description": "the permissions that allow a write"
     },
     "class_of_data": {
      "type": "string",
      "enum": [
       "public",
       "a tenant's own",
       "about a person",
       "about a person's condition"
      ],
      "description": ""
     },
     "retention_class": {
      "type": "string",
      "description": "a kind with no class cannot register",
      "x-register": "RetentionClass"
     },
     "same_by_construction": {
      "type": "boolean",
      "format": "bool",
      "description": "whether its key is made from its input"
     },
     "version_of_shape": {
      "type": "integer",
      "format": "count",
      "description": ""
     }
    },
    "required": [
     "name",
     "type",
     "places",
     "scope",
     "plane_bound",
     "who_may_write",
     "class_of_data",
     "retention_class",
     "same_by_construction",
     "version_of_shape"
    ],
    "additionalProperties": false,
    "x-kind": "row",
    "x-scope": "platform",
    "x-store": "postgres",
    "x-key": "its name",
    "x-places": [],
    "x-from": "01 §2.2"
   },
   "WayOfGoingToMarket": {
    "title": "WayOfGoingToMarket",
    "description": "how a brand gets buyers, held as rows and never as code",
    "type": "object",
    "properties": {
     "name": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "where_the_wanting_is": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "who_is_sold_to": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "who_never_buys_and_still_matters": {
      "type": "array",
      "items": {
       "type": "string",
       "description": "the name of a row of RoleAroundADecision",
       "x-register": "RoleAroundADecision"
      },
      "description": ""
     },
     "connection_kinds": {
      "type": "array",
      "items": {
       "type": "string",
       "description": "the name of a row of KindOfConnection",
       "x-register": "KindOfConnection"
      },
      "description": ""
     },
     "ladder": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "plays": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "id"
      },
      "description": ""
     },
     "what_is_counted": {
      "type": "array",
      "items": {
       "type": "string",
       "description": "the name of a row of KindOfMeasure",
       "x-register": "KindOfMeasure"
      },
      "description": ""
     },
     "kinds_of_action": {
      "type": "array",
      "items": {
       "type": "string",
       "description": "the name of a row of KindOfAction",
       "x-register": "KindOfAction"
      },
      "description": ""
     }
    },
    "required": [
     "name",
     "where_the_wanting_is",
     "who_is_sold_to",
     "who_never_buys_and_still_matters",
     "connection_kinds",
     "ladder",
     "plays",
     "what_is_counted",
     "kinds_of_action"
    ],
    "additionalProperties": false,
    "x-kind": "row",
    "x-scope": "platform",
    "x-store": "postgres",
    "x-key": "its name",
    "x-places": [],
    "x-from": "12 §2.1; DOMAIN/06 §1"
   },
   "BrandShadow": {
    "title": "BrandShadow",
    "description": "one shadow value",
    "type": "object",
    "properties": {
     "value": {
      "type": "string",
      "format": "text",
      "description": "the box-shadow value as declared"
     },
     "uses": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "basis": {
      "$ref": "#/components/schemas/Basis",
      "description": ""
     },
     "from": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "hash"
      },
      "description": ""
     }
    },
    "required": [
     "value",
     "uses",
     "basis",
     "from"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "DESIGN/the-brand-graph-from-a-domain §5"
   },
   "Market": {
    "title": "Market",
    "description": "a buyer profile in a place, sized in three positions, with the four stages",
    "type": "object",
    "properties": {
     "kind_of_buyer": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "place": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "stages": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/MarketStage"
      },
      "description": ""
     },
     "size": {
      "$ref": "#/components/schemas/NumberInPosition",
      "description": "measured, estimated or stipulated"
     },
     "silent_remainder": {
      "type": "number",
      "format": "share",
      "description": ""
     },
     "gaps": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/CoverageGap"
      },
      "description": ""
     },
     "sizing": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/MarketSizing"
      },
      "description": "the four sizing positions, each with its definition"
     }
    },
    "required": [
     "kind_of_buyer",
     "place",
     "stages",
     "size",
     "gaps"
    ],
    "additionalProperties": false,
    "x-kind": "definition",
    "x-scope": "brand",
    "x-store": "postgres",
    "x-key": "a buyer profile in a place",
    "x-places": [],
    "x-from": "12 §2.1"
   },
   "GoalInput": {
    "title": "GoalInput",
    "description": "a goal to add",
    "type": "object",
    "properties": {
     "goal": {
      "$ref": "#/components/schemas/Goal",
      "description": ""
     }
    },
    "required": [
     "goal"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "13 §3"
   },
   "RegisterAnswer": {
    "title": "RegisterAnswer",
    "description": "its rows and the hash, or one row or nothing",
    "type": "object",
    "properties": {
     "rows": {
      "type": "array",
      "items": {},
      "description": ""
     },
     "hash": {
      "type": "string",
      "format": "hash",
      "description": ""
     },
     "row": {
      "description": ""
     }
    },
    "required": [
     "hash"
    ],
    "additionalProperties": false,
    "x-kind": "view",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "02 §3"
   },
   "PropensitySheet": {
    "title": "PropensitySheet",
    "description": "one buyer's propensity across every offering at one time, with the offerings the profile does not bind as never measured",
    "type": "object",
    "properties": {
     "buyer": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "rows": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/Propensity"
      },
      "description": ""
     },
     "not_bound": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "id"
      },
      "description": "offerings the profile does not bind, never measured"
     },
     "as_of": {
      "$ref": "#/components/schemas/TwoDates",
      "description": ""
     }
    },
    "required": [
     "buyer",
     "rows",
     "not_bound",
     "as_of"
    ],
    "additionalProperties": false,
    "x-kind": "view",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "14 §2.4"
   },
   "BrandHierarchyLevel": {
    "title": "BrandHierarchyLevel",
    "description": "one level of the visual hierarchy and what makes it up",
    "type": "object",
    "properties": {
     "name": {
      "type": "string",
      "enum": [
       "h1",
       "h2",
       "h3",
       "h4",
       "h5",
       "h6",
       "body",
       "small",
       "label"
      ],
      "description": ""
     },
     "px": {
      "type": "number",
      "format": "number",
      "description": ""
     },
     "line": {
      "type": "number",
      "format": "number",
      "description": ""
     },
     "weight": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "colour": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "space_below": {
      "type": "number",
      "format": "number",
      "description": "the margin below it, in px"
     },
     "uses": {
      "type": "integer",
      "format": "count",
      "description": "the elements on the pages held"
     },
     "basis": {
      "$ref": "#/components/schemas/Basis",
      "description": ""
     },
     "from": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "hash"
      },
      "description": ""
     }
    },
    "required": [
     "name",
     "px",
     "uses",
     "basis",
     "from"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "DESIGN/the-brand-graph-from-a-domain §5"
   },
   "ActThroughConnectorInput": {
    "title": "ActThroughConnectorInput",
    "description": "run one kind of action with its arguments and their sources",
    "type": "object",
    "properties": {
     "installed_connector": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "kind_of_action": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "arguments": {
      "type": "object",
      "additionalProperties": {},
      "description": ""
     },
     "argument_sources": {
      "type": "object",
      "additionalProperties": {
       "type": "string",
       "format": "text"
      },
      "description": "the record by id, a definition, a person's own words"
     }
    },
    "required": [
     "installed_connector",
     "kind_of_action",
     "arguments",
     "argument_sources"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "18 §3"
   },
   "PageMiss": {
    "title": "PageMiss",
    "description": "one template field a reader could not read: what it should have been and what the page showed where it was expected",
    "type": "object",
    "properties": {
     "field": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "type": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "selector": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "expected": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "nearest": {
      "type": "string",
      "format": "text",
      "description": "the page's own markup around the place, with every form field removed"
     }
    },
    "required": [
     "field",
     "type",
     "selector",
     "expected",
     "nearest"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "24 §2.1"
   },
   "DemandCell": {
    "title": "DemandCell",
    "description": "one demand cell however many definitions arm it; no tenant and no strategy in its key, only its plane",
    "type": "object",
    "properties": {
     "source": {
      "type": "string",
      "description": "",
      "x-register": "Source"
     },
     "entities": {
      "$ref": "#/components/schemas/Predicate",
      "description": ""
     },
     "bucket": {
      "$ref": "#/components/schemas/Window",
      "description": ""
     },
     "fields": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "text"
      },
      "description": ""
     },
     "plane": {
      "$ref": "#/components/schemas/Plane",
      "description": ""
     },
     "value": {
      "type": "number",
      "format": "share",
      "description": ""
     },
     "armings": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "id"
      },
      "description": ""
     }
    },
    "required": [
     "source",
     "entities",
     "bucket",
     "fields",
     "plane",
     "value",
     "armings"
    ],
    "additionalProperties": false,
    "x-kind": "work",
    "x-scope": "follows",
    "x-store": "postgres",
    "x-key": "a source, a scope of entities, a bucket of time and a group of fields",
    "x-places": [
     "wanted",
     "planned",
     "covered",
     "withdrawn",
     "not satisfiable"
    ],
    "x-from": "07 §2.3"
   },
   "WhoAmIInput": {
    "title": "WhoAmIInput",
    "description": "a token, a key, or a run's identity",
    "type": "object",
    "properties": {
     "token": {
      "type": "string",
      "format": "text",
      "description": "never logged"
     },
     "key": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "run": {
      "type": "string",
      "format": "id",
      "description": ""
     }
    },
    "required": [],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "03 §3"
   },
   "PolicyDecision": {
    "title": "PolicyDecision",
    "description": "the choice made, the chance it had, the alternatives, the version of the policy, the outcome when read",
    "type": "object",
    "properties": {
     "policy": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "version": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "choice": {
      "description": ""
     },
     "chance": {
      "type": "number",
      "format": "chance",
      "description": ""
     },
     "alternatives": {
      "type": "array",
      "items": {},
      "description": ""
     },
     "outcome": {
      "description": ""
     }
    },
    "required": [
     "policy",
     "version",
     "choice",
     "chance",
     "alternatives"
    ],
    "additionalProperties": false,
    "x-kind": "fact",
    "x-scope": "follows",
    "x-store": "postgres+lake",
    "x-key": "the policy, its version and the moment",
    "x-places": [],
    "x-from": "14 §2.1"
   },
   "StocksInput": {
    "title": "StocksInput",
    "description": "a scope, and optionally one kind",
    "type": "object",
    "properties": {
     "scope": {
      "$ref": "#/components/schemas/Scope",
      "description": ""
     },
     "kind": {
      "type": "string",
      "description": "",
      "x-register": "Kind"
     }
    },
    "required": [
     "scope"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "11 §3"
   },
   "BasketReading": {
    "title": "BasketReading",
    "description": "a basket read over one subject, a set or groups, kept as a fact and armed over its population",
    "type": "object",
    "properties": {
     "basket": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "version": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "population": {
      "$ref": "#/components/schemas/PopulationStatement",
      "description": ""
     },
     "window": {
      "$ref": "#/components/schemas/Window",
      "description": ""
     },
     "memberships": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/ProxyMembership"
      },
      "description": "over one subject"
     },
     "readings": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/ProxyReading"
      },
      "description": "over a set, one per proxy"
     },
     "co_membership": {
      "type": "array",
      "items": {},
      "description": "proxy, proxy, shared count"
     },
     "cells": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/BasketCell"
      },
      "description": "over groups"
     },
     "as_of": {
      "$ref": "#/components/schemas/TwoDates",
      "description": ""
     },
     "changed": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/NumberChange"
      },
      "description": "against the reading before"
     }
    },
    "required": [
     "basket",
     "version",
     "population",
     "window",
     "as_of"
    ],
    "additionalProperties": false,
    "x-kind": "fact",
    "x-scope": "follows",
    "x-store": "postgres+lake",
    "x-key": "the basket version, the population and the window",
    "x-places": [],
    "x-from": "06 §2.5"
   },
   "Lease": {
    "title": "Lease",
    "description": "the acquisition system's leave to a host to call one way as one identity at one rate",
    "type": "object",
    "properties": {
     "way": {
      "type": "string",
      "description": "",
      "x-register": "AccessMethod"
     },
     "identity": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "host": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "rate": {
      "$ref": "#/components/schemas/RateBound",
      "description": ""
     },
     "ends_at": {
      "type": "string",
      "format": "time",
      "description": ""
     },
     "grant_number": {
      "type": "integer",
      "format": "count",
      "description": "a write with a stale grant number is rejected"
     }
    },
    "required": [
     "way",
     "identity",
     "host",
     "rate",
     "ends_at",
     "grant_number"
    ],
    "additionalProperties": false,
    "x-kind": "fact",
    "x-scope": "shared",
    "x-store": "acquisition",
    "x-key": "the way, the identity, the host and when it ends",
    "x-places": [],
    "x-from": "07 §2.2; 18 §2.10"
   },
   "BasketCell": {
    "title": "BasketCell",
    "description": "one proxy against one group: the count, the share, the lift against the base rate and the negative control",
    "type": "object",
    "properties": {
     "proxy": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "group": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "count": {
      "$ref": "#/components/schemas/Summary",
      "description": ""
     },
     "share": {
      "type": "number",
      "format": "share",
      "description": ""
     },
     "lift": {
      "type": "number",
      "format": "share",
      "description": "against the base rate over the whole population"
     },
     "control": {
      "$ref": "#/components/schemas/ControlResult",
      "description": ""
     }
    },
    "required": [
     "proxy",
     "group",
     "count",
     "share",
     "lift",
     "control"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "06 §2.5"
   },
   "LogLine": {
    "title": "LogLine",
    "description": "one structured log line: time, role, run, level, a message in plain words, and the trace it belongs to; secret values are redacted before export",
    "type": "object",
    "properties": {
     "at": {
      "type": "string",
      "format": "time",
      "description": ""
     },
     "role": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "run": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "level": {
      "type": "string",
      "enum": [
       "debug",
       "info",
       "warn",
       "error"
      ],
      "description": ""
     },
     "message": {
      "type": "string",
      "format": "text",
      "description": "plain words; never a code name a customer reads"
     },
     "context": {
      "$ref": "#/components/schemas/TelemetryContext",
      "description": ""
     },
     "fields": {
      "type": "object",
      "additionalProperties": {
       "type": "string",
       "format": "text"
      },
      "description": ""
     }
    },
    "required": [
     "at",
     "role",
     "level",
     "message"
    ],
    "additionalProperties": false,
    "x-kind": "fact",
    "x-scope": "platform",
    "x-store": "lake:landed",
    "x-key": "its id",
    "x-places": [],
    "x-from": "22 §2.1"
   },
   "RunRequest": {
    "title": "RunRequest",
    "description": "a run to make on the work plane: the workflow, the caller, the envelope and what started it",
    "type": "object",
    "properties": {
     "workflow": {
      "$ref": "#/components/schemas/Workflow",
      "description": ""
     },
     "caller": {
      "$ref": "#/components/schemas/Caller",
      "description": ""
     },
     "envelope": {
      "$ref": "#/components/schemas/CallEnvelope",
      "description": ""
     },
     "trigger": {
      "type": "string",
      "format": "text",
      "description": "a person's word, or a beat at its tick"
     },
     "deadline": {
      "type": "string",
      "format": "time",
      "description": ""
     },
     "budget": {
      "$ref": "#/components/schemas/Cost",
      "description": ""
     }
    },
    "required": [
     "workflow",
     "caller",
     "envelope",
     "trigger",
     "deadline",
     "budget"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "09 §2; ARCHITECTURE/08 §7"
   },
   "DocExample": {
    "title": "DocExample",
    "description": "one example on a page, rendered in each language from one source and validated against its type",
    "type": "object",
    "properties": {
     "language": {
      "type": "string",
      "enum": [
       "curl",
       "typescript",
       "python",
       "rust",
       "json",
       "sql"
      ],
      "description": ""
     },
     "code": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "validates_against": {
      "type": "string",
      "format": "text",
      "description": "a type of the register"
     }
    },
    "required": [
     "language",
     "code",
     "validates_against"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "23 §2.1"
   },
   "KeepQuestionInput": {
    "title": "KeepQuestionInput",
    "description": "the question and its scope",
    "type": "object",
    "properties": {
     "question": {
      "$ref": "#/components/schemas/SavedQuestion",
      "description": ""
     }
    },
    "required": [
     "question"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "11 §3"
   },
   "ChangePlanInput": {
    "title": "ChangePlanInput",
    "description": "the plan kind to change to",
    "type": "object",
    "properties": {
     "plan_kind": {
      "type": "string",
      "enum": [
       "trial",
       "paid",
       "internal"
      ],
      "description": ""
     }
    },
    "required": [
     "plan_kind"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "19 §3"
   },
   "MarketSimulationFrame": {
    "title": "MarketSimulationFrame",
    "description": "what a market simulation gave: the trajectory of every stock, the gain of every loop, the sensitivity to every intervention, and the set of options that compares the strategies laid over the same template",
    "type": "object",
    "properties": {
     "simulation": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "trajectories": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/StockTrajectory"
      },
      "description": ""
     },
     "loop_gains": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/LoopGain"
      },
      "description": ""
     },
     "sensitivity": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/Sensitivity"
      },
      "description": "the change in each output for a one-step change of each intervention"
     },
     "participants_read": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "id"
      },
      "description": "the participants whose behaviour the run read"
     },
     "level": {
      "type": "number",
      "format": "share",
      "description": "the level of every interval"
     },
     "options": {
      "type": "string",
      "format": "id",
      "description": "the set of options document that compares strategies over this template"
     }
    },
    "required": [
     "simulation",
     "trajectories",
     "loop_gains",
     "sensitivity",
     "participants_read",
     "level"
    ],
    "additionalProperties": false,
    "x-kind": "fact",
    "x-scope": "brand",
    "x-store": "postgres+lake",
    "x-key": "the simulation",
    "x-places": [],
    "x-from": "26 §2.1"
   },
   "WatchedIdentity": {
    "title": "WatchedIdentity",
    "description": "a public entity to follow, as an armed monitor over it",
    "type": "object",
    "properties": {
     "entity": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "monitor": {
      "type": "string",
      "format": "id",
      "description": ""
     }
    },
    "required": [
     "entity",
     "monitor"
    ],
    "additionalProperties": false,
    "x-kind": "definition",
    "x-scope": "tenant",
    "x-store": "postgres",
    "x-key": "the public entity",
    "x-places": [],
    "x-from": "07 §2.2"
   },
   "PriceList": {
    "title": "PriceList",
    "description": "the prices in force from a date, versioned; a change is a new version",
    "type": "object",
    "properties": {
     "version": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "from": {
      "type": "string",
      "format": "date",
      "description": ""
     },
     "prices": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/Price"
      },
      "description": ""
     }
    },
    "required": [
     "version",
     "from",
     "prices"
    ],
    "additionalProperties": false,
    "x-kind": "row",
    "x-scope": "platform",
    "x-store": "postgres",
    "x-key": "its version",
    "x-places": [],
    "x-from": "19 §2.4"
   },
   "ControlResult": {
    "title": "ControlResult",
    "description": "a control and what it read",
    "type": "object",
    "properties": {
     "name": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "expected": {
      "type": "string",
      "format": "text",
      "description": "what it must land at"
     },
     "read": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "passed": {
      "type": "boolean",
      "format": "bool",
      "description": ""
     },
     "at": {
      "type": "string",
      "format": "time",
      "description": ""
     }
    },
    "required": [
     "name",
     "expected",
     "read",
     "passed",
     "at"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "06 §2.1; 14 §2.1"
   },
   "ProposeTemplateInput": {
    "title": "ProposeTemplateInput",
    "description": "a sample page the person marked, from which the model proposes a template's fields with evidence spans for the person to confirm",
    "type": "object",
    "properties": {
     "address": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "page_kind": {
      "type": "string",
      "enum": [
       "listing",
       "detail",
       "feed",
       "table",
       "search results",
       "infinite scroll",
       "document",
       "API response"
      ],
      "description": ""
     },
     "marked": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "text"
      },
      "description": "the values the person pointed at"
     },
     "as_identity": {
      "type": "string",
      "format": "id",
      "description": ""
     }
    },
    "required": [
     "address",
     "page_kind",
     "marked"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "18 §3"
   },
   "Identifier": {
    "title": "Identifier",
    "description": "an identifier that names an entity; never removed when a handle changes",
    "type": "object",
    "properties": {
     "entity": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "namespace": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "value": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "normalised": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "trust_rank": {
      "type": "integer",
      "format": "count",
      "description": ""
     }
    },
    "required": [
     "entity",
     "namespace",
     "value",
     "normalised",
     "trust_rank"
    ],
    "additionalProperties": false,
    "x-kind": "fact",
    "x-scope": "follows",
    "x-store": "postgres+lake",
    "x-key": "the namespace, the value and the source",
    "x-places": [],
    "x-from": "05 §2.1"
   },
   "PageChange": {
    "title": "PageChange",
    "description": "a market event of the kind page changed: what was added, removed or changed between two versions of a page, and the extracted fields that moved",
    "type": "object",
    "properties": {
     "page": {
      "type": "string",
      "format": "id",
      "description": "the content item"
     },
     "previous_version": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "new_version": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "kind": {
      "type": "string",
      "enum": [
       "added",
       "removed",
       "changed",
       "moved",
       "sitemap entry added",
       "sitemap entry removed"
      ],
      "description": ""
     },
     "diff_summary": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "changed_fields": {
      "type": "object",
      "additionalProperties": {},
      "description": "old and new by field"
     },
     "seen_at": {
      "type": "string",
      "format": "time",
      "description": ""
     },
     "watch": {
      "type": "string",
      "format": "id",
      "description": ""
     }
    },
    "required": [
     "page",
     "previous_version",
     "new_version",
     "kind",
     "diff_summary",
     "changed_fields",
     "seen_at"
    ],
    "additionalProperties": false,
    "x-kind": "fact",
    "x-scope": "follows",
    "x-store": "lake:ready",
    "x-key": "the page, the previous version and the new version",
    "x-places": [],
    "x-from": "18 §2.21; 04 §2.2"
   },
   "ArmPlayAnswer": {
    "title": "ArmPlayAnswer",
    "description": "the armed play, and the cells of demand it raised",
    "type": "object",
    "properties": {
     "play": {
      "$ref": "#/components/schemas/Play",
      "description": ""
     },
     "cells": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "id"
      },
      "description": ""
     }
    },
    "required": [
     "play",
     "cells"
    ],
    "additionalProperties": false,
    "x-kind": "view",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "13 §3"
   },
   "HypothesisTest": {
    "title": "HypothesisTest",
    "description": "a test a claim owes or has run",
    "type": "object",
    "properties": {
     "name": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "tool": {
      "type": "string",
      "format": "text",
      "description": "the tool that runs it"
     },
     "state": {
      "type": "string",
      "enum": [
       "owed",
       "run"
      ],
      "description": ""
     },
     "read": {
      "type": "string",
      "format": "text",
      "description": "what it read"
     },
     "at": {
      "type": "string",
      "format": "time",
      "description": ""
     }
    },
    "required": [
     "name",
     "state"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "01 §2.9"
   },
   "Ask": {
    "title": "Ask",
    "description": "one ask of one way for one cell, with its cost, its risk and a deadline",
    "type": "object",
    "properties": {
     "plan": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "cell": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "way": {
      "type": "string",
      "description": "",
      "x-register": "AccessMethod"
     },
     "cost": {
      "$ref": "#/components/schemas/Cost",
      "description": ""
     },
     "risk": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "deadline": {
      "type": "string",
      "format": "time",
      "description": ""
     },
     "decided_by": {
      "$ref": "#/components/schemas/Caller",
      "description": ""
     }
    },
    "required": [
     "plan",
     "cell",
     "way",
     "cost",
     "risk"
    ],
    "additionalProperties": false,
    "x-kind": "work",
    "x-scope": "follows",
    "x-store": "postgres",
    "x-key": "the plan, the cell and the way",
    "x-places": [
     "proposed",
     "waiting for a person",
     "approved",
     "sent",
     "answered",
     "declined",
     "expired"
    ],
    "x-from": "07 §2.3"
   },
   "MonitorAnswer": {
    "title": "MonitorAnswer",
    "description": "a monitor's answer on one beat",
    "type": "object",
    "properties": {
     "at": {
      "type": "string",
      "format": "time",
      "description": ""
     },
     "catches": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "coverage": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/ChannelCoverage"
      },
      "description": ""
     },
     "changed_since": {
      "type": "string",
      "format": "text",
      "description": ""
     }
    },
    "required": [
     "at",
     "catches",
     "coverage"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "06 §2.2"
   },
   "BoardAnswer": {
    "title": "BoardAnswer",
    "description": "a board with every tile's numbers, each with its basis and its population",
    "type": "object",
    "properties": {
     "board": {
      "type": "string",
      "description": "",
      "x-register": "Board"
     },
     "tiles": {
      "type": "array",
      "items": {},
      "description": "tile, numbers with basis and population"
     }
    },
    "required": [
     "board",
     "tiles"
    ],
    "additionalProperties": false,
    "x-kind": "view",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "11 §3"
   },
   "RoutingInput": {
    "title": "RoutingInput",
    "description": "a routing rule to write, preview or arm",
    "type": "object",
    "properties": {
     "rule": {
      "$ref": "#/components/schemas/RoutingRule",
      "description": ""
     },
     "do": {
      "type": "string",
      "enum": [
       "write",
       "preview",
       "arm"
      ],
      "description": ""
     }
    },
    "required": [
     "rule",
     "do"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "08 §3"
   },
   "KindOfMotive": {
    "title": "KindOfMotive",
    "description": "a registered kind of motive a buyer or a router carries: what they want, what puts them off, the pain, the trigger, the job to be done, the proof they accept, the number they judge success by, the first need, and what makes them commit or stay",
    "type": "object",
    "properties": {
     "name": {
      "type": "string",
      "format": "text",
      "description": "the platform's rows: want, put-off, pain, trigger, job to be done, proof accepted, success measure, first need, commits or stays, constraint, how they buy; a new kind is a row, never a change to the register"
     },
     "order": {
      "type": "integer",
      "format": "count",
      "description": ""
     }
    },
    "required": [
     "name",
     "order"
    ],
    "additionalProperties": false,
    "x-kind": "row",
    "x-scope": "platform",
    "x-store": "postgres",
    "x-key": "its name",
    "x-places": [],
    "x-from": "12 §2.4"
   },
   "AccessScope": {
    "title": "AccessScope",
    "description": "a name an application asks for, and the permissions it stands for; it only narrows",
    "type": "object",
    "properties": {
     "name": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "permissions": {
      "type": "array",
      "items": {
       "type": "string",
       "description": "the name of a row of Permission",
       "x-register": "Permission"
      },
      "description": ""
     },
     "holds": {
      "type": "array",
      "items": {
       "type": "string",
       "description": "the name of a row of AccessScope",
       "x-register": "AccessScope"
      },
      "description": "the narrower ones inside it"
     },
     "plain_words": {
      "type": "string",
      "format": "text",
      "description": "what it allows, shown on the consent screen"
     }
    },
    "required": [
     "name",
     "permissions",
     "holds",
     "plain_words"
    ],
    "additionalProperties": false,
    "x-kind": "row",
    "x-scope": "platform",
    "x-store": "postgres",
    "x-key": "its name",
    "x-places": [],
    "x-from": "03 §2.2"
   },
   "NearnessBar": {
    "title": "NearnessBar",
    "description": "the bars of one breadth: the least similarity the name channel accepts and the least nearness the meaning channel accepts",
    "type": "object",
    "properties": {
     "name": {
      "type": "number",
      "format": "share",
      "description": "the least trigram similarity of names the name channel accepts"
     },
     "meaning": {
      "type": "number",
      "format": "share",
      "description": "the least cosine nearness of vectors under the one model the meaning channel accepts"
     }
    },
    "required": [
     "name",
     "meaning"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "06 §2.6; 24 §2.6"
   },
   "FitPlaysInput": {
    "title": "FitPlaysInput",
    "description": "the phase of the search, and the vertical or kind of offering the tactics must fit",
    "type": "object",
    "properties": {
     "phase": {
      "type": "string",
      "enum": [
       "find the market",
       "sculpt the offering",
       "test the fit",
       "build a beachhead",
       "engineer demand",
       "find demand",
       "grow in a market",
       "hedge"
      ],
      "description": ""
     },
     "vertical": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "kind_of_offering": {
      "type": "string",
      "description": "",
      "x-register": "KindOfOffering"
     }
    },
    "required": [
     "phase"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "26 §3"
   },
   "OperatorSlot": {
    "title": "OperatorSlot",
    "description": "one slot of an operator",
    "type": "object",
    "properties": {
     "name": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "value_type": {
      "type": "string",
      "enum": [
       "text",
       "number",
       "time",
       "duration",
       "list",
       "concept",
       "proxy",
       "connection kind",
       "subject",
       "threshold",
       "the attribute's own",
       "range",
       "choice",
       "population",
       "bool",
       "breadth"
      ],
      "description": "the attribute's own is the type of the attribute compared; a range is two ends of that type, the lower first; a choice is one of the slot's choices; a population names a row of populations; a breadth is one of exact, similar, related or broad, resolved at compile to the leaf's channel bar of the bars of nearness, and a threshold slot beside it is its alternative, exactly one given"
     },
     "required": {
      "type": "boolean",
      "format": "bool",
      "description": ""
     },
     "required_when": {
      "type": "string",
      "format": "text",
      "description": "the condition under which an optional slot becomes required, in words"
     },
     "choices": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "text"
      },
      "description": "for a choice slot, its closed list"
     },
     "whole": {
      "type": "boolean",
      "format": "bool",
      "description": "for a number slot, whether the value must be a whole number"
     },
     "limits": {
      "type": "array",
      "items": {
       "type": "number",
       "format": "number"
      },
      "description": "for a number slot, the lowest and the highest value allowed, two numbers"
     }
    },
    "required": [
     "name",
     "value_type",
     "required"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "06 §2.1"
   },
   "Role": {
    "title": "Role",
    "description": "a named set of grants; platform originals a tenant copies",
    "type": "object",
    "properties": {
     "name": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "grants": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/Grant"
      },
      "description": ""
     },
     "original": {
      "type": "string",
      "format": "id",
      "description": "where a copy came from"
     },
     "plain_words": {
      "type": "string",
      "format": "text",
      "description": "what the role lets a person do, shown where a role is given"
     },
     "owner": {
      "type": "string",
      "format": "id",
      "description": "the tenant that copied the role; absent on a platform original, which every tenant has"
     }
    },
    "required": [
     "name",
     "grants",
     "plain_words"
    ],
    "additionalProperties": false,
    "x-kind": "row",
    "x-scope": "platform",
    "x-store": "postgres",
    "x-key": "its name and its owner",
    "x-places": [],
    "x-from": "03 §2.2"
   },
   "MarketSizing": {
    "title": "MarketSizing",
    "description": "one sizing position of a market, with the count and the definition the reading used",
    "type": "object",
    "properties": {
     "position": {
      "type": "string",
      "description": "",
      "x-register": "SizingPosition"
     },
     "count": {
      "$ref": "#/components/schemas/NumberInPosition",
      "description": "measured, estimated or stipulated"
     },
     "definition": {
      "type": "string",
      "format": "text",
      "description": "what the position counts, in the engagement's own words"
     }
    },
    "required": [
     "position",
     "count",
     "definition"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "12 §2.4"
   },
   "SignalSubject": {
    "title": "SignalSubject",
    "description": "what a signal is about",
    "type": "object",
    "properties": {
     "kind": {
      "type": "string",
      "enum": [
       "an entity",
       "a market",
       "a channel",
       "a rival",
       "a tenant's own play"
      ],
      "description": ""
     },
     "id": {
      "type": "string",
      "format": "id",
      "description": ""
     }
    },
    "required": [
     "kind",
     "id"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "06 §2.2; D-06"
   },
   "Route": {
    "title": "Route",
    "description": "one ingress route: a host and path prefix forwarded to one listener, over TLS",
    "type": "object",
    "properties": {
     "host": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "path_prefix": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "backend": {
      "$ref": "#/components/schemas/Listener",
      "description": "only an api-gateway listener may be a backend"
     },
     "tls": {
      "$ref": "#/components/schemas/Certificate",
      "description": ""
     },
     "keeps_open_streams_on_change": {
      "type": "boolean",
      "format": "bool",
      "description": "a route change must not drop a long-lived stream (D-37)"
     },
     "rate_limit": {
      "$ref": "#/components/schemas/RateLimit",
      "description": ""
     }
    },
    "required": [
     "host",
     "path_prefix",
     "backend",
     "tls",
     "keeps_open_streams_on_change"
    ],
    "additionalProperties": false,
    "x-kind": "definition",
    "x-scope": "platform",
    "x-store": "postgres",
    "x-key": "the host and the path prefix",
    "x-places": [],
    "x-from": "21 §2.1"
   },
   "MarketSimulationInput": {
    "title": "MarketSimulationInput",
    "description": "the template, the market, the interventions that stand for a strategy, and the run's bounds",
    "type": "object",
    "properties": {
     "template": {
      "type": "string",
      "description": "",
      "x-register": "SystemsModelTemplate"
     },
     "vertical": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "segment": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "brand": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "interventions": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/Intervention"
      },
      "description": ""
     },
     "horizon": {
      "type": "string",
      "format": "duration",
      "description": "the template's when absent"
     },
     "samples": {
      "type": "integer",
      "format": "count",
      "description": "the parameter's when absent"
     },
     "seed": {
      "type": "integer",
      "format": "count",
      "description": ""
     }
    },
    "required": [
     "template",
     "vertical",
     "interventions"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "26 §3"
   },
   "PageChangesInput": {
    "title": "PageChangesInput",
    "description": "page changes for a site or a watch in a window",
    "type": "object",
    "properties": {
     "site": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "watch": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "window": {
      "$ref": "#/components/schemas/Window",
      "description": ""
     }
    },
    "required": [
     "window"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "18 §3"
   },
   "Capture": {
    "title": "Capture",
    "description": "a page as a person saw it, with the source objects made from it, the neighbourhood the mapping's links define, and the trail",
    "type": "object",
    "properties": {
     "address": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "platform": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "artefact_hash": {
      "type": "string",
      "format": "hash",
      "description": "the bronze object"
     },
     "captured_by": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "identity": {
      "type": "string",
      "format": "id",
      "description": "the person's own signed-in identity, never lent"
     },
     "source_objects": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "id"
      },
      "description": ""
     },
     "neighbourhood": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "id"
      },
      "description": "walked as far as the page shows"
     },
     "cells": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "id"
      },
      "description": "the cells credited"
     },
     "rights": {
      "$ref": "#/components/schemas/Rights",
      "description": "the source role a tenant's own"
     },
     "scope": {
      "type": "string",
      "enum": [
       "this item",
       "this thread",
       "this channel as shown",
       "this page",
       "this meeting",
       "my outbound message"
      ],
      "description": ""
     },
     "under": {
      "type": "string",
      "enum": [
       "say-so",
       "rule"
      ],
      "description": ""
     },
     "extension_version": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "redactions": {
      "description": "the count by kind"
     }
    },
    "required": [
     "address",
     "platform",
     "artefact_hash",
     "captured_by",
     "source_objects",
     "neighbourhood",
     "cells",
     "rights",
     "scope",
     "under",
     "extension_version",
     "redactions"
    ],
    "additionalProperties": false,
    "x-kind": "fact",
    "x-scope": "tenant",
    "x-store": "lake:ready",
    "x-key": "the artefact's hash, the person and the time",
    "x-places": [],
    "x-from": "18 §2.6"
   },
   "BudgetForecast": {
    "title": "BudgetForecast",
    "description": "the spend a buyer can put to this kind of purchase in one period, month or quarter: an estimate with its interval and its balance of evidence, the inputs it read, and its calibration against what followed",
    "type": "object",
    "properties": {
     "buyer": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "period": {
      "type": "string",
      "format": "text",
      "description": "a month or a quarter, such as 2026-10 or 2026-Q4"
     },
     "estimate": {
      "$ref": "#/components/schemas/Estimate",
      "description": "never a point without its interval"
     },
     "inputs": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/EvidenceRef"
      },
      "description": "the means proxy, the firmographic facts, the constraints and the market numbers read"
     },
     "calibration": {
      "$ref": "#/components/schemas/Calibration",
      "description": "against the outcomes, once they exist"
     },
     "as_of": {
      "$ref": "#/components/schemas/TwoDates",
      "description": ""
     }
    },
    "required": [
     "buyer",
     "period",
     "estimate",
     "inputs",
     "as_of"
    ],
    "additionalProperties": false,
    "x-kind": "fact",
    "x-scope": "follows",
    "x-store": "postgres+lake",
    "x-key": "the buyer and the period",
    "x-places": [],
    "x-from": "14 §2.4"
   },
   "GraphEdge": {
    "title": "GraphEdge",
    "description": "one edge of the graph a strategy, a play or a move is: from a done vertex to the next, guarded by a predicate over the record, or by the row always",
    "type": "object",
    "properties": {
     "from_vertex": {
      "type": "string",
      "format": "id",
      "description": "the play, move or action the edge leaves"
     },
     "to_vertex": {
      "type": "string",
      "format": "id",
      "description": "the play, move or action the edge enters"
     },
     "level": {
      "type": "string",
      "enum": [
       "strategy",
       "play",
       "move"
      ],
      "description": "which graph the edge belongs to"
     },
     "always": {
      "type": "boolean",
      "format": "bool",
      "description": "true for a list edge with no predicate"
     },
     "predicate": {
      "$ref": "#/components/schemas/Predicate",
      "description": "absent when always; over the record's populations, the moves of the strategy, the actions of the move or the twin's stocks"
     },
     "holds_by_horizon": {
      "$ref": "#/components/schemas/Interval",
      "description": "the chance the predicate holds before the horizon, from the rate at which it held before; never measured when it has no history"
     },
     "state": {
      "$ref": "#/components/schemas/Readiness",
      "description": "not ready with the population named when the predicate cannot be evaluated"
     }
    },
    "required": [
     "from_vertex",
     "to_vertex",
     "level",
     "always",
     "state"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "MODELS/the-strategy-system-as-a-formal-model §2; 13 §2.1"
   },
   "BrandLogo": {
    "title": "BrandLogo",
    "description": "the brand's logo: its address on the site and its file when the file is held",
    "type": "object",
    "properties": {
     "address": {
      "type": "string",
      "format": "address",
      "description": ""
     },
     "artefact": {
      "type": "string",
      "format": "hash",
      "description": "the file's hash in bronze; absent when the file is not held"
     },
     "kind": {
      "type": "string",
      "format": "text",
      "description": "svg, png, jpeg, webp, gif or ico, read from the bytes"
     },
     "found_by": {
      "type": "string",
      "format": "text",
      "description": "the rule that chose it"
     },
     "basis": {
      "$ref": "#/components/schemas/Basis",
      "description": ""
     },
     "from": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "hash"
      },
      "description": ""
     }
    },
    "required": [
     "address",
     "found_by",
     "basis",
     "from"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "DESIGN/the-brand-graph-from-a-domain §5"
   },
   "MoveTrajectory": {
    "title": "MoveTrajectory",
    "description": "one move: its place, the items that carried it out, the readings of those items and its effect",
    "type": "object",
    "properties": {
     "move": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "play": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "place": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "items": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "id"
      },
      "description": ""
     },
     "readings": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/ReadingOfMeasure"
      },
      "description": ""
     },
     "effect": {
      "$ref": "#/components/schemas/Effect",
      "description": ""
     }
    },
    "required": [
     "move",
     "play",
     "place",
     "items",
     "readings"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "13 §3"
   },
   "Segment": {
    "title": "Segment",
    "description": "a buyer profile narrowed by a place, a size or a channel",
    "type": "object",
    "properties": {
     "kind_of_buyer": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "place": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "size": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "channel": {
      "type": "string",
      "format": "id",
      "description": ""
     }
    },
    "required": [
     "kind_of_buyer"
    ],
    "additionalProperties": false,
    "x-kind": "definition",
    "x-scope": "brand",
    "x-store": "postgres",
    "x-key": "the kind of buyer narrowed",
    "x-places": [],
    "x-from": "12 §2.1"
   },
   "MyWork": {
    "title": "MyWork",
    "description": "every run the caller started that is still running",
    "type": "object",
    "properties": {
     "tasks": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/Task"
      },
      "description": ""
     }
    },
    "required": [
     "tasks"
    ],
    "additionalProperties": false,
    "x-kind": "view",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "11 §3"
   },
   "MarketParticipant": {
    "title": "MarketParticipant",
    "description": "one party of a market in one role on one stock of a vertical's chain, with its buying behaviour and its impact on the other roles; placed by a person, by the placement method of the library, or by a template",
    "type": "object",
    "properties": {
     "vertical": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "segment": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "stock": {
      "type": "string",
      "format": "text",
      "description": "the chain stock it sits on, by name"
     },
     "party": {
      "type": "string",
      "format": "id",
      "description": "an entity the record holds"
     },
     "party_kind": {
      "type": "string",
      "enum": [
       "company",
       "brand",
       "person",
       "account",
       "community",
       "organisation"
      ],
      "description": ""
     },
     "role": {
      "type": "string",
      "description": "",
      "x-register": "RoleAroundADecision"
     },
     "side": {
      "type": "string",
      "enum": [
       "demand",
       "supply",
       "intermediary",
       "influence",
       "rules"
      ],
      "description": ""
     },
     "behaviour": {
      "$ref": "#/components/schemas/BuyingBehaviour",
      "description": "absent until read"
     },
     "impact_on": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/ParticipantImpact"
      },
      "description": ""
     },
     "placed_by": {
      "type": "string",
      "enum": [
       "a person",
       "the placement method",
       "a template"
      ],
      "description": ""
     },
     "evidence": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/EvidenceRef"
      },
      "description": ""
     },
     "version": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "content_hash": {
      "type": "string",
      "format": "hash",
      "description": ""
     },
     "state": {
      "$ref": "#/components/schemas/Readiness",
      "description": "not ready without evidence or with a role the vertical does not name"
     }
    },
    "required": [
     "vertical",
     "stock",
     "party",
     "party_kind",
     "role",
     "side",
     "impact_on",
     "placed_by",
     "evidence",
     "version",
     "content_hash",
     "state"
    ],
    "additionalProperties": false,
    "x-kind": "definition",
    "x-scope": "brand",
    "x-store": "postgres",
    "x-key": "the party, the role and the vertical, versioned",
    "x-places": [],
    "x-from": "26 §2.1"
   },
   "BrowseViewInput": {
    "title": "BrowseViewInput",
    "description": "a browsing session whose live view is read",
    "type": "object",
    "properties": {
     "session": {
      "type": "string",
      "format": "id",
      "description": ""
     }
    },
    "required": [
     "session"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "18 §3"
   },
   "BrandRhythm": {
    "title": "BrandRhythm",
    "description": "the vertical rhythm of the pages",
    "type": "object",
    "properties": {
     "baseline_px": {
      "type": "number",
      "format": "number",
      "description": "the line height of the body, else the most used line height"
     },
     "on_baseline": {
      "type": "number",
      "format": "share",
      "description": "the share of vertical spacing steps and line heights that are multiples of the baseline"
     },
     "basis": {
      "$ref": "#/components/schemas/Basis",
      "description": ""
     },
     "from": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "hash"
      },
      "description": ""
     }
    },
    "required": [
     "baseline_px",
     "on_baseline",
     "basis",
     "from"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "DESIGN/the-brand-graph-from-a-domain §5"
   },
   "CardFoot": {
    "title": "CardFoot",
    "description": "what was read, the population, the control with what was expected and what was seen, and the position of each count",
    "type": "object",
    "properties": {
     "what_was_read": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "text"
      },
      "description": ""
     },
     "population": {
      "$ref": "#/components/schemas/PopulationStatement",
      "description": ""
     },
     "control": {
      "$ref": "#/components/schemas/ControlResult",
      "description": ""
     },
     "positions": {
      "type": "object",
      "additionalProperties": {
       "type": "string",
       "enum": [
        "measured",
        "never measured",
        "withheld"
       ]
      },
      "description": ""
     },
     "as_of": {
      "$ref": "#/components/schemas/TwoDates",
      "description": ""
     },
     "tier": {
      "type": "string",
      "format": "text",
      "description": "the tier that gave it"
     },
     "read_set": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/TouchedBuckets"
      },
      "description": "the buckets and snapshots of each table the answer read, so a cached card, a document, a map or a served table knows when its facts changed"
     }
    },
    "required": [
     "what_was_read",
     "population",
     "positions",
     "as_of"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "09 §2"
   },
   "InstalledTemplate": {
    "title": "InstalledTemplate",
    "description": "which template a brand installed, at which version, and how many copies",
    "type": "object",
    "properties": {
     "template": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "version": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "installed_at": {
      "type": "string",
      "format": "time",
      "description": ""
     },
     "copies": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "id"
      },
      "description": ""
     }
    },
    "required": [
     "template",
     "version",
     "installed_at",
     "copies"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "12 §2.1; SR-1207"
   },
   "BrowseTakeOverInput": {
    "title": "BrowseTakeOverInput",
    "description": "a person takes the wheel of a session, or hands it back",
    "type": "object",
    "properties": {
     "session": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "hand_back": {
      "type": "boolean",
      "format": "bool",
      "description": ""
     }
    },
    "required": [
     "session",
     "hand_back"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "18 §3"
   },
   "ForecastAndEffect": {
    "title": "ForecastAndEffect",
    "description": "one forecast and its effect",
    "type": "object",
    "properties": {
     "forecast": {
      "$ref": "#/components/schemas/Forecast",
      "description": ""
     },
     "effect": {
      "$ref": "#/components/schemas/Effect",
      "description": ""
     },
     "held": {
      "type": "boolean",
      "format": "bool",
      "description": "true when the effect fell inside the forecast's band; absent while no effect stands"
     },
     "score": {
      "$ref": "#/components/schemas/ForecastScore",
      "description": "the proper score, once the effect stands; the same fact the record keeps"
     }
    },
    "required": [
     "forecast"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "13 §3"
   },
   "Receipts": {
    "title": "Receipts",
    "description": "the receipts of exports and erasures",
    "type": "object",
    "properties": {
     "exports": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/ExportReceipt"
      },
      "description": ""
     },
     "erasures": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/ErasureReceipt"
      },
      "description": ""
     }
    },
    "required": [
     "exports",
     "erasures"
    ],
    "additionalProperties": false,
    "x-kind": "view",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "03 §3"
   },
   "WithheldInput": {
    "title": "WithheldInput",
    "description": "a brand or a tenant, and the period",
    "type": "object",
    "properties": {
     "brand": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "tenant": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "period": {
      "$ref": "#/components/schemas/Window",
      "description": ""
     }
    },
    "required": [
     "period"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "08 §3"
   },
   "PageReading": {
    "title": "PageReading",
    "description": "a page as a reader read it, the document a capture carries and a walk deposits: the address, the title, the visible text, the headings and links, the properties the template read, the contacts the page showed, the fields not read, the template, and how it was read; the extension and the walk make the same shape",
    "type": "object",
    "properties": {
     "actual_url": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "title": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "main_text": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "headings": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "text"
      },
      "description": ""
     },
     "links": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/PageLink"
      },
      "description": ""
     },
     "outcome": {
      "type": "string",
      "enum": [
       "readable_loaded",
       "empty_or_blocked",
       "rate_limited"
      ],
      "description": ""
     },
     "outcome_reason": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "properties": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/PageProperty"
      },
      "description": ""
     },
     "contact_links": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/PageLink"
      },
      "description": "mail, telephone and message links, kept apart"
     },
     "contacts": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/PageContact"
      },
      "description": ""
     },
     "misses": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/PageMiss"
      },
      "description": ""
     },
     "template": {
      "type": "string",
      "format": "text",
      "description": "the extraction template that read the page"
     },
     "logo_image": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "captured_at": {
      "type": "string",
      "format": "time",
      "description": ""
     },
     "page_hints": {
      "$ref": "#/components/schemas/PageHints",
      "description": ""
     },
     "annotations": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/Annotation"
      },
      "description": "what the person said about the page while capturing it"
     },
     "fields": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/PageField"
      },
      "description": "the form fields the page showed, with what the person typed"
     },
     "engagement": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/PageMeasure"
      },
      "description": "the counts the page showed"
     },
     "network_events": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/PageNetworkEvent"
      },
      "description": "the calls the page made while a rule was on"
     },
     "layers": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/PageLayer"
      },
      "description": "the dialogs and menus open when the page was read, each read as its own region"
     },
     "steps": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/BrowsingStep"
      },
      "description": "what the person did on the page, in order, while a rule was on"
     },
     "session": {
      "type": "string",
      "format": "text",
      "description": "the page's own session: one opening of one page in one tab, so readings of one visit join"
     }
    },
    "required": [
     "actual_url",
     "title",
     "main_text",
     "headings",
     "links",
     "outcome",
     "properties",
     "contact_links",
     "contacts",
     "misses",
     "captured_at",
     "page_hints"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "24 §2.1"
   },
   "PageLink": {
    "title": "PageLink",
    "description": "one visible link of a page",
    "type": "object",
    "properties": {
     "url": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "text": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "aria": {
      "type": "string",
      "format": "text",
      "description": ""
     }
    },
    "required": [
     "url",
     "text"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "24 §2.1"
   },
   "Stage": {
    "title": "Stage",
    "description": "one of the fixed stages every rung maps to, in a set, the seven buying stages or the router's seven, so ladders join across verticals within a set",
    "type": "object",
    "properties": {
     "name": {
      "type": "string",
      "format": "text",
      "description": "fixed rows per set: the seven buying stages from unaware to advocate; the router's seven from unheard to recommends to peers; the maturity stages of how far a company buys reach"
     },
     "order": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "set": {
      "type": "string",
      "enum": [
       "buying",
       "routing",
       "maturity"
      ],
      "description": "a stage belongs to one set, and a rung maps to a stage of its ladder's set"
     }
    },
    "required": [
     "name",
     "order",
     "set"
    ],
    "additionalProperties": false,
    "x-kind": "row",
    "x-scope": "platform",
    "x-store": "postgres",
    "x-key": "its name",
    "x-places": [],
    "x-from": "06 §2.2; D-11"
   },
   "Monitor": {
    "title": "Monitor",
    "description": "an armed condition that makes matches",
    "type": "object",
    "properties": {
     "name": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "predicate": {
      "type": "string",
      "format": "hash",
      "description": "by its hash"
     },
     "place": {
      "type": "string",
      "description": "",
      "x-register": "PlaceARunsAt"
     },
     "strategy": {
      "type": "string",
      "format": "id",
      "description": "the brand's standing strategy unless one is chosen"
     },
     "kind_of_signal": {
      "type": "string",
      "description": "",
      "x-register": "KindOfSignal"
     },
     "armed": {
      "type": "boolean",
      "format": "bool",
      "description": ""
     },
     "armed_with": {
      "type": "string",
      "format": "id",
      "description": "the preview its armed version was judged by"
     },
     "last_answer": {
      "$ref": "#/components/schemas/MonitorAnswer",
      "description": "kept on every beat"
     },
     "vertical": {
      "type": "string",
      "format": "id",
      "description": "for a platform monitor: the vertical it keeps full"
     }
    },
    "required": [
     "name",
     "predicate",
     "place",
     "strategy",
     "kind_of_signal",
     "armed"
    ],
    "additionalProperties": false,
    "x-kind": "definition",
    "x-scope": "follows",
    "x-store": "postgres",
    "x-key": "its own id, versioned",
    "x-places": [],
    "x-from": "06 §2.2"
   },
   "AttributesInput": {
    "title": "AttributesInput",
    "description": "which population's attributes to read",
    "type": "object",
    "properties": {
     "population": {
      "type": "string",
      "description": "",
      "x-register": "Population"
     },
     "window": {
      "$ref": "#/components/schemas/Window",
      "description": "the units read; the whole record when absent"
     }
    },
    "required": [
     "population"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "06 §2.1"
   },
   "DerivedGraph": {
    "title": "DerivedGraph",
    "description": "weighted connections computed from the record's connections by a named recipe over a window; rebuilt, never edited",
    "type": "object",
    "properties": {
     "recipe": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "recipe_version": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "window": {
      "$ref": "#/components/schemas/Window",
      "description": ""
     },
     "population": {
      "$ref": "#/components/schemas/PopulationStatement",
      "description": ""
     },
     "validity": {
      "type": "number",
      "format": "share",
      "description": ""
     },
     "completeness": {
      "type": "number",
      "format": "share",
      "description": ""
     },
     "coverage": {
      "type": "number",
      "format": "share",
      "description": ""
     },
     "hub_cap": {
      "type": "integer",
      "format": "count",
      "description": "what one very connected entity can decide"
     },
     "rebuild": {
      "type": "string",
      "format": "id",
      "description": "the work that rebuilt it"
     }
    },
    "required": [
     "recipe",
     "recipe_version",
     "window",
     "population",
     "hub_cap"
    ],
    "additionalProperties": false,
    "x-kind": "definition",
    "x-scope": "follows",
    "x-store": "postgres+lake",
    "x-key": "the recipe and the window",
    "x-places": [],
    "x-from": "14 §2.1; DOMAIN/02"
   },
   "SessionState": {
    "title": "SessionState",
    "description": "the session state a held identity keeps in the store, checkpointed after each use: the cookies of the platform's cookie domains and when it was checkpointed",
    "type": "object",
    "properties": {
     "platform": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "cookies": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/HeldCookie"
      },
      "description": ""
     },
     "checkpointed_at": {
      "type": "string",
      "format": "time",
      "description": ""
     }
    },
    "required": [
     "platform",
     "cookies",
     "checkpointed_at"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "18 §2.3"
   },
   "GroundingAnswer": {
    "title": "GroundingAnswer",
    "description": "a grounding with its hypotheses, each with what it proposes",
    "type": "object",
    "properties": {
     "grounding": {
      "$ref": "#/components/schemas/Grounding",
      "description": ""
     },
     "hypotheses": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/Hypothesis"
      },
      "description": ""
     }
    },
    "required": [
     "grounding",
     "hypotheses"
    ],
    "additionalProperties": false,
    "x-kind": "view",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "24 §3"
   },
   "RemovalReceipt": {
    "title": "RemovalReceipt",
    "description": "one place a removal reached",
    "type": "object",
    "properties": {
     "place": {
      "type": "string",
      "enum": [
       "the gold layer",
       "quantized embeddings",
       "the served tables",
       "the working set",
       "full-precision embeddings",
       "the backups",
       "the app's cache"
      ],
      "description": ""
     },
     "count_before": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "count_after": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "at": {
      "type": "string",
      "format": "time",
      "description": ""
     }
    },
    "required": [
     "place",
     "count_before",
     "count_after",
     "at"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "04 §5; SR-0436"
   },
   "MethodsInput": {
    "title": "MethodsInput",
    "description": "a question to find methods for, or nothing for every method",
    "type": "object",
    "properties": {
     "question": {
      "type": "string",
      "format": "text",
      "description": ""
     }
    },
    "required": [],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "14 §3"
   },
   "LocalInput": {
    "title": "LocalInput",
    "description": "a question in one of the ask tools' owning types, over the files the app may read",
    "type": "object",
    "properties": {
     "tool": {
      "type": "string",
      "format": "text",
      "description": "an ask tool"
     },
     "input": {
      "description": "the serialisation of that tool's input"
     }
    },
    "required": [
     "tool",
     "input"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "MODELS/the-outside-agent-path §4"
   },
   "Consent": {
    "title": "Consent",
    "description": "consent given, with its evidence; a later fact ends it",
    "type": "object",
    "properties": {
     "subject": {
      "type": "string",
      "format": "id",
      "description": "the person or the tenant"
     },
     "use": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "how": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "evidence": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "id"
      },
      "description": ""
     },
     "withdrawn": {
      "type": "boolean",
      "format": "bool",
      "description": ""
     }
    },
    "required": [
     "subject",
     "use",
     "how",
     "evidence",
     "withdrawn"
    ],
    "additionalProperties": false,
    "x-kind": "fact",
    "x-scope": "tenant",
    "x-store": "postgres",
    "x-key": "the person or tenant, the use and the moment",
    "x-places": [],
    "x-from": "03 §2.2"
   },
   "DesignAxis": {
    "title": "DesignAxis",
    "description": "one axis a design system varies along, with its options; a coordinate names one option of every axis; a new axis is a row",
    "type": "object",
    "properties": {
     "name": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "what": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "options": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "text"
      },
      "description": ""
     },
     "default": {
      "type": "string",
      "format": "text",
      "description": ""
     }
    },
    "required": [
     "name",
     "what",
     "options",
     "default"
    ],
    "additionalProperties": false,
    "x-kind": "row",
    "x-scope": "platform",
    "x-store": "postgres",
    "x-key": "its name",
    "x-places": [],
    "x-from": "DESIGN/the-brand-graph-from-a-domain §5"
   },
   "UsageStatementInput": {
    "title": "UsageStatementInput",
    "description": "the period of a usage statement",
    "type": "object",
    "properties": {
     "period": {
      "$ref": "#/components/schemas/Window",
      "description": ""
     }
    },
    "required": [
     "period"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "19 §3"
   },
   "CacheInput": {
    "title": "CacheInput",
    "description": "nothing, or a call to forget",
    "type": "object",
    "properties": {
     "forget": {
      "type": "string",
      "format": "text",
      "description": "the call name and its input hash"
     }
    },
    "required": [],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "MODELS/the-outside-agent-path §7"
   },
   "MeteredUsage": {
    "title": "MeteredUsage",
    "description": "one row per metered call, written by the metering middleware in the same unit of work as the call; a call whose row cannot be written does not complete",
    "type": "object",
    "properties": {
     "kind": {
      "type": "string",
      "description": "",
      "x-register": "KindOfUsage"
     },
     "quantity": {
      "type": "integer",
      "format": "count",
      "description": "in the kind's unit"
     },
     "cost": {
      "$ref": "#/components/schemas/Cost",
      "description": "with its basis"
     },
     "caller": {
      "$ref": "#/components/schemas/Caller",
      "description": "read from the telemetry context, never from an argument"
     },
     "scope": {
      "$ref": "#/components/schemas/Scope",
      "description": "the tenant, brand or strategy"
     },
     "grant": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "work_key": {
      "type": "string",
      "format": "text",
      "description": "the job's, the move's or the turn's key"
     },
     "trace_id": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "provider": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "at": {
      "type": "string",
      "format": "time",
      "description": ""
     }
    },
    "required": [
     "kind",
     "quantity",
     "cost",
     "caller",
     "scope",
     "work_key",
     "trace_id",
     "at"
    ],
    "additionalProperties": false,
    "x-kind": "fact",
    "x-scope": "follows",
    "x-store": "postgres+lake",
    "x-key": "the call's key and the kind",
    "x-places": [],
    "x-from": "19 §2; D-72"
   },
   "MarketTwinState": {
    "title": "MarketTwinState",
    "description": "the state of a twin at one step of one simulation: the level of every stock, so the twin's trajectory is facts in gold and never a rebuild",
    "type": "object",
    "properties": {
     "twin": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "simulation": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "step": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "at": {
      "type": "string",
      "format": "time",
      "description": ""
     },
     "levels": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/StockLevel"
      },
      "description": ""
     }
    },
    "required": [
     "twin",
     "simulation",
     "step",
     "at",
     "levels"
    ],
    "additionalProperties": false,
    "x-kind": "fact",
    "x-scope": "brand",
    "x-store": "postgres+lake",
    "x-key": "the twin, the step and the time",
    "x-places": [],
    "x-from": "26 §2.1"
   },
   "UndoInput": {
    "title": "UndoInput",
    "description": "an action to undo",
    "type": "object",
    "properties": {
     "action": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "reason": {
      "type": "string",
      "format": "text",
      "description": ""
     }
    },
    "required": [
     "action",
     "reason"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "13 §3"
   },
   "ConnectorsInput": {
    "title": "ConnectorsInput",
    "description": "a tenant or a brand",
    "type": "object",
    "properties": {
     "tenant": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "brand": {
      "type": "string",
      "format": "id",
      "description": ""
     }
    },
    "required": [],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "07 §3"
   },
   "ServerInfo": {
    "title": "ServerInfo",
    "description": "what the app server returns in the handshake: its user agent, the protocol version, the contract hash and its capabilities",
    "type": "object",
    "properties": {
     "user_agent": {
      "type": "string",
      "format": "text",
      "description": "the platform's name and its version with the commit as build metadata, scale-intelligence/0.1.1+abc1234"
     },
     "protocol_version": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "contract_hash": {
      "type": "string",
      "format": "hash",
      "description": ""
     },
     "release": {
      "$ref": "#/components/schemas/ReleaseStamp",
      "description": "the release the server runs, so a client can show it and a report can name it"
     },
     "capabilities": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "text"
      },
      "description": ""
     }
    },
    "required": [
     "user_agent",
     "protocol_version",
     "contract_hash",
     "release",
     "capabilities"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "09 §2.2"
   },
   "PairingReading": {
    "title": "PairingReading",
    "description": "one pairing and the units that lack their pair",
    "type": "object",
    "properties": {
     "pairing": {
      "$ref": "#/components/schemas/Pairing",
      "description": ""
     },
     "lacking": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/UnitRef"
      },
      "description": ""
     },
     "count": {
      "type": "integer",
      "format": "count",
      "description": ""
     }
    },
    "required": [
     "pairing",
     "lacking",
     "count"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "11 §3"
   },
   "CacheView": {
    "title": "CacheView",
    "description": "what the app holds from earlier answers",
    "type": "object",
    "properties": {
     "entries": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/CacheEntry"
      },
      "description": ""
     }
    },
    "required": [
     "entries"
    ],
    "additionalProperties": false,
    "x-kind": "view",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "MODELS/the-outside-agent-path §7"
   },
   "ProxyBasket": {
    "title": "ProxyBasket",
    "description": "a named, versioned list of proxies with its scope, read together over a subject, a set or groups",
    "type": "object",
    "properties": {
     "name": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "proxies": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "id"
      },
      "description": "by version"
     },
     "scope": {
      "$ref": "#/components/schemas/Scope",
      "description": ""
     },
     "version": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "compound_calibration": {
      "$ref": "#/components/schemas/Calibration",
      "description": "the basket's proxies compounded, its own row"
     }
    },
    "required": [
     "name",
     "proxies",
     "scope",
     "version"
    ],
    "additionalProperties": false,
    "x-kind": "definition",
    "x-scope": "follows",
    "x-store": "postgres",
    "x-key": "its name and version",
    "x-places": [],
    "x-from": "06 §2.5"
   },
   "FileTransfer": {
    "title": "FileTransfer",
    "description": "progress by bytes moved of bytes in all, then the path or the pointer",
    "type": "object",
    "properties": {
     "progress": {
      "$ref": "#/components/schemas/Progress",
      "description": ""
     },
     "path": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "pointer": {
      "type": "string",
      "format": "id",
      "description": ""
     }
    },
    "required": [
     "progress"
    ],
    "additionalProperties": false,
    "x-kind": "view",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "MODELS/the-outside-agent-path §7"
   },
   "PolicyReplay": {
    "title": "PolicyReplay",
    "description": "a policy replayed on the history before it changes anything",
    "type": "object",
    "properties": {
     "policy": {
      "type": "string",
      "description": "",
      "x-register": "Policy"
     },
     "strategy": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "window": {
      "$ref": "#/components/schemas/Window",
      "description": ""
     },
     "rows": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/PolicyReplayRow"
      },
      "description": ""
     },
     "agreed": {
      "type": "integer",
      "format": "count",
      "description": "decisions where the replayed policy chose the same"
     },
     "differed": {
      "type": "integer",
      "format": "count",
      "description": ""
     }
    },
    "required": [
     "policy",
     "strategy",
     "window",
     "rows",
     "agreed",
     "differed"
    ],
    "additionalProperties": false,
    "x-kind": "view",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "13 §3"
   },
   "BrandStep": {
    "title": "BrandStep",
    "description": "one step of spacing or one radius",
    "type": "object",
    "properties": {
     "px": {
      "type": "number",
      "format": "number",
      "description": ""
     },
     "uses": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "basis": {
      "$ref": "#/components/schemas/Basis",
      "description": ""
     },
     "from": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "hash"
      },
      "description": ""
     }
    },
    "required": [
     "px",
     "uses",
     "basis",
     "from"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "DESIGN/the-brand-graph-from-a-domain §5"
   },
   "Cadence": {
    "title": "Cadence",
    "description": "when the host reads, within politeness; set only by a demand statement",
    "type": "object",
    "properties": {
     "way": {
      "type": "string",
      "description": "",
      "x-register": "AccessMethod"
     },
     "every": {
      "type": "string",
      "format": "duration",
      "description": ""
     },
     "term": {
      "$ref": "#/components/schemas/Window",
      "description": ""
     },
     "state": {
      "$ref": "#/components/schemas/Readiness",
      "description": ""
     }
    },
    "required": [
     "way",
     "every",
     "term",
     "state"
    ],
    "additionalProperties": false,
    "x-kind": "definition",
    "x-scope": "platform",
    "x-store": "acquisition",
    "x-key": "the source and the way",
    "x-places": [],
    "x-from": "07 §2.3"
   },
   "ProposeMoveInput": {
    "title": "ProposeMoveInput",
    "description": "a play and the catch, or the play's schedule",
    "type": "object",
    "properties": {
     "play": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "catch": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "strategy": {
      "type": "string",
      "format": "id",
      "description": ""
     }
    },
    "required": [
     "play",
     "strategy"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "13 §3"
   },
   "EconomicReading": {
    "title": "EconomicReading",
    "description": "a number about a buyer profile that is not a count of members, in exactly one of three positions: a summary measured, an estimate with its interval, or a parameter stipulated",
    "type": "object",
    "properties": {
     "measure": {
      "type": "string",
      "description": "",
      "x-register": "KindOfMeasure"
     },
     "value": {
      "$ref": "#/components/schemas/NumberInPosition",
      "description": "in exactly one of the three positions"
     }
    },
    "required": [
     "measure",
     "value"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "12 §2.4"
   },
   "RestoreDrill": {
    "title": "RestoreDrill",
    "description": "a backup restored into a throwaway target, with the time it took and the count that must match",
    "type": "object",
    "properties": {
     "backup": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "took": {
      "type": "string",
      "format": "duration",
      "description": ""
     },
     "count_expected": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "count_read": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "rows_hash_matched": {
      "type": "boolean",
      "format": "bool",
      "description": ""
     }
    },
    "required": [
     "backup",
     "took",
     "count_expected",
     "count_read",
     "rows_hash_matched"
    ],
    "additionalProperties": false,
    "x-kind": "work",
    "x-scope": "platform",
    "x-store": "postgres",
    "x-key": "the backup and the beat",
    "x-places": [
     "asked",
     "restoring",
     "proved",
     "failed"
    ],
    "x-from": "19 §2.1"
   },
   "SourceField": {
    "title": "SourceField",
    "description": "a field of a source object",
    "type": "object",
    "properties": {
     "name": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "type": {
      "type": "string",
      "enum": [
       "text",
       "count",
       "number",
       "money",
       "share",
       "chance",
       "time",
       "date",
       "duration",
       "bool",
       "hash",
       "id",
       "json",
       "address",
       "bytes",
       "free-form"
      ],
      "description": "one of the register's primitives, or free-form for what lands in the payload"
     },
     "required": {
      "type": "boolean",
      "format": "bool",
      "description": ""
     },
     "code_system": {
      "type": "string",
      "format": "text",
      "description": "the registered code system a coded field's value belongs to, so a mapping resolves it to a code"
     },
     "declared": {
      "type": "string",
      "format": "text",
      "description": "the source's own description of the field, in its words, when it has one"
     },
     "path": {
      "type": "string",
      "format": "text",
      "description": "where in the artefact's record the field is read when it is not a key of the record: a key, a.b for a nested field, list[key=value].field for an item of a list of named pairs, or literal:<value> for a value the object declares itself"
     }
    },
    "required": [
     "name",
     "type",
     "required"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "07 §2.1"
   },
   "SimulationRun": {
    "title": "SimulationRun",
    "description": "the one evaluator run over sampled inputs to give a frame its intervals; deterministic under its seed; stops at its budget with the interval it reached",
    "type": "object",
    "properties": {
     "business_model": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "model_version": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "inputs_hash": {
      "type": "string",
      "format": "hash",
      "description": ""
     },
     "samples": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "seed": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "level": {
      "type": "number",
      "format": "share",
      "description": "the level of the intervals reported"
     },
     "outputs": {
      "type": "object",
      "additionalProperties": {},
      "description": "each output as an Interval, by name"
     },
     "elapsed_ms": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "reason": {
      "type": "string",
      "format": "text",
      "description": "why it stopped early or failed"
     }
    },
    "required": [
     "business_model",
     "model_version",
     "inputs_hash",
     "samples",
     "seed",
     "level"
    ],
    "additionalProperties": false,
    "x-kind": "work",
    "x-scope": "platform",
    "x-store": "postgres",
    "x-key": "the model version, the inputs hash and the sample count",
    "x-places": [
     "queued",
     "sampling",
     "done",
     "failed"
    ],
    "x-from": "25 §2.1"
   },
   "BindBuyerAnswer": {
    "title": "BindBuyerAnswer",
    "description": "the binding, and the preview of the kind's members",
    "type": "object",
    "properties": {
     "kind_of_buyer": {
      "$ref": "#/components/schemas/KindOfBuyer",
      "description": ""
     },
     "preview": {
      "$ref": "#/components/schemas/PreviewAnswer",
      "description": ""
     }
    },
    "required": [
     "kind_of_buyer",
     "preview"
    ],
    "additionalProperties": false,
    "x-kind": "view",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "12 §3"
   },
   "SourceJoin": {
    "title": "SourceJoin",
    "description": "one join from a table of a read artefact to another source, by an identifier",
    "type": "object",
    "properties": {
     "left": {
      "type": "string",
      "format": "text",
      "description": "the source, schema, table and column on this side"
     },
     "right": {
      "type": "string",
      "format": "text",
      "description": "the source, schema, table and column on the other side"
     },
     "identifier_kind": {
      "type": "string",
      "format": "text",
      "description": "the kind of identifier the join is on, where the reading names it"
     },
     "basis": {
      "type": "string",
      "format": "text",
      "description": "how the join is known: inferred from the column names, stated by the generator, or measured"
     }
    },
    "required": [
     "left",
     "right",
     "basis"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "18 §2.25"
   },
   "KindOfEntity": {
    "title": "KindOfEntity",
    "description": "a kind of entity, with its keys in order of trust and what may never be merged",
    "type": "object",
    "properties": {
     "name": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "keys": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/KeyRank"
      },
      "description": "most authoritative first"
     },
     "never_merged": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "text"
      },
      "description": "a law, as rows"
     },
     "parent_kind": {
      "type": "string",
      "description": "",
      "x-register": "KindOfEntity"
     },
     "kept_once": {
      "type": "boolean",
      "format": "bool",
      "description": "or a tenant's"
     },
     "core_set": {
      "type": "boolean",
      "format": "bool",
      "description": ""
     }
    },
    "required": [
     "name",
     "keys",
     "never_merged",
     "kept_once",
     "core_set"
    ],
    "additionalProperties": false,
    "x-kind": "row",
    "x-scope": "platform",
    "x-store": "postgres",
    "x-key": "its name",
    "x-places": [],
    "x-from": "05 §2.1"
   },
   "KeepProxyInput": {
    "title": "KeepProxyInput",
    "description": "a proxy to keep",
    "type": "object",
    "properties": {
     "proxy": {
      "$ref": "#/components/schemas/Proxy",
      "description": ""
     }
    },
    "required": [
     "proxy"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "06 §3"
   },
   "MentionKind": {
    "title": "MentionKind",
    "description": "what kind of thing a page's property names, so the grounding knows a page's author is an account and its employer a company: one row per property, for every platform or the ones listed; a template's field whose type names a kind of entity overrides it, and the person's settled words on each property and platform are read as its priors",
    "type": "object",
    "properties": {
     "property": {
      "type": "string",
      "format": "text",
      "description": "the property's name as the templates write it"
     },
     "kind": {
      "type": "string",
      "description": "",
      "x-register": "KindOfEntity"
     },
     "platforms": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "text"
      },
      "description": "empty for every platform"
     },
     "note": {
      "type": "string",
      "format": "text",
      "description": ""
     }
    },
    "required": [
     "property",
     "kind",
     "platforms"
    ],
    "additionalProperties": false,
    "x-kind": "row",
    "x-scope": "platform",
    "x-store": "postgres",
    "x-key": "the property and the platforms",
    "x-places": [],
    "x-from": "24 §2.7"
   },
   "Coverage": {
    "title": "Coverage",
    "description": "what has been read, when and how deep, in three positions, each reading naming its basis",
    "type": "object",
    "properties": {
     "cell": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "scope": {
      "$ref": "#/components/schemas/Predicate",
      "description": ""
     },
     "window": {
      "$ref": "#/components/schemas/Window",
      "description": ""
     },
     "readings": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/CoverageReading"
      },
      "description": ""
     },
     "gaps": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/CoverageGap"
      },
      "description": ""
     }
    },
    "required": [
     "window",
     "readings",
     "gaps"
    ],
    "additionalProperties": false,
    "x-kind": "view",
    "x-scope": "none",
    "x-store": "derived",
    "x-key": "a cell, or a scope with a window",
    "x-places": [],
    "x-from": "07 §2.3"
   },
   "Memory": {
    "title": "Memory",
    "description": "a decision, a preference, a correction or a standing instruction, at strategy or user scope; never a permission",
    "type": "object",
    "properties": {
     "kind": {
      "type": "string",
      "enum": [
       "a decision",
       "a preference",
       "a correction",
       "a standing instruction"
      ],
      "description": ""
     },
     "text": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "scope": {
      "$ref": "#/components/schemas/Scope",
      "description": ""
     },
     "ended_by": {
      "type": "string",
      "format": "id",
      "description": "a later fact that ends it"
     }
    },
    "required": [
     "kind",
     "text",
     "scope"
    ],
    "additionalProperties": false,
    "x-kind": "fact",
    "x-scope": "follows",
    "x-store": "postgres",
    "x-key": "its scope and the moment",
    "x-places": [],
    "x-from": "09 §2"
   },
   "Lead": {
    "title": "Lead",
    "description": "a candidate that reached the qualifying rung, delivered under the plan's limit or withheld",
    "type": "object",
    "properties": {
     "entity": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "person": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "company": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "brand": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "kind_of_buyer": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "candidate": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "rung": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "definition_versions": {
      "type": "object",
      "additionalProperties": {
       "type": "integer",
       "format": "count"
      },
      "description": "of every definition that made it"
     },
     "temperature": {
      "type": "string",
      "enum": [
       "hot",
       "warm",
       "cold"
      ],
      "description": "never typed by hand"
     },
     "temperature_reason": {
      "type": "string",
      "format": "text",
      "description": "the observation and its age, or the rung"
     },
     "sentence": {
      "type": "string",
      "format": "id",
      "description": "the observation it walks back to"
     },
     "delivered_at": {
      "type": "string",
      "format": "time",
      "description": ""
     },
     "withheld": {
      "$ref": "#/components/schemas/WithheldReason",
      "description": ""
     },
     "assigned_to": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "outcome": {
      "type": "string",
      "format": "id",
      "description": ""
     }
    },
    "required": [
     "entity",
     "brand",
     "kind_of_buyer",
     "candidate",
     "rung",
     "definition_versions",
     "temperature",
     "sentence"
    ],
    "additionalProperties": false,
    "x-kind": "work",
    "x-scope": "brand",
    "x-store": "postgres",
    "x-key": "the entity, the brand and the rung that qualified it",
    "x-places": [
     "withheld at the plan's limit",
     "delivered and unassigned",
     "waiting to be assigned",
     "assigned and untouched",
     "in conversation",
     "won",
     "lost",
     "gone quiet"
    ],
    "x-from": "08 §2"
   },
   "PairingsAnswer": {
    "title": "PairingsAnswer",
    "description": "each pairing, with the units that lack their pair",
    "type": "object",
    "properties": {
     "pairings": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/PairingReading"
      },
      "description": ""
     }
    },
    "required": [
     "pairings"
    ],
    "additionalProperties": false,
    "x-kind": "view",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "11 §3"
   },
   "ProxyPolicy": {
    "title": "ProxyPolicy",
    "description": "how one way routes: which pool kind, whether the exit sticks to the held identity, the country, and which failure classes rotate the exit",
    "type": "object",
    "properties": {
     "pool_kind": {
      "type": "string",
      "enum": [
       "none",
       "datacenter",
       "residential",
       "ISP",
       "mobile",
       "the person's machine"
      ],
      "description": ""
     },
     "sticky_to_identity": {
      "type": "boolean",
      "format": "bool",
      "description": "a signed-in identity keeps one exit"
     },
     "country": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "rotate_on": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "text"
      },
      "description": "failure classes"
     }
    },
    "required": [
     "pool_kind",
     "sticky_to_identity",
     "rotate_on"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "18 §2.4"
   },
   "ArgumentDeclaration": {
    "title": "ArgumentDeclaration",
    "description": "one argument of a kind of action, and where its value may come from",
    "type": "object",
    "properties": {
     "name": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "type": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "may_come_from": {
      "type": "string",
      "enum": [
       "the record by id",
       "a definition",
       "a person's own words",
       "a model's answer never"
      ],
      "description": ""
     }
    },
    "required": [
     "name",
     "type",
     "may_come_from"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "13 §2.1; D-42"
   },
   "Benchmark": {
    "title": "Benchmark",
    "description": "a published or platform-derived number for a value driver over a stated population and period, with its interval and the rights its source allows; never read by an estimate without all four",
    "type": "object",
    "properties": {
     "driver": {
      "type": "string",
      "description": "",
      "x-register": "KindOfMeasure"
     },
     "value": {
      "$ref": "#/components/schemas/Interval",
      "description": "the point with its interval at its level; a point alone carries lower and upper equal to it and says so in the basis"
     },
     "population": {
      "$ref": "#/components/schemas/BenchmarkPopulation",
      "description": ""
     },
     "period": {
      "$ref": "#/components/schemas/Window",
      "description": "the period the number is about"
     },
     "applies_to": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/UnitRef"
      },
      "description": "the buyer profiles, segments or verticals it applies to"
     },
     "study": {
      "type": "string",
      "format": "text",
      "description": "the study or dataset, as its publisher names it"
     },
     "publisher": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "url": {
      "type": "string",
      "format": "address",
      "description": ""
     },
     "terms": {
      "$ref": "#/components/schemas/Rights",
      "description": "what the source allows: quote, redistribute, use in a product, as the rights row states"
     }
    },
    "required": [
     "driver",
     "value",
     "population",
     "period",
     "applies_to",
     "study",
     "publisher",
     "terms"
    ],
    "additionalProperties": false,
    "x-kind": "fact",
    "x-scope": "shared",
    "x-store": "lake:ready",
    "x-key": "its driver, its population, its period and its source",
    "x-places": [],
    "x-from": "25 §2.1"
   },
   "PopulationStatement": {
    "title": "PopulationStatement",
    "description": "the required statement of the population an answer was read over",
    "type": "object",
    "properties": {
     "store": {
      "type": "string",
      "enum": [
       "the working set",
       "the refined layer",
       "the whole record",
       "a served table"
      ],
      "description": ""
     },
     "window": {
      "$ref": "#/components/schemas/Window",
      "description": ""
     },
     "units_in": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "units_scanned": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "channels": {
      "type": "array",
      "items": {
       "type": "string",
       "description": "the name of a row of Source",
       "x-register": "Source"
      },
      "description": "every channel of the tenant"
     }
    },
    "required": [
     "store",
     "window",
     "units_in",
     "units_scanned",
     "channels"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "06 §2.3"
   },
   "SilverTable": {
    "title": "SilverTable",
    "description": "the silver table of one source object: the shared header, the source object's declared fields as typed columns, and the layout rule its key chooses",
    "type": "object",
    "properties": {
     "source_object": {
      "type": "string",
      "description": "",
      "x-register": "SourceObject"
     },
     "name": {
      "type": "string",
      "format": "text",
      "description": "layer, source and object, one convention"
     },
     "columns": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/Column"
      },
      "description": "the header's columns and then the declared fields, typed, each with its version"
     },
     "layout": {
      "type": "string",
      "enum": [
       "by day",
       "by entity bucket"
      ],
      "description": "chosen by the key, never by hand"
     },
     "key_field": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "text"
      },
      "description": "the ordered keys the layout follows; a table read from both ends declares both, and the writer keeps one copy under each"
     },
     "version": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "state": {
      "$ref": "#/components/schemas/Readiness",
      "description": "not ready when a declared field has no column"
     }
    },
    "required": [
     "source_object",
     "name",
     "columns",
     "layout",
     "key_field",
     "version",
     "state"
    ],
    "additionalProperties": false,
    "x-kind": "definition",
    "x-scope": "platform",
    "x-store": "postgres",
    "x-key": "the source object and its version",
    "x-places": [],
    "x-from": "18 §2.12"
   },
   "ReadSourceInput": {
    "title": "ReadSourceInput",
    "description": "run one kind of reading of an installed connector from a cursor",
    "type": "object",
    "properties": {
     "installed_connector": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "kind_of_reading": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "cursor": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "credit_cells": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "id"
      },
      "description": ""
     }
    },
    "required": [
     "installed_connector",
     "kind_of_reading"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "18 §3"
   },
   "SignalStrength": {
    "title": "SignalStrength",
    "description": "coverage, freshness at the tenth percentile, precision where truth is known, and independent corroboration",
    "type": "object",
    "properties": {
     "coverage": {
      "type": "number",
      "format": "share",
      "description": ""
     },
     "freshness_p10": {
      "type": "string",
      "format": "duration",
      "description": ""
     },
     "precision": {
      "type": "number",
      "format": "share",
      "description": "where truth is known"
     },
     "corroboration": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "population": {
      "$ref": "#/components/schemas/PopulationStatement",
      "description": ""
     }
    },
    "required": [
     "corroboration",
     "population"
    ],
    "additionalProperties": false,
    "x-kind": "view",
    "x-scope": "none",
    "x-store": "derived",
    "x-key": "read and never stored as one number",
    "x-places": [],
    "x-from": "06 §2.2"
   },
   "Proof": {
    "title": "Proof",
    "description": "one arm of the four run on a draft: what was planted and what the check read",
    "type": "object",
    "properties": {
     "draft": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "arm": {
      "type": "string",
      "enum": [
       "the planted fault",
       "the known member",
       "the empty population",
       "the member placed where the enumerator does not look"
      ],
      "description": ""
     },
     "planted": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "read": {
      "type": "string",
      "format": "text",
      "description": ""
     }
    },
    "required": [
     "draft",
     "arm",
     "planted"
    ],
    "additionalProperties": false,
    "x-kind": "work",
    "x-scope": "follows",
    "x-store": "postgres",
    "x-key": "the draft and the arm",
    "x-places": [
     "asked",
     "red",
     "green",
     "not run"
    ],
    "x-from": "16 §2.1"
   },
   "StageState": {
    "title": "StageState",
    "description": "one stage of the build as the view shows it",
    "type": "object",
    "properties": {
     "stage": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "procedure": {
      "type": "string",
      "description": "",
      "x-register": "NamedProcedure"
     },
     "last_red": {
      "type": "string",
      "format": "time",
      "description": ""
     },
     "last_green": {
      "type": "string",
      "format": "time",
      "description": ""
     },
     "usable_by": {
      "type": "string",
      "format": "date",
      "description": ""
     }
    },
    "required": [
     "stage",
     "procedure"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "11 §2; BUILD-PLAN"
   },
   "SourceId": {
    "title": "SourceId",
    "description": "an id of a source object: its namespace, whether it is stable, the field that carries it and how far it is stable",
    "type": "object",
    "properties": {
     "namespace": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "stable": {
      "type": "boolean",
      "format": "bool",
      "description": ""
     },
     "field": {
      "type": "string",
      "format": "text",
      "description": "the field of the object that carries the id; an id with no field cannot be resolved, and a mapping that needs it is not ready"
     },
     "stable_within": {
      "type": "string",
      "enum": [
       "the source",
       "one export",
       "one file",
       "one session"
      ],
      "description": "how far the id stays the same; absent until read"
     }
    },
    "required": [
     "namespace",
     "stable"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "07 §2.1"
   },
   "LocalListener": {
    "title": "LocalListener",
    "description": "one listener of the local server on a person's machine: the Unix domain socket or named pipe by default, and the TCP and WebSocket listeners when turned on, every one bound to the loopback address and never to a network interface; a caller proves itself with the install token in its first message",
    "type": "object",
    "properties": {
     "kind": {
      "type": "string",
      "enum": [
       "unix-socket",
       "named-pipe",
       "tcp",
       "websocket"
      ],
      "description": ""
     },
     "address": {
      "type": "string",
      "format": "text",
      "description": "a path, or 127.0.0.1 with a port chosen at install"
     },
     "enabled": {
      "type": "boolean",
      "format": "bool",
      "description": "the socket always; TCP and WebSocket by a setting of the app"
     },
     "install_token": {
      "$ref": "#/components/schemas/VaultEntry",
      "description": "kept in the operating system's keychain"
     },
     "bound_to_loopback_only": {
      "type": "boolean",
      "format": "bool",
      "description": "always true; a network interface fails the check"
     }
    },
    "required": [
     "kind",
     "address",
     "enabled",
     "install_token",
     "bound_to_loopback_only"
    ],
    "additionalProperties": false,
    "x-kind": "definition",
    "x-scope": "user",
    "x-store": "postgres",
    "x-key": "the app's install and the kind",
    "x-places": [],
    "x-from": "21 §2.4; MODELS/the-outside-agent-path §4"
   },
   "Facet": {
    "title": "Facet",
    "description": "a proxy of the membership engine built by one procedure, with its four views",
    "type": "object",
    "properties": {
     "proxy": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "seed": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "candidates": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/FacetCandidate"
      },
      "description": "each saying which way found it"
     },
     "bar": {
      "type": "number",
      "format": "number",
      "description": "in lift units, set from both sides: a room is kept when the lower bound of its share, over the seed's base rate, is at or over it; never under one, which is chance"
     },
     "base_rate": {
      "type": "number",
      "format": "share",
      "description": "the share of everyone active in the window who is the seed's people: the chance a room's share is measured against"
     },
     "negative_controls": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/ControlResult"
      },
      "description": ""
     },
     "positive_controls": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/ControlResult"
      },
      "description": ""
     },
     "gazetteer": {
      "type": "string",
      "format": "id",
      "description": "for a place facet"
     },
     "scope": {
      "$ref": "#/components/schemas/Scope",
      "description": "the scope the facet was built at and its memberships land in: shared for a buyers' facet that every tenant reads, built by the platform's own tenant; tenant for a tenant's own facet"
     }
    },
    "required": [
     "proxy",
     "seed",
     "candidates",
     "bar",
     "negative_controls",
     "positive_controls",
     "scope"
    ],
    "additionalProperties": false,
    "x-kind": "definition",
    "x-scope": "follows",
    "x-store": "postgres",
    "x-key": "the proxy it is",
    "x-places": [],
    "x-from": "06 §2.1; MODELS/the-hypergraph §5"
   },
   "Receipt": {
    "title": "Receipt",
    "description": "when each role restarted and published ready, the readings the procedure took, and who cut the tag",
    "type": "object",
    "properties": {
     "release": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "roles_ready": {
      "type": "object",
      "additionalProperties": {
       "type": "string",
       "format": "time"
      },
      "description": ""
     },
     "readings": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/ChippedNumber"
      },
      "description": ""
     },
     "cut_by": {
      "$ref": "#/components/schemas/Caller",
      "description": ""
     },
     "change_to_receipt": {
      "type": "string",
      "format": "duration",
      "description": ""
     }
    },
    "required": [
     "release",
     "roles_ready",
     "readings",
     "cut_by",
     "change_to_receipt"
    ],
    "additionalProperties": false,
    "x-kind": "fact",
    "x-scope": "platform",
    "x-store": "postgres",
    "x-key": "the release",
    "x-places": [],
    "x-from": "20 §2.1"
   },
   "ConnectionMember": {
    "title": "ConnectionMember",
    "description": "one member of a connection, with its role",
    "type": "object",
    "properties": {
     "unit": {
      "type": "string",
      "format": "id",
      "description": "an entity, or a connection"
     },
     "role": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "weight": {
      "type": "integer",
      "format": "count",
      "description": "the membership's weight in whole millionths (SR-0437)"
     }
    },
    "required": [
     "unit",
     "role"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "04 §2.2"
   },
   "AudienceMapInput": {
    "title": "AudienceMapInput",
    "description": "a brand, two facets or a facet and a community, the window",
    "type": "object",
    "properties": {
     "brand": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "first": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "second": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "window": {
      "$ref": "#/components/schemas/Window",
      "description": ""
     },
     "adult": {
      "type": "boolean",
      "format": "bool",
      "description": "when true, the rooms marked adult count in the crossing; left out by default (D-128)"
     }
    },
    "required": [
     "brand",
     "first",
     "second",
     "window"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "12 §3"
   },
   "EffectInput": {
    "title": "EffectInput",
    "description": "a move and the window",
    "type": "object",
    "properties": {
     "move": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "window": {
      "$ref": "#/components/schemas/Window",
      "description": ""
     }
    },
    "required": [
     "move"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "13 §3"
   },
   "FitBars": {
    "title": "FitBars",
    "description": "the value of the parameter row that sets the bar of fit and the level of its interval",
    "type": "object",
    "properties": {
     "bar": {
      "type": "number",
      "format": "number",
      "description": "the mean a lead must reach; a required criterion must reach it and a disqualifying one must stay under one minus it"
     },
     "level": {
      "type": "number",
      "format": "number",
      "description": "the interval's level"
     }
    },
    "required": [
     "bar",
     "level"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "08 §2.2; MODELS/the-fit-of-a-buyer-and-the-package-of-a-lead"
   },
   "MarkLeadInput": {
    "title": "MarkLeadInput",
    "description": "the lead, the condition, and a reason where the condition asks for one",
    "type": "object",
    "properties": {
     "lead": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "condition": {
      "type": "string",
      "description": "",
      "x-register": "LeadCondition"
     },
     "reason": {
      "type": "string",
      "format": "text",
      "description": ""
     }
    },
    "required": [
     "lead",
     "condition"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "08 §3"
   },
   "ReportSection": {
    "title": "ReportSection",
    "description": "one section of a report's recipe: its heading, the method it runs, the words of its audience and its figure",
    "type": "object",
    "properties": {
     "heading": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "method": {
      "type": "string",
      "format": "id",
      "description": "a method of the library"
     },
     "words": {
      "type": "string",
      "format": "text",
      "description": "the audience's register"
     },
     "figure": {
      "$ref": "#/components/schemas/Figure",
      "description": ""
     }
    },
    "required": [
     "heading",
     "method",
     "words"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "17 §2.4"
   },
   "BrandColour": {
    "title": "BrandColour",
    "description": "one colour of a brand's site, as one hex value, with where it was read and how well founded it is",
    "type": "object",
    "properties": {
     "role": {
      "type": "string",
      "enum": [
       "surface",
       "ink",
       "accent",
       "rule",
       "declared"
      ],
      "description": "a role when the value is one of the four, else a colour the site declares"
     },
     "value": {
      "type": "string",
      "format": "text",
      "description": "the colour as #rrggbb or #rrggbbaa"
     },
     "polarity": {
      "type": "string",
      "enum": [
       "light",
       "dark"
      ],
      "description": ""
     },
     "uses": {
      "type": "integer",
      "format": "count",
      "description": "the declarations that carry it"
     },
     "properties": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "text"
      },
      "description": "the properties it was declared in"
     },
     "basis": {
      "$ref": "#/components/schemas/Basis",
      "description": ""
     },
     "from": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "hash"
      },
      "description": "the artefacts it was read from"
     }
    },
    "required": [
     "role",
     "value",
     "polarity",
     "uses",
     "properties",
     "basis",
     "from"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "DESIGN/the-brand-graph-from-a-domain §5"
   },
   "SegmentOfAVertical": {
    "title": "SegmentOfAVertical",
    "description": "the slice of a vertical a brand sells to, with its template",
    "type": "object",
    "properties": {
     "vertical": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "name": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "what": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "evidence_that_makes_an_account_relevant": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "people_to_establish_separately": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "help_before_a_sale": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "template": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "offering_situation": {
      "type": "string",
      "format": "text",
      "description": "what is bought, in the segment's own words"
     },
     "decision_problem": {
      "type": "string",
      "format": "text",
      "description": "the decision a buyer in it faces"
     },
     "occupants": {
      "type": "object",
      "additionalProperties": {
       "type": "string",
       "format": "text"
      },
      "description": "keyed by a role of the register of roles: who holds each role around the decision in this segment, in words: the payer, the budget holder, the evaluator, the user, the referrer, the rule setter, the community, the supply actor"
     },
     "chain_change": {
      "type": "string",
      "format": "text",
      "description": "what is changing in its chain"
     },
     "proxies": {
      "type": "array",
      "items": {
       "type": "string",
       "description": "the name of a row of Proxy",
       "x-register": "Proxy"
      },
      "description": "the proxies whose memberships make an account relevant to this segment; absent until bound"
     },
     "eligible": {
      "$ref": "#/components/schemas/Predicate",
      "description": "the population an account must be in before the proxies are read; absent until bound"
     }
    },
    "required": [
     "vertical",
     "name",
     "what",
     "evidence_that_makes_an_account_relevant",
     "people_to_establish_separately",
     "help_before_a_sale"
    ],
    "additionalProperties": false,
    "x-kind": "definition",
    "x-scope": "platform",
    "x-store": "postgres",
    "x-key": "the vertical and its name",
    "x-places": [],
    "x-from": "12 §2.1"
   },
   "PublishingReceipt": {
    "title": "PublishingReceipt",
    "description": "the version, when, and the readings it carried",
    "type": "object",
    "properties": {
     "version": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "at": {
      "type": "string",
      "format": "time",
      "description": ""
     },
     "readings": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/ChippedNumber"
      },
      "description": ""
     }
    },
    "required": [
     "version",
     "at",
     "readings"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "17 §2.1"
   },
   "Motive": {
    "title": "Motive",
    "description": "one motive of a buyer profile or a router: its kind, its text and its evidence",
    "type": "object",
    "properties": {
     "kind": {
      "type": "string",
      "description": "",
      "x-register": "KindOfMotive"
     },
     "text": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "evidence": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/EvidenceRef"
      },
      "description": "a motive with no evidence is a claim under test"
     }
    },
    "required": [
     "kind",
     "text",
     "evidence"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "12 §2.4"
   },
   "BrandElement": {
    "title": "BrandElement",
    "description": "one element of the brand by kind, the old layer's element kinds kept",
    "type": "object",
    "properties": {
     "kind": {
      "type": "string",
      "enum": [
       "logo",
       "icon",
       "mark",
       "texture",
       "illustration",
       "imagery",
       "photo",
       "shape"
      ],
      "description": ""
     },
     "address": {
      "type": "string",
      "format": "address",
      "description": ""
     },
     "artefact": {
      "type": "string",
      "format": "hash",
      "description": "the held file"
     },
     "basis": {
      "$ref": "#/components/schemas/Basis",
      "description": ""
     },
     "from": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "hash"
      },
      "description": ""
     }
    },
    "required": [
     "kind",
     "basis",
     "from"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "DESIGN/the-brand-graph-from-a-domain §5"
   },
   "MarketEvent": {
    "title": "MarketEvent",
    "description": "something that happened to an entity in the market",
    "type": "object",
    "properties": {
     "entity": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "kind": {
      "type": "string",
      "description": "",
      "x-register": "KindOfMarketEvent"
     },
     "adds": {
      "description": ""
     }
    },
    "required": [
     "entity",
     "kind"
    ],
    "additionalProperties": false,
    "x-kind": "fact",
    "x-scope": "follows",
    "x-store": "lake:ready",
    "x-key": "the entity, the kind of event and the source's own id",
    "x-places": [],
    "x-from": "04 §2.2"
   },
   "BrandTemplate": {
    "title": "BrandTemplate",
    "description": "a template of one format on one variant: the frames, their CSS from the resolved values, the motifs and elements it carries; derived by rule, and versioned with the system",
    "type": "object",
    "properties": {
     "name": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "format": {
      "type": "string",
      "enum": [
       "page",
       "deck",
       "infographic",
       "storyboard",
       "social",
       "diagram",
       "figure",
       "video"
      ],
      "description": ""
     },
     "variant": {
      "type": "string",
      "format": "text",
      "description": "the variant it stands on"
     },
     "frames": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/BrandFrame"
      },
      "description": ""
     },
     "css": {
      "type": "string",
      "format": "text",
      "description": "the frames' rules from the resolved values"
     },
     "motif_names": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "text"
      },
      "description": "the traits it expresses"
     },
     "basis": {
      "$ref": "#/components/schemas/Basis",
      "description": ""
     },
     "from": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "hash"
      },
      "description": ""
     }
    },
    "required": [
     "name",
     "format",
     "variant",
     "frames",
     "css",
     "motif_names",
     "basis",
     "from"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "DESIGN/the-brand-graph-from-a-domain §5"
   },
   "MakeMarketTwinInput": {
    "title": "MakeMarketTwinInput",
    "description": "the market and the template to instance a twin from",
    "type": "object",
    "properties": {
     "vertical": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "segment": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "brand": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "template": {
      "type": "string",
      "description": "",
      "x-register": "SystemsModelTemplate"
     },
     "way": {
      "type": "string",
      "description": "",
      "x-register": "WayOfGoingToMarket"
     },
     "as_of": {
      "type": "string",
      "format": "time",
      "description": "today when absent"
     }
    },
    "required": [
     "vertical",
     "brand",
     "template"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "26 §3"
   },
   "Window": {
    "title": "Window",
    "description": "a window at both ends",
    "type": "object",
    "properties": {
     "from": {
      "type": "string",
      "format": "time",
      "description": ""
     },
     "to": {
      "type": "string",
      "format": "time",
      "description": ""
     }
    },
    "required": [
     "from",
     "to"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "06 §2.3"
   },
   "BrandEasing": {
    "title": "BrandEasing",
    "description": "one timing function a site declares",
    "type": "object",
    "properties": {
     "value": {
      "type": "string",
      "format": "text",
      "description": "ease, linear, a cubic-bezier or steps, as declared"
     },
     "uses": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "basis": {
      "$ref": "#/components/schemas/Basis",
      "description": ""
     },
     "from": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "hash"
      },
      "description": ""
     }
    },
    "required": [
     "value",
     "uses",
     "basis",
     "from"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "DESIGN/the-brand-graph-from-a-domain §5"
   },
   "BrandBreakpoint": {
    "title": "BrandBreakpoint",
    "description": "one width a media query turns on",
    "type": "object",
    "properties": {
     "px": {
      "type": "number",
      "format": "number",
      "description": ""
     },
     "edge": {
      "type": "string",
      "enum": [
       "min",
       "max"
      ],
      "description": ""
     },
     "uses": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "basis": {
      "$ref": "#/components/schemas/Basis",
      "description": ""
     },
     "from": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "hash"
      },
      "description": ""
     }
    },
    "required": [
     "px",
     "edge",
     "uses",
     "basis",
     "from"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "DESIGN/the-brand-graph-from-a-domain §5"
   },
   "DocClaim": {
    "title": "DocClaim",
    "description": "one statement a page makes about the platform, typed live or target against the served contract",
    "type": "object",
    "properties": {
     "text": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "state": {
      "type": "string",
      "enum": [
       "live",
       "target"
      ],
      "description": ""
     },
     "cites": {
      "type": "string",
      "format": "text",
      "description": "a route or a tool id"
     },
     "checked_at": {
      "type": "string",
      "format": "time",
      "description": ""
     }
    },
    "required": [
     "text",
     "state",
     "cites",
     "checked_at"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "23 §2.1; 17 §2; SR-1708"
   },
   "UserProvidedContentKind": {
    "title": "UserProvidedContentKind",
    "description": "a kind of user-provided content, a file, a pasted list, a photo, a link: how it is read and what may join a shared entity",
    "type": "object",
    "properties": {
     "name": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "how_read": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "resolves": {
      "type": "array",
      "items": {
       "type": "string",
       "description": "the name of a row of KindOfEntity",
       "x-register": "KindOfEntity"
      },
      "description": ""
     },
     "may_join_shared": {
      "type": "boolean",
      "format": "bool",
      "description": ""
     }
    },
    "required": [
     "name",
     "how_read",
     "resolves",
     "may_join_shared"
    ],
    "additionalProperties": false,
    "x-kind": "row",
    "x-scope": "platform",
    "x-store": "postgres",
    "x-key": "its name",
    "x-places": [],
    "x-from": "07 §2.1"
   },
   "MetricReading": {
    "title": "MetricReading",
    "description": "one point of one metric",
    "type": "object",
    "properties": {
     "metric": {
      "type": "string",
      "description": "",
      "x-register": "Metric"
     },
     "labels": {
      "type": "object",
      "additionalProperties": {
       "type": "string",
       "format": "text"
      },
      "description": ""
     },
     "at": {
      "type": "string",
      "format": "time",
      "description": ""
     },
     "value": {
      "type": "number",
      "format": "share",
      "description": ""
     },
     "bucket": {
      "type": "string",
      "format": "text",
      "description": "for a histogram"
     }
    },
    "required": [
     "metric",
     "labels",
     "at",
     "value"
    ],
    "additionalProperties": false,
    "x-kind": "fact",
    "x-scope": "platform",
    "x-store": "lake:landed",
    "x-key": "the metric, the labels and the time",
    "x-places": [],
    "x-from": "22 §2.1"
   },
   "MarketTwinInput": {
    "title": "MarketTwinInput",
    "description": "the twin to read, as of a date",
    "type": "object",
    "properties": {
     "twin": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "as_of": {
      "type": "string",
      "format": "time",
      "description": ""
     }
    },
    "required": [
     "twin"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "26 §3"
   },
   "PendingCapture": {
    "title": "PendingCapture",
    "description": "a capture the extension holds until the core accepts it: keyed like the capture, with its bytes, attempts and state",
    "type": "object",
    "properties": {
     "key": {
      "type": "string",
      "format": "hash",
      "description": "the artefact's hash with the person and the time"
     },
     "scope": {
      "type": "string",
      "enum": [
       "this item",
       "this thread",
       "this channel as shown",
       "this page",
       "this meeting",
       "my outbound message"
      ],
      "description": ""
     },
     "under": {
      "type": "string",
      "enum": [
       "say-so",
       "rule"
      ],
      "description": ""
     },
     "rule": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "bytes": {
      "type": "integer",
      "format": "bytes",
      "description": ""
     },
     "attempts": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "state": {
      "type": "string",
      "enum": [
       "pending",
       "sent",
       "accepted",
       "rejected"
      ],
      "description": "the extension's own state, never a place of the record"
     },
     "reason": {
      "type": "string",
      "format": "text",
      "description": ""
     }
    },
    "required": [
     "key",
     "scope",
     "under",
     "bytes",
     "attempts",
     "state"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "24 §2.5"
   },
   "SetAsideRunInput": {
    "title": "SetAsideRunInput",
    "description": "a queued run to keep and never take up, with a person's plain reason",
    "type": "object",
    "properties": {
     "run": {
      "type": "string",
      "format": "text",
      "description": "the run's key, as the runs read lists it"
     },
     "reason": {
      "type": "string",
      "format": "text",
      "description": "the plain reason the run waits, which its row and its event carry"
     }
    },
    "required": [
     "run",
     "reason"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "18 §3"
   },
   "LayStrategyInput": {
    "title": "LayStrategyInput",
    "description": "a strategy laid over a twin: its armed plays become the interventions of one simulation",
    "type": "object",
    "properties": {
     "twin": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "strategy": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "horizon": {
      "type": "string",
      "format": "duration",
      "description": ""
     },
     "samples": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "seed": {
      "type": "integer",
      "format": "count",
      "description": ""
     }
    },
    "required": [
     "twin",
     "strategy"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "26 §3"
   },
   "UndoAnswer": {
    "title": "UndoAnswer",
    "description": "the action undone, and the inverse's own action",
    "type": "object",
    "properties": {
     "action": {
      "$ref": "#/components/schemas/Action",
      "description": ""
     },
     "inverse": {
      "$ref": "#/components/schemas/Action",
      "description": ""
     }
    },
    "required": [
     "action",
     "inverse"
    ],
    "additionalProperties": false,
    "x-kind": "view",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "13 §3"
   },
   "RoleAroundADecision": {
    "title": "RoleAroundADecision",
    "description": "one register of the roles people and organisations play around a decision and a market; a role never makes a buyer",
    "type": "object",
    "properties": {
     "name": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "side": {
      "type": "string",
      "enum": [
       "the decision",
       "the market",
       "influence",
       "the rules"
      ],
      "description": ""
     },
     "does": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "hands_on": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "held_as": {
      "type": "string",
      "description": "",
      "x-register": "KindOfConnection"
     },
     "can_be_a_lead": {
      "type": "string",
      "enum": [
       "no",
       "sometimes",
       "only when a buyer profile names the role"
      ],
      "description": ""
     },
     "recognised_by": {
      "$ref": "#/components/schemas/Predicate",
      "description": "the title words and cues that suggest a person holds the role"
     }
    },
    "required": [
     "name",
     "side",
     "does",
     "hands_on",
     "held_as",
     "can_be_a_lead"
    ],
    "additionalProperties": false,
    "x-kind": "row",
    "x-scope": "platform",
    "x-store": "postgres",
    "x-key": "its name",
    "x-places": [],
    "x-from": "MODELS/the-verticals §4; SR-1217"
   },
   "NeighboursInput": {
    "title": "NeighboursInput",
    "description": "an entity, one kind of connection, and the two dates",
    "type": "object",
    "properties": {
     "entity": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "kind": {
      "type": "string",
      "description": "",
      "x-register": "KindOfConnection"
     },
     "role": {
      "type": "string",
      "format": "text",
      "description": ""
     }
    },
    "required": [
     "entity",
     "kind"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "04 §3"
   },
   "SiteWatch": {
    "title": "SiteWatch",
    "description": "a watched identity over a site: its page set and sitemap, its cadence through demand cells, the extraction applied to each page, the conditions that make a change a signal, and the channels told",
    "type": "object",
    "properties": {
     "site": {
      "type": "string",
      "format": "id",
      "description": "the entity, a company or a brand, or an address"
     },
     "page_patterns": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "text"
      },
      "description": ""
     },
     "use_sitemap": {
      "type": "boolean",
      "format": "bool",
      "description": "discovery and last-modified from the sitemap"
     },
     "cadence": {
      "type": "string",
      "format": "duration",
      "description": "arms cells"
     },
     "extraction": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/FieldSpec"
      },
      "description": "fields compared version to version"
     },
     "conditions": {
      "$ref": "#/components/schemas/Predicate",
      "description": "over page changes"
     },
     "channels": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "id"
      },
      "description": "installed connectors with a send-to-channel action"
     },
     "state": {
      "$ref": "#/components/schemas/Readiness",
      "description": ""
     }
    },
    "required": [
     "site",
     "page_patterns",
     "use_sitemap",
     "cadence",
     "conditions",
     "channels",
     "state"
    ],
    "additionalProperties": false,
    "x-kind": "definition",
    "x-scope": "follows",
    "x-store": "postgres",
    "x-key": "the site, on a brand or a tenant",
    "x-places": [],
    "x-from": "18 §2.21"
   },
   "IntelligenceLayer": {
    "title": "IntelligenceLayer",
    "description": "one of the 28 kinds, with its mechanism, what goes in and out, what it assumes, how it fails, and the reading that would show it wrong",
    "type": "object",
    "properties": {
     "name": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "kind": {
      "type": "string",
      "format": "text",
      "description": "from the register of 28"
     },
     "mechanism": {
      "type": "string",
      "enum": [
       "a proxy",
       "a summary over the record",
       "deciding identity",
       "a derived graph",
       "an estimator",
       "a cut into groups"
      ],
      "description": ""
     },
     "goes_in": {
      "type": "array",
      "items": {
       "type": "string",
       "description": "the name of a row of Kind",
       "x-register": "Kind"
      },
      "description": ""
     },
     "comes_out": {
      "type": "array",
      "items": {
       "type": "string",
       "description": "the name of a row of Kind",
       "x-register": "Kind"
      },
      "description": ""
     },
     "assumes": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "fails": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "would_show_it_wrong": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "state": {
      "$ref": "#/components/schemas/Readiness",
      "description": ""
     }
    },
    "required": [
     "name",
     "kind",
     "mechanism",
     "goes_in",
     "comes_out",
     "assumes",
     "fails",
     "would_show_it_wrong",
     "state"
    ],
    "additionalProperties": false,
    "x-kind": "row",
    "x-scope": "platform",
    "x-store": "postgres",
    "x-key": "its name",
    "x-places": [],
    "x-from": "14 §2.1; MODELS/the-28-kinds"
   },
   "Change": {
    "title": "Change",
    "description": "a merged commit on the main branch, with the part of the plan it moves and the checks that completed at it",
    "type": "object",
    "properties": {
     "repository": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "commit": {
      "type": "string",
      "format": "hash",
      "description": ""
     },
     "subject": {
      "type": "string",
      "format": "text",
      "description": "one complete sentence with a verb"
     },
     "body": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "moves": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "checks": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/ControlResult"
      },
      "description": ""
     }
    },
    "required": [
     "repository",
     "commit",
     "subject",
     "body",
     "moves",
     "checks"
    ],
    "additionalProperties": false,
    "x-kind": "fact",
    "x-scope": "platform",
    "x-store": "postgres",
    "x-key": "the commit",
    "x-places": [],
    "x-from": "20 §2.1"
   },
   "RebuildRun": {
    "title": "RebuildRun",
    "description": "bronze replayed through refine and accept at one code version; ready only when every partition's hash equals the live run's",
    "type": "object",
    "properties": {
     "target": {
      "type": "string",
      "format": "text",
      "description": "a source, a plane or the whole record"
     },
     "code_version": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "partitions_compared": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "first_difference": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "state": {
      "$ref": "#/components/schemas/Readiness",
      "description": ""
     }
    },
    "required": [
     "target",
     "code_version",
     "partitions_compared",
     "state"
    ],
    "additionalProperties": false,
    "x-kind": "work",
    "x-scope": "follows",
    "x-store": "postgres",
    "x-key": "the source or plane and the code version",
    "x-places": [
     "queued",
     "replaying",
     "compared",
     "ready",
     "not ready"
    ],
    "x-from": "18 §2.12"
   },
   "SpeedToLead": {
    "title": "SpeedToLead",
    "description": "the delay from delivery to the first touch, read from two flows",
    "type": "object",
    "properties": {
     "target": {
      "type": "string",
      "format": "duration",
      "description": "held only where routing is set up"
     },
     "readings": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/Measure"
      },
      "description": ""
     },
     "population": {
      "$ref": "#/components/schemas/PopulationStatement",
      "description": ""
     }
    },
    "required": [
     "readings",
     "population"
    ],
    "additionalProperties": false,
    "x-kind": "definition",
    "x-scope": "platform",
    "x-store": "postgres",
    "x-key": "its name",
    "x-places": [],
    "x-from": "08 §2"
   },
   "Grant": {
    "title": "Grant",
    "description": "who may do what, where, in which mode, within which limits",
    "type": "object",
    "properties": {
     "who": {
      "$ref": "#/components/schemas/GrantHolder",
      "description": ""
     },
     "permissions": {
      "type": "array",
      "items": {
       "type": "string",
       "description": "the name of a row of Permission",
       "x-register": "Permission"
      },
      "description": "named one by one, by what they do, or by reach"
     },
     "reach": {
      "type": "string",
      "description": "the access scope the permissions were named by, where they were named by reach",
      "x-register": "AccessScope"
     },
     "where": {
      "$ref": "#/components/schemas/Scope",
      "description": ""
     },
     "data_group": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "mode": {
      "type": "string",
      "enum": [
       "read only",
       "propose",
       "act",
       "full autonomy"
      ],
      "description": ""
     },
     "limits": {
      "$ref": "#/components/schemas/GrantLimits",
      "description": ""
     },
     "turned_on_by": {
      "$ref": "#/components/schemas/Caller",
      "description": "for full autonomy: who, explicitly, for this one scope"
     },
     "ends_at": {
      "type": "string",
      "format": "time",
      "description": ""
     }
    },
    "required": [
     "who",
     "permissions",
     "where",
     "mode",
     "limits"
    ],
    "additionalProperties": false,
    "x-kind": "definition",
    "x-scope": "tenant",
    "x-store": "postgres",
    "x-key": "who, what and where, versioned",
    "x-places": [],
    "x-from": "03 §2.2"
   },
   "EntityInput": {
    "title": "EntityInput",
    "description": "an entity, and the two dates",
    "type": "object",
    "properties": {
     "entity": {
      "type": "string",
      "format": "id",
      "description": ""
     }
    },
    "required": [
     "entity"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "05 §3"
   },
   "StockTrajectory": {
    "title": "StockTrajectory",
    "description": "one stock's level at every step of a simulation, each an interval at the stated level",
    "type": "object",
    "properties": {
     "stock": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "unit": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "levels": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/Interval"
      },
      "description": "one per step"
     }
    },
    "required": [
     "stock",
     "unit",
     "levels"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "26 §2.1"
   },
   "BrandDesignSystemDiff": {
    "title": "BrandDesignSystemDiff",
    "description": "what changed between two versions of a brand's design system",
    "type": "object",
    "properties": {
     "brand": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "from_version": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "to_version": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "changes": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/BrandChange"
      },
      "description": ""
     },
     "added": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "removed": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "changed": {
      "type": "integer",
      "format": "count",
      "description": ""
     }
    },
    "required": [
     "brand",
     "from_version",
     "to_version",
     "changes",
     "added",
     "removed",
     "changed"
    ],
    "additionalProperties": false,
    "x-kind": "view",
    "x-scope": "brand",
    "x-store": "derived",
    "x-key": "the brand and the two versions",
    "x-places": [],
    "x-from": "DESIGN/the-brand-graph-from-a-domain §7"
   },
   "EstimateInput": {
    "title": "EstimateInput",
    "description": "an estimator and the case",
    "type": "object",
    "properties": {
     "model": {
      "type": "string",
      "description": "",
      "x-register": "Model"
     },
     "case": {
      "$ref": "#/components/schemas/UnitRef",
      "description": ""
     }
    },
    "required": [
     "model",
     "case"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "14 §3"
   },
   "InstalledConnector": {
    "title": "InstalledConnector",
    "description": "a connector a tenant set up, ready only when its identity is ready and a probe has answered",
    "type": "object",
    "properties": {
     "connector": {
      "type": "string",
      "description": "",
      "x-register": "Connector"
     },
     "ways": {
      "type": "array",
      "items": {
       "type": "string",
       "description": "the name of a row of AccessMethod",
       "x-register": "AccessMethod"
      },
      "description": ""
     },
     "identity": {
      "type": "string",
      "format": "id",
      "description": "the signed-in identity or the key each uses"
     },
     "settings": {
      "description": ""
     },
     "last_probe": {
      "$ref": "#/components/schemas/ControlResult",
      "description": ""
     },
     "state": {
      "$ref": "#/components/schemas/Readiness",
      "description": ""
     }
    },
    "required": [
     "connector",
     "ways",
     "identity",
     "settings",
     "state"
    ],
    "additionalProperties": false,
    "x-kind": "definition",
    "x-scope": "follows",
    "x-store": "postgres",
    "x-key": "the connector, on a tenant or a brand",
    "x-places": [],
    "x-from": "07 §2.2"
   },
   "CaptureInput": {
    "title": "CaptureInput",
    "description": "a page the person opened, handed over by the capture extension",
    "type": "object",
    "properties": {
     "address": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "document": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "network_events": {
      "type": "array",
      "items": {},
      "description": ""
     },
     "identity": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "scope": {
      "type": "string",
      "enum": [
       "this item",
       "this thread",
       "this channel as shown",
       "this page",
       "this meeting",
       "my outbound message"
      ],
      "description": ""
     },
     "under": {
      "type": "string",
      "enum": [
       "say-so",
       "rule"
      ],
      "description": ""
     },
     "rule": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "extension_version": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "artefact_hash": {
      "type": "string",
      "format": "hash",
      "description": ""
     },
     "selection": {
      "type": "string",
      "format": "text",
      "description": ""
     }
    },
    "required": [
     "address",
     "document",
     "network_events",
     "scope",
     "under",
     "extension_version",
     "artefact_hash"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "18 §3"
   },
   "KindOfMeasure": {
    "title": "KindOfMeasure",
    "description": "a registered kind of measure",
    "type": "object",
    "properties": {
     "name": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "dimension": {
      "type": "string",
      "format": "text",
      "description": "the unit and the value's type, from the closed list of SourceField types, so the measure's gold column is typed"
     },
     "definition_version": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "instrument": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "read_with_nothing_connected": {
      "type": "boolean",
      "format": "bool",
      "description": ""
     },
     "slices": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "text"
      },
      "description": "the registered dimensions a reading may be cut by: a rail, a band, an hour, a list position"
     },
     "page_words": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "text"
      },
      "description": "the words a page shows beside a count of this measure, singular and plural, so a reader finds the count on any page"
     },
     "family": {
      "type": "string",
      "format": "text",
      "description": "the family a measure belongs to: economics for a value driver, else absent"
     },
     "stated_by": {
      "type": "string",
      "enum": [
       "the buyer",
       "a benchmark",
       "the record",
       "a formula"
      ],
      "description": "for a value driver: who supplies its number"
     },
     "question": {
      "type": "string",
      "format": "text",
      "description": "for a value driver the buyer states: the question in the buyer's own words"
     },
     "bounds": {
      "$ref": "#/components/schemas/Interval",
      "description": "for a value driver the buyer states: the floor and the ceiling a stated value may not cross"
     }
    },
    "required": [
     "name",
     "dimension",
     "definition_version",
     "instrument",
     "read_with_nothing_connected"
    ],
    "additionalProperties": false,
    "x-kind": "row",
    "x-scope": "platform",
    "x-store": "postgres",
    "x-key": "its name",
    "x-places": [],
    "x-from": "02 §2.4; 04 §2.2"
   },
   "DemandStatement": {
    "title": "DemandStatement",
    "description": "the one crossing out to the acquisition system",
    "type": "object",
    "properties": {
     "source": {
      "type": "string",
      "description": "",
      "x-register": "Source"
     },
     "way": {
      "type": "string",
      "description": "",
      "x-register": "AccessMethod"
     },
     "plane": {
      "$ref": "#/components/schemas/Plane",
      "description": ""
     },
     "cadence": {
      "type": "string",
      "format": "duration",
      "description": "a time and never zero"
     },
     "term": {
      "$ref": "#/components/schemas/Window",
      "description": ""
     },
     "contributions": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/Contribution"
      },
      "description": "the count must agree with the list"
     }
    },
    "required": [
     "source",
     "way",
     "plane",
     "cadence",
     "term",
     "contributions"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "07 §2.5; 18 §2.9"
   },
   "InstructionSet": {
    "title": "InstructionSet",
    "description": "the agent's standing instructions for a kind of job, assembled from versioned rows at run time: the stance, the rules of evidence, the method by question, the reporting form, the stopping rule and the words",
    "type": "object",
    "properties": {
     "name": {
      "type": "string",
      "format": "text",
      "description": "research, first"
     },
     "version": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "stance": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "text"
      },
      "description": ""
     },
     "rules_of_evidence": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "text"
      },
      "description": "each naming the check that enforces it"
     },
     "method_by_question": {
      "type": "array",
      "items": {},
      "description": "question shape, methods in order, not to use"
     },
     "reporting_form": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "text"
      },
      "description": ""
     },
     "stopping_rule": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "text"
      },
      "description": ""
     },
     "words": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "text"
      },
      "description": ""
     },
     "assembled": {
      "type": "string",
      "format": "text",
      "description": "the text the agent receives, derived"
     },
     "changed_by": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "reason": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "workbench": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "text"
      },
      "description": "when and how the agent writes and runs code, as a named procedure under its grant"
     }
    },
    "required": [
     "name",
     "version",
     "stance",
     "rules_of_evidence",
     "method_by_question",
     "reporting_form",
     "stopping_rule",
     "words",
     "assembled",
     "changed_by",
     "reason",
     "workbench"
    ],
    "additionalProperties": false,
    "x-kind": "row",
    "x-scope": "platform",
    "x-store": "postgres",
    "x-key": "its name and version",
    "x-places": [],
    "x-from": "14 §2.4"
   },
   "CandidatesInput": {
    "title": "CandidatesInput",
    "description": "a brand, and a buyer profile or a place",
    "type": "object",
    "properties": {
     "brand": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "kind_of_buyer": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "place": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "candidate": {
      "type": "string",
      "format": "id",
      "description": "one candidate"
     }
    },
    "required": [
     "brand"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "08 §3"
   },
   "MappingIdentifier": {
    "title": "MappingIdentifier",
    "description": "an id that becomes an identifier",
    "type": "object",
    "properties": {
     "id": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "namespace": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "trust_rank": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "prefix": {
      "type": "string",
      "format": "text",
      "description": "put before the value, for a platform-and-handle key"
     },
     "prefix_by_kind": {
      "type": "object",
      "additionalProperties": {
       "type": "string",
       "format": "text"
      },
      "description": "for an object whose kind field decides the prefix (a table of comments and submissions together), the prefix for each kind word; the row's kind word chooses it, and a word absent here leaves the row without an own id"
     }
    },
    "required": [
     "id",
     "namespace",
     "trust_rank"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "07 §2.1"
   },
   "Explanation": {
    "title": "Explanation",
    "description": "why an entity is a lead, written by a model from the highlighted evidence alone, citing each span",
    "type": "object",
    "properties": {
     "lead": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "text": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "model": {
      "type": "string",
      "format": "text",
      "description": "the model id"
     },
     "cites": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/Highlight"
      },
      "description": ""
     }
    },
    "required": [
     "lead",
     "text",
     "model",
     "cites"
    ],
    "additionalProperties": false,
    "x-kind": "fact",
    "x-scope": "tenant",
    "x-store": "postgres",
    "x-key": "the lead and the model",
    "x-places": [],
    "x-from": "08 §2; MODELS/the-fit-of-a-buyer-and-the-package-of-a-lead"
   },
   "KindOfMarketEvent": {
    "title": "KindOfMarketEvent",
    "description": "a kind of market event",
    "type": "object",
    "properties": {
     "name": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "adds": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/SourceField"
      },
      "description": "the fields the kind adds, typed; each is a typed column of the kind's gold table"
     },
     "named_in": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "text"
      },
      "description": "the pages or specifications that name it"
     }
    },
    "required": [
     "name"
    ],
    "additionalProperties": false,
    "x-kind": "row",
    "x-scope": "platform",
    "x-store": "postgres",
    "x-key": "its name",
    "x-places": [],
    "x-from": "04 §2.2"
   },
   "SavedQuestion": {
    "title": "SavedQuestion",
    "description": "a question over the view a person or the agent keeps",
    "type": "object",
    "properties": {
     "name": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "over": {
      "type": "string",
      "enum": [
       "stocks",
       "journeys",
       "waiting",
       "capabilities"
      ],
      "description": ""
     },
     "query": {
      "description": ""
     },
     "scope": {
      "$ref": "#/components/schemas/Scope",
      "description": ""
     }
    },
    "required": [
     "name",
     "over",
     "query",
     "scope"
    ],
    "additionalProperties": false,
    "x-kind": "definition",
    "x-scope": "follows",
    "x-store": "postgres",
    "x-key": "its name and scope",
    "x-places": [],
    "x-from": "11 §2"
   },
   "StepPage": {
    "title": "StepPage",
    "description": "the page after a browsing step that asked for a light reading: its address and its title, without a reading of the whole page",
    "type": "object",
    "properties": {
     "address": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "title": {
      "type": "string",
      "format": "text",
      "description": ""
     }
    },
    "required": [
     "address",
     "title"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "18 §2.19"
   },
   "EventCursor": {
    "title": "EventCursor",
    "description": "the position in the event log a client has rendered to; a reconnecting client sends it and receives every event after it",
    "type": "object",
    "properties": {
     "thread": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "position": {
      "type": "integer",
      "format": "count",
      "description": ""
     }
    },
    "required": [
     "thread",
     "position"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "09 §2.2; 01 §3"
   },
   "CalculationShape": {
    "title": "CalculationShape",
    "description": "one of the few ways a buyer profile earns value from an offering, as a driver tree over role names that a business model binds to its own drivers: a sales pipeline to a recurring contract; a client won then a retainer over its tenure; a proposal won then a project; a deal then margin on goods; a player or member won then lifetime value less acquisition cost; staff hours saved (the research of 27 September, section 3.1)",
    "type": "object",
    "properties": {
     "letter": {
      "type": "string",
      "format": "text",
      "description": "A to F today; a new shape is a new row"
     },
     "name": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "what": {
      "type": "string",
      "format": "text",
      "description": "how the buyer earns, in one sentence"
     },
     "tree": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/DriverNode"
      },
      "description": "the roots over role names, one per output"
     },
     "roles": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "text"
      },
      "description": "the role names a business model binds to its drivers"
     },
     "outputs": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "text"
      },
      "description": "incremental value, cost, return, payback"
     }
    },
    "required": [
     "letter",
     "name",
     "what",
     "tree",
     "roles",
     "outputs"
    ],
    "additionalProperties": false,
    "x-kind": "row",
    "x-scope": "platform",
    "x-store": "postgres",
    "x-key": "its letter",
    "x-places": [],
    "x-from": "25 §2.1"
   },
   "InstallPackAnswer": {
    "title": "InstallPackAnswer",
    "description": "the copies made, each naming its origin",
    "type": "object",
    "properties": {
     "installed": {
      "$ref": "#/components/schemas/InstalledTemplate",
      "description": ""
     },
     "copies": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/UnitRef"
      },
      "description": ""
     },
     "refused": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/Refusal"
      },
      "description": "for a template that is not ready"
     }
    },
    "required": [
     "installed",
     "copies",
     "refused"
    ],
    "additionalProperties": false,
    "x-kind": "view",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "12 §3"
   },
   "LadderInput": {
    "title": "LadderInput",
    "description": "the ladder in force, or one version",
    "type": "object",
    "properties": {
     "version": {
      "type": "integer",
      "format": "count",
      "description": ""
     }
    },
    "required": [],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "one ask for the ladder",
    "x-places": [],
    "x-from": "25 §3"
   },
   "ContentRequest": {
    "title": "ContentRequest",
    "description": "get_content: one address read as the person or the platform, with what to return and what may be downloaded",
    "type": "object",
    "properties": {
     "address": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "returns": {
      "type": "array",
      "items": {
       "type": "string",
       "enum": [
        "article",
        "html",
        "markdown",
        "text",
        "links",
        "metadata",
        "stylesheets",
        "scripts",
        "images",
        "screenshot",
        "pdf",
        "network events"
       ]
      },
      "description": "article is the main content with its title, author, published time and language, as CrawlKit's extractor returns it"
     },
     "filter": {
      "$ref": "#/components/schemas/ResourceFilter",
      "description": ""
     },
     "as_identity": {
      "type": "string",
      "format": "id",
      "description": "a held identity, lent by a grant: its cookie jar, session token, access token or API key"
     },
     "proxy_policy": {
      "$ref": "#/components/schemas/ProxyPolicy",
      "description": ""
     },
     "wait_for": {
      "type": "string",
      "format": "text",
      "description": "a selector or a time"
     },
     "cache_for": {
      "type": "string",
      "format": "duration",
      "description": ""
     },
     "credit_cells": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "id"
      },
      "description": ""
     }
    },
    "required": [
     "address",
     "returns",
     "filter"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "18 §2.18"
   },
   "PublishInput": {
    "title": "PublishInput",
    "description": "a build and an address",
    "type": "object",
    "properties": {
     "build": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "address": {
      "type": "string",
      "format": "address",
      "description": ""
     },
     "key": {
      "type": "string",
      "format": "id",
      "description": ""
     }
    },
    "required": [
     "build",
     "address"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "17 §3"
   },
   "PlatformRelation": {
    "title": "PlatformRelation",
    "description": "one way two things of a platform relate, and the registered kind of connection it becomes with the role each side takes",
    "type": "object",
    "properties": {
     "name": {
      "type": "string",
      "format": "text",
      "description": "the platform's word: follows, stars, contributes to, member of"
     },
     "kind": {
      "type": "string",
      "description": "",
      "x-register": "KindOfConnection"
     },
     "from_thing": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "from_role": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "to_thing": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "to_role": {
      "type": "string",
      "format": "text",
      "description": ""
     }
    },
    "required": [
     "name",
     "kind",
     "from_thing",
     "from_role",
     "to_thing",
     "to_role"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "24 §2.1"
   },
   "SiteBuild": {
    "title": "SiteBuild",
    "description": "one build of the documentation site, with the checks it ran; nothing is published from a failed build",
    "type": "object",
    "properties": {
     "version": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "contract_hash": {
      "type": "string",
      "format": "hash",
      "description": ""
     },
     "pages_built": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "checks": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "text"
      },
      "description": "each check's name, red on its planted control before the build counts it"
     }
    },
    "required": [
     "version",
     "contract_hash",
     "pages_built",
     "checks"
    ],
    "additionalProperties": false,
    "x-kind": "work",
    "x-scope": "platform",
    "x-store": "postgres",
    "x-key": "the version and the contract hash",
    "x-places": [
     "building",
     "built•",
     "failed•"
    ],
    "x-from": "23 §2.1"
   },
   "HealthCheck": {
    "title": "HealthCheck",
    "description": "a signal that can fail, its vacuity guard, and where it runs",
    "type": "object",
    "properties": {
     "service": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "signal": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "vacuity_guard": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "runs_on": {
      "type": "string",
      "enum": [
       "the server"
      ],
      "description": ""
     }
    },
    "required": [
     "service",
     "signal",
     "vacuity_guard",
     "runs_on"
    ],
    "additionalProperties": false,
    "x-kind": "row",
    "x-scope": "platform",
    "x-store": "postgres",
    "x-key": "the service",
    "x-places": [],
    "x-from": "19 §2.1"
   },
   "HeaderRule": {
    "title": "HeaderRule",
    "description": "how a kind of connection is read off the shared silver header: each role bound to one header column, and the rows the rule applies to",
    "type": "object",
    "properties": {
     "roles": {
      "type": "object",
      "additionalProperties": {
       "type": "string",
       "enum": [
        "own_id",
        "author_account",
        "parent",
        "thread_root",
        "community"
       ]
      },
      "description": "the kind's role, and the header column that fills it"
     },
     "when": {
      "type": "string",
      "enum": [
       "always",
       "the row is its thread's root",
       "the row has a parent"
      ],
      "description": "which rows of silver the rule reads"
     },
     "version": {
      "type": "integer",
      "format": "count",
      "description": "the rule's version, written on every connection the view yields"
     }
    },
    "required": [
     "roles",
     "when",
     "version"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "04 §2.2; D-106"
   },
   "DocIsland": {
    "title": "DocIsland",
    "description": "one interactive island of the site: what it does, the SDK call it makes and whether it needs a key",
    "type": "object",
    "properties": {
     "name": {
      "type": "string",
      "enum": [
       "api-explorer",
       "query-playground",
       "preview-widget",
       "search",
       "theme-and-density"
      ],
      "description": ""
     },
     "does": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "sdk_call": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "needs_key": {
      "type": "boolean",
      "format": "bool",
      "description": ""
     }
    },
    "required": [
     "name",
     "does",
     "needs_key"
    ],
    "additionalProperties": false,
    "x-kind": "definition",
    "x-scope": "platform",
    "x-store": "postgres",
    "x-key": "its name",
    "x-places": [],
    "x-from": "23 §2.4"
   },
   "LlmsIndex": {
    "title": "LlmsIndex",
    "description": "the index a model reads: every page with a one-line description, and the addresses of the full twin, the API document, the manifest and the Context7 configuration",
    "type": "object",
    "properties": {
     "address": {
      "type": "string",
      "format": "text",
      "description": "/llms.txt"
     },
     "full_twin": {
      "type": "string",
      "format": "text",
      "description": "/llms-full.txt"
     },
     "sections": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "id"
      },
      "description": "the sections, by slug"
     },
     "pages": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "openapi": {
      "type": "string",
      "format": "text",
      "description": "/openapi.json"
     },
     "mcp_manifest": {
      "type": "string",
      "format": "text",
      "description": "/mcp-manifest.json"
     },
     "context7": {
      "type": "string",
      "format": "text",
      "description": "context7.json at the repository's root"
     }
    },
    "required": [
     "address",
     "full_twin",
     "sections",
     "pages",
     "openapi",
     "mcp_manifest",
     "context7"
    ],
    "additionalProperties": false,
    "x-kind": "definition",
    "x-scope": "platform",
    "x-store": "postgres",
    "x-key": "its address",
    "x-places": [],
    "x-from": "23 §2.3"
   },
   "UnderTestInput": {
    "title": "UnderTestInput",
    "description": "a unit, a brand or a scope",
    "type": "object",
    "properties": {
     "about": {
      "$ref": "#/components/schemas/UnitRef",
      "description": ""
     },
     "scope": {
      "$ref": "#/components/schemas/Scope",
      "description": ""
     },
     "standing": {
      "type": "string",
      "enum": [
       "under test",
       "supported",
       "refuted",
       "cannot tell",
       "all"
      ],
      "description": ""
     }
    },
    "required": [],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "01 §3"
   },
   "SyncOffer": {
    "title": "SyncOffer",
    "description": "a pairing a connector offers: which kind of reading with which kind of action, over which identity link",
    "type": "object",
    "properties": {
     "reading": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "action": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "identity_link": {
      "type": "string",
      "format": "text",
      "description": "the source id namespace bound to an identifier namespace"
     },
     "directions": {
      "type": "array",
      "items": {
       "type": "string",
       "enum": [
        "pull",
        "push",
        "both"
       ]
      },
      "description": ""
     }
    },
    "required": [
     "reading",
     "action",
     "identity_link",
     "directions"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "18 §2.8"
   },
   "RetentionClass": {
    "title": "RetentionClass",
    "description": "how long a unit is kept, and whether it may be pruned behind the gold layer",
    "type": "object",
    "properties": {
     "name": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "keep_for": {
      "type": "string",
      "format": "duration",
      "description": ""
     },
     "prunable_behind_lake": {
      "type": "boolean",
      "format": "bool",
      "description": ""
     },
     "basis": {
      "type": "string",
      "format": "text",
      "description": "the rights, the plan, or the platform's own"
     }
    },
    "required": [
     "name",
     "keep_for",
     "prunable_behind_lake",
     "basis"
    ],
    "additionalProperties": false,
    "x-kind": "row",
    "x-scope": "platform",
    "x-store": "postgres",
    "x-key": "its name",
    "x-places": [],
    "x-from": "19 §2.1"
   },
   "ScrapeRunsInput": {
    "title": "ScrapeRunsInput",
    "description": "the runs of a template in a window",
    "type": "object",
    "properties": {
     "template": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "window": {
      "$ref": "#/components/schemas/Window",
      "description": ""
     }
    },
    "required": [
     "template",
     "window"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "18 §3"
   },
   "ValueChainInput": {
    "title": "ValueChainInput",
    "description": "the vertical, and the brand whose participants are placed",
    "type": "object",
    "properties": {
     "vertical": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "brand": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "segment": {
      "type": "string",
      "format": "id",
      "description": ""
     }
    },
    "required": [
     "vertical"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "26 §3"
   },
   "HeldArtefact": {
    "title": "HeldArtefact",
    "description": "the value of the parameter the artefacts on this machine: one lake, catalogue or folder of files still outside the one lakehouse, read in place until its tables are mapped in, with the name the engine opens it under, the registered source its tables derive from, its path, the program that made it and the repository whose commit the reading records",
    "type": "object",
    "properties": {
     "name": {
      "type": "string",
      "format": "text",
      "description": "one word the engine opens it under, which an SQL statement names it by"
     },
     "source": {
      "type": "string",
      "format": "id",
      "description": "the registered source its tables derive from"
     },
     "path": {
      "type": "string",
      "format": "text",
      "description": "the file or folder on this machine"
     },
     "generator": {
      "type": "string",
      "format": "text",
      "description": "the program that made it, as its own row names it"
     },
     "repository": {
      "type": "string",
      "format": "text",
      "description": "the repository whose commit at the reading is appended to the generator; absent when the generator names its commit itself"
     }
    },
    "required": [
     "name",
     "source",
     "path",
     "generator"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "18 §2.25"
   },
   "Journey": {
    "title": "Journey",
    "description": "every hop of one unit, walked from its id alone, with a bound on depth",
    "type": "object",
    "properties": {
     "unit": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "hops": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/Event"
      },
      "description": ""
     },
     "back_to": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "id"
      },
      "description": "the artefact and the source"
     },
     "forward_to": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "id"
      },
      "description": "the lead"
     },
     "stopped_at_bound": {
      "type": "boolean",
      "format": "bool",
      "description": ""
     }
    },
    "required": [
     "unit",
     "hops",
     "back_to",
     "forward_to",
     "stopped_at_bound"
    ],
    "additionalProperties": false,
    "x-kind": "view",
    "x-scope": "none",
    "x-store": "derived",
    "x-key": "one unit",
    "x-places": [],
    "x-from": "11 §2"
   },
   "DecideAskInput": {
    "title": "DecideAskInput",
    "description": "an ask, approved or declined",
    "type": "object",
    "properties": {
     "ask": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "decision": {
      "type": "string",
      "enum": [
       "approve",
       "decline"
      ],
      "description": ""
     },
     "reason": {
      "type": "string",
      "format": "text",
      "description": ""
     }
    },
    "required": [
     "ask",
     "decision"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "07 §3"
   },
   "Vertical": {
    "title": "Vertical",
    "description": "one market worked as a whole: its chain, its roles, its segments, its words and rules; ready or visibly not ready",
    "type": "object",
    "properties": {
     "name": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "industries": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "text"
      },
      "description": ""
     },
     "chain": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "roles": {
      "type": "array",
      "items": {
       "type": "string",
       "description": "the name of a row of RoleAroundADecision",
       "x-register": "RoleAroundADecision"
      },
      "description": ""
     },
     "segments": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "id"
      },
      "description": ""
     },
     "words": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/Word"
      },
      "description": ""
     },
     "regulations": {
      "type": "array",
      "items": {
       "type": "string",
       "description": "the name of a row of Regulation",
       "x-register": "Regulation"
      },
      "description": ""
     },
     "sources": {
      "type": "array",
      "items": {
       "type": "string",
       "description": "the name of a row of Source",
       "x-register": "Source"
      },
      "description": ""
     },
     "kinds_of_signal": {
      "type": "array",
      "items": {
       "type": "string",
       "description": "the name of a row of KindOfSignal",
       "x-register": "KindOfSignal"
      },
      "description": ""
     },
     "state": {
      "$ref": "#/components/schemas/Readiness",
      "description": ""
     },
     "industry_group": {
      "type": "string",
      "format": "text",
      "description": "the industry family it sits in, from the seed catalogue"
     },
     "applications": {
      "type": "array",
      "items": {
       "type": "string",
       "description": "the name of a row of Application",
       "x-register": "Application"
      },
      "description": "the customer questions it is worked for"
     },
     "systems_models": {
      "type": "array",
      "items": {
       "type": "string",
       "description": "the name of a row of SystemsModelTemplate",
       "x-register": "SystemsModelTemplate"
      },
      "description": "the systems model templates that model its chain; a game of roles, where one is laid, is the template's own; every role that a template's flows or game name is one of the vertical's roles"
     }
    },
    "required": [
     "name",
     "industries",
     "chain",
     "roles",
     "segments",
     "words",
     "regulations",
     "sources",
     "kinds_of_signal",
     "state"
    ],
    "additionalProperties": false,
    "x-kind": "definition",
    "x-scope": "platform",
    "x-store": "postgres",
    "x-key": "its name",
    "x-places": [],
    "x-from": "12 §2.1; MODELS/the-verticals"
   },
   "PageHints": {
    "title": "PageHints",
    "description": "how a page was read and what was kept out",
    "type": "object",
    "properties": {
     "text_truncated": {
      "type": "boolean",
      "format": "bool",
      "description": ""
     },
     "links_truncated": {
      "type": "boolean",
      "format": "bool",
      "description": ""
     },
     "capture_method": {
      "type": "string",
      "enum": [
       "selected_tab_visible_text",
       "selected_tab_scrolled",
       "selected_tab_ambient",
       "fetched_static"
      ],
      "description": ""
     },
     "network_events_captured": {
      "type": "boolean",
      "format": "bool",
      "description": ""
     },
     "redacted_fields": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "redacted_addresses": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "redacted_patterns": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "rounds": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "items": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "stopped_by": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "trigger": {
      "type": "string",
      "enum": [
       "say-so",
       "a submit",
       "leaving the page",
       "the page settled",
       "a timer"
      ],
      "description": "what made a capture under a rule"
     },
     "events_dropped": {
      "type": "integer",
      "format": "count",
      "description": "network events past the bound or outside the filters"
     }
    },
    "required": [
     "text_truncated",
     "links_truncated",
     "capture_method",
     "network_events_captured",
     "redacted_fields",
     "redacted_addresses",
     "redacted_patterns"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "24 §2.1"
   },
   "ResourceFilter": {
    "title": "ResourceFilter",
    "description": "what a read may download and what it must not: resource types allowed and denied, size caps, address patterns, and whether to render",
    "type": "object",
    "properties": {
     "allow_types": {
      "type": "array",
      "items": {
       "type": "string",
       "enum": [
        "document",
        "script",
        "stylesheet",
        "font",
        "image",
        "video",
        "audio",
        "media",
        "xhr",
        "websocket",
        "other"
       ]
      },
      "description": ""
     },
     "deny_types": {
      "type": "array",
      "items": {
       "type": "string",
       "enum": [
        "document",
        "script",
        "stylesheet",
        "font",
        "image",
        "video",
        "audio",
        "media",
        "xhr",
        "websocket",
        "other"
       ]
      },
      "description": "denied wins"
     },
     "max_bytes_per_resource": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "max_bytes_total": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "allow_patterns": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "text"
      },
      "description": "address patterns"
     },
     "deny_patterns": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "text"
      },
      "description": ""
     },
     "render": {
      "type": "string",
      "enum": [
       "static",
       "auto",
       "rendered"
      ],
      "description": "static fetches the document alone; auto renders only when the static read looks thin, as CrawlKit's extractor does; rendered always uses the browser"
     }
    },
    "required": [
     "allow_types",
     "deny_types",
     "allow_patterns",
     "deny_patterns",
     "render"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "18 §2.18"
   },
   "SecretVersion": {
    "title": "SecretVersion",
    "description": "one version of a secret, with when and who",
    "type": "object",
    "properties": {
     "version": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "made_at": {
      "type": "string",
      "format": "time",
      "description": ""
     },
     "rotated_by": {
      "$ref": "#/components/schemas/Caller",
      "description": ""
     },
     "ends_at": {
      "type": "string",
      "format": "time",
      "description": ""
     }
    },
    "required": [
     "version",
     "made_at",
     "rotated_by"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "19 §2.1"
   },
   "ScoreBySegment": {
    "title": "ScoreBySegment",
    "description": "the proper scores and the calibration of the forecasts of one segment: a play, a tactic, a kind of buyer, a framing, an actor or a content",
    "type": "object",
    "properties": {
     "segment_kind": {
      "type": "string",
      "enum": [
       "play",
       "tactic",
       "kind of buyer",
       "framing",
       "actor",
       "content"
      ],
      "description": ""
     },
     "segment": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "pairs": {
      "type": "integer",
      "format": "count",
      "description": "the pairs with an effect"
     },
     "mean_score": {
      "type": "number",
      "format": "number",
      "description": "the mean proper score; absent with no pair"
     },
     "band_held": {
      "type": "number",
      "format": "share",
      "description": "the share of effects inside the band; absent with no pair"
     },
     "level": {
      "type": "number",
      "format": "share",
      "description": "the level the bands were stated at"
     },
     "state": {
      "$ref": "#/components/schemas/Readiness",
      "description": "not ready when the band held under the level by more than the tolerance of interval coverage, or with fewer pairs than the floor"
     }
    },
    "required": [
     "segment_kind",
     "segment",
     "pairs",
     "level",
     "state"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "13 §3; MODELS/the-strategy-system-as-a-formal-model §6.1"
   },
   "DesignOfAnEffect": {
    "title": "DesignOfAnEffect",
    "description": "one design that reads an effect against the tide: what it needs, what it assumes, when it is used, and what makes its answer cannot tell; the five the model places on the graph, each a row",
    "type": "object",
    "properties": {
     "name": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "order": {
      "type": "integer",
      "format": "count",
      "description": "the order of what is built first"
     },
     "needs": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "assumes": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "when": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "estimand": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "cannot_tell_when": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "reference": {
      "type": "string",
      "format": "text",
      "description": ""
     }
    },
    "required": [
     "name",
     "order",
     "needs",
     "assumes",
     "when",
     "estimand",
     "cannot_tell_when",
     "reference"
    ],
    "additionalProperties": false,
    "x-kind": "row",
    "x-scope": "platform",
    "x-store": "postgres",
    "x-key": "its name",
    "x-places": [],
    "x-from": "MODELS/the-strategy-system-as-a-formal-model §6.2; MODELS/telling-an-effect-from-the-tide §2"
   },
   "BarsOfNearness": {
    "title": "BarsOfNearness",
    "description": "the value of the parameter *the bars of nearness*: the bars of each breadth, read by the grounding on every channel and by the compiler when a leaf names a breadth, through one resolver",
    "type": "object",
    "properties": {
     "exact": {
      "$ref": "#/components/schemas/NearnessBar",
      "description": ""
     },
     "similar": {
      "$ref": "#/components/schemas/NearnessBar",
      "description": ""
     },
     "related": {
      "$ref": "#/components/schemas/NearnessBar",
      "description": ""
     },
     "broad": {
      "$ref": "#/components/schemas/NearnessBar",
      "description": ""
     },
     "model": {
      "type": "string",
      "description": "the model the meaning bars were measured under; a meaning leaf under another model refuses, and unmeasured bars admit no breadth",
      "x-register": "Model"
     },
     "measured_at": {
      "type": "string",
      "format": "time",
      "description": ""
     },
     "basis": {
      "type": "string",
      "format": "text",
      "description": "how the meaning bars were measured: the population, the probes, the shares and the spread across probes"
     },
     "by_concept": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/ConceptBars"
      },
      "description": "the bars of each probe on its own; a leaf whose concept is among them takes its own bar, and one whose concept is not takes the median bar"
     }
    },
    "required": [
     "exact",
     "similar",
     "related",
     "broad"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "06 §2.6; 24 §2.6"
   },
   "ServerDescription": {
    "title": "ServerDescription",
    "description": "what the MCP server publishes: where the provider is, the proof method, the smallest scopes that work",
    "type": "object",
    "properties": {
     "provider": {
      "type": "string",
      "format": "address",
      "description": ""
     },
     "proof_method": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "smallest_scopes": {
      "type": "array",
      "items": {
       "type": "string",
       "description": "the name of a row of AccessScope",
       "x-register": "AccessScope"
      },
      "description": ""
     },
     "families": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "text"
      },
      "description": "the parts of the register, shown one at a time"
     },
     "protocol_revision": {
      "type": "string",
      "format": "date",
      "description": ""
     }
    },
    "required": [
     "provider",
     "proof_method",
     "smallest_scopes",
     "families",
     "protocol_revision"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "10 §2; 03 §2.6; SR-1015"
   },
   "BucketCounts": {
    "title": "BucketCounts",
    "description": "the value of the parameter the layout of a table keyed by an entity: the count of buckets each plane splits it into",
    "type": "object",
    "properties": {
     "shared": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "tenant": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "platform": {
      "type": "integer",
      "format": "count",
      "description": ""
     }
    },
    "required": [
     "shared",
     "tenant",
     "platform"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "04 §2.5"
   },
   "GrantRef": {
    "title": "GrantRef",
    "description": "a grant as a caller sees it, after the three narrowings",
    "type": "object",
    "properties": {
     "grant": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "mode": {
      "type": "string",
      "enum": [
       "read only",
       "propose",
       "act",
       "full autonomy"
      ],
      "description": ""
     },
     "permissions": {
      "type": "array",
      "items": {
       "type": "string",
       "description": "the name of a row of Permission",
       "x-register": "Permission"
      },
      "description": ""
     },
     "where": {
      "$ref": "#/components/schemas/Scope",
      "description": ""
     },
     "data_group": {
      "type": "string",
      "format": "text",
      "description": "the data group the grant names, whose members are the only units the call may touch (test 2)"
     },
     "limits": {
      "$ref": "#/components/schemas/GrantLimits",
      "description": "the limits left on the grant: its budget, its rate, the voices and the sending identities it names (test 5)"
     },
     "ends_at": {
      "type": "string",
      "format": "time",
      "description": "when the grant ends; a call after it is not allowed (test 5)"
     }
    },
    "required": [
     "grant",
     "mode",
     "permissions",
     "where"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "03 §2.2"
   },
   "LineageInput": {
    "title": "LineageInput",
    "description": "an artefact or an acquisition unit",
    "type": "object",
    "properties": {
     "artefact_hash": {
      "type": "string",
      "format": "hash",
      "description": ""
     },
     "unit": {
      "type": "string",
      "format": "id",
      "description": ""
     }
    },
    "required": [],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "18 §3"
   },
   "LanguageScale": {
    "title": "LanguageScale",
    "description": "a name and two or more poles, counted over a group's own writing by month; aggregate-only by rule",
    "type": "object",
    "properties": {
     "name": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "poles": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/Pole"
      },
      "description": ""
     },
     "aggregate_only": {
      "type": "boolean",
      "format": "bool",
      "description": "always true"
     }
    },
    "required": [
     "name",
     "poles",
     "aggregate_only"
    ],
    "additionalProperties": false,
    "x-kind": "definition",
    "x-scope": "follows",
    "x-store": "postgres",
    "x-key": "its name",
    "x-places": [],
    "x-from": "06 §2.1"
   },
   "MapInput": {
    "title": "MapInput",
    "description": "a brand, and the two dates",
    "type": "object",
    "properties": {
     "brand": {
      "type": "string",
      "format": "id",
      "description": ""
     }
    },
    "required": [
     "brand"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "12 §3"
   },
   "BrandSiteToken": {
    "title": "BrandSiteToken",
    "description": "one custom property a site declares on its root",
    "type": "object",
    "properties": {
     "name": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "value": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "basis": {
      "$ref": "#/components/schemas/Basis",
      "description": ""
     },
     "from": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "hash"
      },
      "description": ""
     }
    },
    "required": [
     "name",
     "value",
     "basis",
     "from"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "DESIGN/the-brand-graph-from-a-domain §5"
   },
   "CriterionVerdict": {
    "title": "CriterionVerdict",
    "description": "one criterion of a kind of buyer judged for one entity",
    "type": "object",
    "properties": {
     "criterion": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "mode": {
      "type": "string",
      "enum": [
       "required",
       "disqualifying",
       "scored",
       "intent"
      ],
      "description": ""
     },
     "weight": {
      "type": "number",
      "format": "number",
      "description": ""
     },
     "probability": {
      "type": "number",
      "format": "number",
      "description": "absent when the criterion is missing"
     },
     "basis": {
      "$ref": "#/components/schemas/Basis",
      "description": "measured, or inferred with the model"
     },
     "highlights": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/Highlight"
      },
      "description": ""
     },
     "missing": {
      "type": "string",
      "format": "text",
      "description": "what the record does not hold"
     }
    },
    "required": [
     "criterion",
     "mode",
     "weight",
     "basis",
     "highlights"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "08 §2; MODELS/the-fit-of-a-buyer-and-the-package-of-a-lead"
   },
   "ScrapeResult": {
    "title": "ScrapeResult",
    "description": "the rows a scrape made, each a source object with its evidence span, the pages walked, what the filter denied, and the hops",
    "type": "object",
    "properties": {
     "rows": {
      "type": "array",
      "items": {},
      "description": "each the serialisation of the declared source object"
     },
     "evidence": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "text"
      },
      "description": "the span each value was read from"
     },
     "pages_walked": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "pages_refused": {
      "type": "integer",
      "format": "count",
      "description": "by the rights row or the filter"
     },
     "artefact_hashes": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "hash"
      },
      "description": ""
     },
     "hops": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/HopStamp"
      },
      "description": ""
     }
    },
    "required": [
     "rows",
     "evidence",
     "pages_walked",
     "pages_refused",
     "artefact_hashes",
     "hops"
    ],
    "additionalProperties": false,
    "x-kind": "view",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "18 §2.18"
   },
   "BuildDocumentInput": {
    "title": "BuildDocumentInput",
    "description": "a document, as of two dates",
    "type": "object",
    "properties": {
     "document": {
      "type": "string",
      "format": "id",
      "description": ""
     }
    },
    "required": [
     "document"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "17 §3"
   },
   "TelemetryContext": {
    "title": "TelemetryContext",
    "description": "the W3C trace context every call, event and message carries: the trace id, the parent span, and the attributes the platform adds",
    "type": "object",
    "properties": {
     "trace_id": {
      "type": "string",
      "format": "hash",
      "description": ""
     },
     "parent_span_id": {
      "type": "string",
      "format": "hash",
      "description": ""
     },
     "tenant": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "scope": {
      "$ref": "#/components/schemas/Scope",
      "description": ""
     },
     "tool": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "job_key": {
      "type": "string",
      "format": "text",
      "description": "the durable job's idempotency key, so a trace and a job are joined"
     }
    },
    "required": [
     "trace_id"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "22 §2.1"
   },
   "PreviewAnswer": {
    "title": "PreviewAnswer",
    "description": "the one typed answer of a preview, at any speed",
    "type": "object",
    "properties": {
     "count": {
      "type": "integer",
      "format": "count",
      "description": "measured; there is no slot for a number when nothing was evaluated"
     },
     "evaluated": {
      "type": "boolean",
      "format": "bool",
      "description": ""
     },
     "coverage": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/ChannelCoverage"
      },
      "description": ""
     },
     "population": {
      "$ref": "#/components/schemas/PopulationStatement",
      "description": ""
     },
     "not_evaluable": {
      "type": "object",
      "additionalProperties": {
       "type": "integer",
       "format": "count"
      },
      "description": "for each condition, beside the count"
     },
     "limits": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "text"
      },
      "description": ""
     },
     "partial": {
      "$ref": "#/components/schemas/PartialAnswer",
      "description": ""
     },
     "founded": {
      "type": "string",
      "enum": [
       "measured",
       "projected",
       "degraded"
      ],
      "description": "never better than the weakest thing it read"
     },
     "speed": {
      "type": "string",
      "enum": [
       "instant",
       "the last seven days",
       "the whole record"
      ],
      "description": ""
     },
     "predicate_hash": {
      "type": "string",
      "format": "hash",
      "description": ""
     },
     "as_of": {
      "$ref": "#/components/schemas/TwoDates",
      "description": ""
     },
     "task": {
      "type": "string",
      "format": "id",
      "description": "for the third speed"
     },
     "sample": {
      "$ref": "#/components/schemas/PreviewSample",
      "description": "a representative sample of the units that matched, spread over the population's strata"
     }
    },
    "required": [
     "evaluated",
     "coverage",
     "population",
     "not_evaluable",
     "limits",
     "founded",
     "speed",
     "predicate_hash",
     "as_of"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "06 §2.3"
   },
   "PolicyReplayRow": {
    "title": "PolicyReplayRow",
    "description": "one logged decision: what was chosen with its odds, what the replayed policy would have chosen, and the effect that followed",
    "type": "object",
    "properties": {
     "decision": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "chosen": {
      "description": ""
     },
     "odds": {
      "type": "number",
      "format": "chance",
      "description": ""
     },
     "would_choose": {
      "description": ""
     },
     "effect": {
      "$ref": "#/components/schemas/Effect",
      "description": ""
     }
    },
    "required": [
     "decision",
     "chosen",
     "odds",
     "would_choose"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "13 §3"
   },
   "WithheldCount": {
    "title": "WithheldCount",
    "description": "the leads that exist and the plan does not yet deliver, by kind of buyer and temperature; never who",
    "type": "object",
    "properties": {
     "brand": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "period": {
      "$ref": "#/components/schemas/Window",
      "description": ""
     },
     "by_kind": {
      "type": "object",
      "additionalProperties": {
       "type": "integer",
       "format": "count"
      },
      "description": ""
     },
     "by_temperature": {
      "type": "object",
      "additionalProperties": {
       "type": "integer",
       "format": "count"
      },
      "description": ""
     },
     "limit": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "reference": {
      "type": "string",
      "format": "text",
      "description": "how to reproduce the count from the one log: the flow, the positions from and to, and the rule that a unit counts when its last event in the period withheld it"
     }
    },
    "required": [
     "brand",
     "period",
     "by_kind",
     "by_temperature",
     "limit"
    ],
    "additionalProperties": false,
    "x-kind": "view",
    "x-scope": "brand",
    "x-store": "derived",
    "x-key": "the brand, the period",
    "x-places": [],
    "x-from": "08 §2"
   },
   "Price": {
    "title": "Price",
    "description": "the price of one kind of usage under one plan kind: per unit, its currency, and the quantity the plan includes",
    "type": "object",
    "properties": {
     "kind": {
      "type": "string",
      "description": "",
      "x-register": "KindOfUsage"
     },
     "plan_kind": {
      "type": "string",
      "enum": [
       "trial",
       "paid",
       "internal"
      ],
      "description": ""
     },
     "per_unit": {
      "type": "number",
      "format": "money",
      "description": ""
     },
     "included": {
      "type": "integer",
      "format": "count",
      "description": "in the kind's unit"
     }
    },
    "required": [
     "kind",
     "plan_kind",
     "per_unit",
     "included"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "19 §2.4"
   },
   "WithheldReason": {
    "title": "WithheldReason",
    "description": "why a lead is withheld: the limit reached, with the count reproducible from the record",
    "type": "object",
    "properties": {
     "limit": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "period": {
      "type": "string",
      "format": "duration",
      "description": ""
     },
     "count_in_period": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "since": {
      "type": "string",
      "format": "time",
      "description": ""
     }
    },
    "required": [
     "limit",
     "period",
     "count_in_period",
     "since"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "08 §2; 0b of CLAUDE.md"
   },
   "Progress": {
    "title": "Progress",
    "description": "steps done of steps in all, and what the task waits for",
    "type": "object",
    "properties": {
     "done": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "of": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "waits_for": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "bytes_moved": {
      "type": "integer",
      "format": "bytes",
      "description": ""
     },
     "bytes_in_all": {
      "type": "integer",
      "format": "bytes",
      "description": ""
     }
    },
    "required": [
     "done",
     "of"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "09 §2; MODELS/the-outside-agent-path"
   },
   "Estimate": {
    "title": "Estimate",
    "description": "a point with its interval, the balance of evidence, and how familiar the case is; or withheld",
    "type": "object",
    "properties": {
     "model": {
      "type": "string",
      "description": "",
      "x-register": "Model"
     },
     "case": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "value": {
      "$ref": "#/components/schemas/Interval",
      "description": ""
     },
     "evidence": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/EvidenceRef"
      },
      "description": "each supporting or against"
     },
     "familiarity": {
      "type": "number",
      "format": "share",
      "description": ""
     },
     "withheld": {
      "type": "boolean",
      "format": "bool",
      "description": ""
     },
     "reason": {
      "type": "string",
      "format": "text",
      "description": ""
     }
    },
    "required": [
     "model",
     "case",
     "evidence",
     "familiarity",
     "withheld"
    ],
    "additionalProperties": false,
    "x-kind": "fact",
    "x-scope": "follows",
    "x-store": "postgres+lake",
    "x-key": "the model, the version and the case",
    "x-places": [],
    "x-from": "14 §2.1"
   },
   "Run": {
    "title": "Run",
    "description": "one carrying out of a workflow; every step durable work keyed by the run, the step and its input",
    "type": "object",
    "properties": {
     "workflow": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "workflow_version": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "started_by": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "steps": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/StepResult"
      },
      "description": ""
     },
     "deadline": {
      "type": "string",
      "format": "time",
      "description": ""
     },
     "budget": {
      "$ref": "#/components/schemas/Cost",
      "description": ""
     },
     "waits_for": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "caller": {
      "$ref": "#/components/schemas/Caller",
      "description": ""
     }
    },
    "required": [
     "workflow",
     "workflow_version",
     "started_by",
     "steps",
     "deadline",
     "budget",
     "caller"
    ],
    "additionalProperties": false,
    "x-kind": "work",
    "x-scope": "strategy",
    "x-store": "postgres",
    "x-key": "the workflow's version with what started it",
    "x-places": [
     "running",
     "waiting",
     "ended",
     "failed",
     "stopped"
    ],
    "x-from": "09 §2"
   },
   "ChannelRule": {
    "title": "ChannelRule",
    "description": "a channel with its rule",
    "type": "object",
    "properties": {
     "community": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "rule": {
      "type": "string",
      "format": "text",
      "description": ""
     }
    },
    "required": [
     "community",
     "rule"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "12 §2.1"
   },
   "FitCandidateMarket": {
    "title": "FitCandidateMarket",
    "description": "one market the search scored: its unmet demand and its supply from the template's run, its rivals, the plays that would be alpha there and the ones that are table stakes, and its score with the reasons",
    "type": "object",
    "properties": {
     "vertical": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "segment": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "unmet_demand": {
      "$ref": "#/components/schemas/Summary",
      "description": ""
     },
     "supply": {
      "$ref": "#/components/schemas/Summary",
      "description": ""
     },
     "rivals": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "alpha_plays": {
      "type": "array",
      "items": {
       "type": "string",
       "description": "the name of a row of Tactic",
       "x-register": "Tactic"
      },
      "description": ""
     },
     "table_stakes": {
      "type": "array",
      "items": {
       "type": "string",
       "description": "the name of a row of Tactic",
       "x-register": "Tactic"
      },
      "description": ""
     },
     "score": {
      "$ref": "#/components/schemas/Interval",
      "description": ""
     },
     "reasons": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "text"
      },
      "description": ""
     }
    },
    "required": [
     "vertical",
     "unmet_demand",
     "supply",
     "rivals",
     "alpha_plays",
     "table_stakes",
     "score",
     "reasons"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "26 §2.1"
   },
   "SemanticSearchInput": {
    "title": "SemanticSearchInput",
    "description": "a text or a subject's vector, the model, a floor and a population",
    "type": "object",
    "properties": {
     "text": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "subject": {
      "$ref": "#/components/schemas/UnitRef",
      "description": ""
     },
     "model": {
      "type": "string",
      "description": "",
      "x-register": "Model"
     },
     "floor": {
      "type": "number",
      "format": "share",
      "description": ""
     },
     "population": {
      "$ref": "#/components/schemas/Predicate",
      "description": ""
     }
    },
    "required": [
     "model",
     "floor",
     "population"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "04 §3"
   },
   "PageProperty": {
    "title": "PageProperty",
    "description": "one property a page template read: its name, its label, its value, where it came from and, for a list, how many items it holds",
    "type": "object",
    "properties": {
     "name": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "label": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "value": {
      "type": "string",
      "format": "text",
      "description": "a list lands as JSON text"
     },
     "basis": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "selector": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "truncated": {
      "type": "boolean",
      "format": "bool",
      "description": ""
     },
     "items": {
      "type": "integer",
      "format": "count",
      "description": ""
     }
    },
    "required": [
     "name",
     "label",
     "value",
     "basis"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "24 §2.1"
   },
   "PlanReportInput": {
    "title": "PlanReportInput",
    "description": "a strategy and a window",
    "type": "object",
    "properties": {
     "strategy": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "window": {
      "$ref": "#/components/schemas/Window",
      "description": ""
     }
    },
    "required": [
     "strategy"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "13 §3"
   },
   "Build": {
    "title": "Build",
    "description": "one build of a document, every number naming the unit that supplied it",
    "type": "object",
    "properties": {
     "document": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "as_of": {
      "$ref": "#/components/schemas/TwoDates",
      "description": ""
     },
     "made_from": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "id"
      },
      "description": ""
     },
     "numbers": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/ChippedNumber"
      },
      "description": ""
     },
     "figures": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "id"
      },
      "description": ""
     },
     "check": {
      "$ref": "#/components/schemas/ControlResult",
      "description": ""
     },
     "missing": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "text"
      },
      "description": "for not ready"
     }
    },
    "required": [
     "document",
     "as_of",
     "made_from",
     "numbers",
     "figures",
     "check",
     "missing"
    ],
    "additionalProperties": false,
    "x-kind": "work",
    "x-scope": "follows",
    "x-store": "postgres",
    "x-key": "the document and the two dates",
    "x-places": [
     "asked",
     "building",
     "built",
     "not ready"
    ],
    "x-from": "17 §2.1"
   },
   "ApprovalRequest": {
    "title": "ApprovalRequest",
    "description": "a request the server raises when the permission check's verdict is propose: the action, its inverse, the verdict and the reason; the turn waits for the client's answer",
    "type": "object",
    "properties": {
     "id": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "action": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "inverse": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "verdict": {
      "$ref": "#/components/schemas/PermissionAnswer",
      "description": ""
     },
     "reason": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "answer": {
      "type": "string",
      "enum": [
       "allow",
       "deny",
       "allow-for-session"
      ],
      "description": ""
     },
     "answered_by": {
      "$ref": "#/components/schemas/Caller",
      "description": ""
     }
    },
    "required": [
     "id",
     "action",
     "verdict",
     "reason"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "09 §2.2; 03 §2.4"
   },
   "EstimateReturnInput": {
    "title": "EstimateReturnInput",
    "description": "the buyer, the offering or tier, the numbers stated for this ask, and whether to simulate",
    "type": "object",
    "properties": {
     "buyer": {
      "$ref": "#/components/schemas/UnitRef",
      "description": ""
     },
     "offering": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "tier": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "stated": {
      "type": "object",
      "additionalProperties": {},
      "description": "driver name to value, each written as a stated number before the estimate reads it"
     },
     "simulate": {
      "type": "boolean",
      "format": "bool",
      "description": ""
     }
    },
    "required": [
     "buyer",
     "simulate"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "one ask of an estimate",
    "x-places": [],
    "x-from": "25 §3"
   },
   "BuyingBehaviour": {
    "title": "BuyingBehaviour",
    "description": "how one participant buys, as observable stocks and flows: the stage it stands on, how often it buys, what starts a purchase, what constrains it, and the readings that say so",
    "type": "object",
    "properties": {
     "stage": {
      "type": "string",
      "format": "text",
      "description": "the rung of the ladder the participant stands on, in the ladder's words"
     },
     "cadence": {
      "type": "string",
      "format": "text",
      "description": "how often it buys, in the vertical's words"
     },
     "triggers": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "text"
      },
      "description": "what starts a purchase"
     },
     "constraints": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "text"
      },
      "description": "what blocks or delays one"
     },
     "budget_cycle": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "decision_time": {
      "type": "string",
      "format": "duration",
      "description": "from the felt problem to the order, where read"
     },
     "readings": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/Summary"
      },
      "description": "every count behind the words, in one of three positions"
     },
     "evidence": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/EvidenceRef"
      },
      "description": ""
     }
    },
    "required": [
     "stage",
     "cadence",
     "triggers",
     "constraints",
     "readings",
     "evidence"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "26 §2.1"
   },
   "ConnectionRole": {
    "title": "ConnectionRole",
    "description": "a role a member may play",
    "type": "object",
    "properties": {
     "name": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "allowed_kinds": {
      "type": "array",
      "items": {
       "type": "string",
       "description": "the name of a row of KindOfEntity",
       "x-register": "KindOfEntity"
      },
      "description": ""
     },
     "allowed_definitions": {
      "type": "array",
      "items": {
       "type": "string",
       "enum": [
        "a buyer profile",
        "a segment",
        "a play",
        "a proxy",
        "a ladder",
        "a document"
       ]
      },
      "description": "the kinds of definition a member may be, such as a buyer profile for the connection written for"
     },
     "optional": {
      "type": "boolean",
      "format": "bool",
      "description": "true when a connection of the kind may omit the role: a rivalry a source states without its segment or place is still a rivalry (D-108)"
     },
     "cardinality": {
      "type": "string",
      "enum": [
       "one",
       "many"
      ],
      "description": ""
     }
    },
    "required": [
     "name",
     "allowed_kinds",
     "cardinality"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "DOMAIN/03 §4"
   },
   "ActionArgument": {
    "title": "ActionArgument",
    "description": "an argument and where its value came from",
    "type": "object",
    "properties": {
     "name": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "value": {
      "description": ""
     },
     "came_from": {
      "type": "string",
      "enum": [
       "the record by id",
       "a definition",
       "a person's own words"
      ],
      "description": ""
     },
     "ref": {
      "type": "string",
      "format": "id",
      "description": ""
     }
    },
    "required": [
     "name",
     "value",
     "came_from"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "13 §2.1; D-42"
   },
   "FacetCandidate": {
    "title": "FacetCandidate",
    "description": "a candidate community of a facet",
    "type": "object",
    "properties": {
     "community": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "found_by": {
      "type": "string",
      "enum": [
       "lexical",
       "behavioural",
       "semantic"
      ],
      "description": "which way found it"
     },
     "overlap": {
      "type": "number",
      "format": "share",
      "description": "the share of the room's people who are the seed's, as measured"
     },
     "lift": {
      "type": "number",
      "format": "number",
      "description": "the lower bound of that share at the engine's confidence, over the seed's base rate: the measure the room is kept by"
     },
     "kept": {
      "type": "boolean",
      "format": "bool",
      "description": ""
     },
     "reason": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "adult_share": {
      "type": "number",
      "format": "share",
      "description": "the share of the room's posts that its platform marks adult, as counted from the posts; absent when the presence reads no texts"
     },
     "adult": {
      "type": "boolean",
      "format": "bool",
      "description": "true when the share is at or over the share that marks a room adult; a marked room is kept by the same bar as any other and left out of every read by default (D-128)"
     }
    },
    "required": [
     "community",
     "found_by",
     "overlap",
     "kept",
     "reason",
     "adult"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "06 §2.1"
   },
   "AlarmRaising": {
    "title": "AlarmRaising",
    "description": "one raising of an alarm",
    "type": "object",
    "properties": {
     "alarm": {
      "type": "string",
      "description": "",
      "x-register": "Alarm"
     },
     "read": {
      "description": ""
     },
     "acknowledged_by": {
      "$ref": "#/components/schemas/Caller",
      "description": ""
     }
    },
    "required": [
     "alarm",
     "read"
    ],
    "additionalProperties": false,
    "x-kind": "work",
    "x-scope": "platform",
    "x-store": "postgres",
    "x-key": "the alarm and the moment",
    "x-places": [
     "raised",
     "acknowledged",
     "cleared"
    ],
    "x-from": "19 §2.1"
   },
   "ValueChain": {
    "title": "ValueChain",
    "description": "the chain of a vertical with the participants placed on its stocks, the loops the template names over it, and when it was read; answered from the chain, the participants and the readings and held nowhere",
    "type": "object",
    "properties": {
     "vertical": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "chain": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "stocks": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/ChainStock"
      },
      "description": ""
     },
     "handovers": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/ChainHandover"
      },
      "description": ""
     },
     "participants": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/MarketParticipant"
      },
      "description": ""
     },
     "loops": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/FeedbackLoop"
      },
      "description": ""
     },
     "read_at": {
      "type": "string",
      "format": "time",
      "description": ""
     }
    },
    "required": [
     "vertical",
     "chain",
     "stocks",
     "handovers",
     "participants",
     "loops",
     "read_at"
    ],
    "additionalProperties": false,
    "x-kind": "view",
    "x-scope": "brand",
    "x-store": "derived",
    "x-key": "the vertical and the brand",
    "x-places": [],
    "x-from": "26 §2.1"
   },
   "FitReadingInput": {
    "title": "FitReadingInput",
    "description": "one result of a person's own fit test, as they state it",
    "type": "object",
    "properties": {
     "tactic": {
      "type": "string",
      "description": "",
      "x-register": "Tactic"
     },
     "vertical": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "segment": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "offering": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "measure": {
      "type": "string",
      "description": "",
      "x-register": "KindOfMeasure"
     },
     "value": {
      "description": "the number, or never measured with the reason"
     },
     "sample": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "source": {
      "type": "string",
      "enum": [
       "a form",
       "a CRM",
       "a capture",
       "an upload",
       "a call",
       "the record"
      ],
      "description": ""
     },
     "hypothesis": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "note": {
      "type": "string",
      "format": "text",
      "description": ""
     }
    },
    "required": [
     "tactic",
     "vertical",
     "measure",
     "value",
     "source"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "26 §3"
   },
   "PlatformApiObject": {
    "title": "PlatformApiObject",
    "description": "one object of a platform's API: the addresses that answer it, what it yields, the paths read from its JSON and the lists it carries",
    "type": "object",
    "properties": {
     "name": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "address_patterns": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "text"
      },
      "description": ""
     },
     "yields": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "fields": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/FieldSpec"
      },
      "description": ""
     },
     "lists": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/PlatformList"
      },
      "description": ""
     },
     "needs": {
      "type": "string",
      "enum": [
       "anyone",
       "signed in",
       "connected",
       "member",
       "admin",
       "premium",
       "licensed"
      ],
      "description": "what the viewer must be for the call to answer as described"
     }
    },
    "required": [
     "name",
     "address_patterns",
     "yields",
     "fields",
     "lists",
     "needs"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "24 §2.1"
   },
   "LakeFile": {
    "title": "LakeFile",
    "description": "one file of a partition",
    "type": "object",
    "properties": {
     "path": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "hash": {
      "type": "string",
      "format": "hash",
      "description": ""
     },
     "bytes": {
      "type": "integer",
      "format": "bytes",
      "description": ""
     },
     "rows": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "modified": {
      "type": "string",
      "format": "time",
      "description": "when the file last changed, as the file system reports it; a reader hashes a file again only when its bytes or this time moved, so a reading grows by the files that arrived"
     }
    },
    "required": [
     "path",
     "hash",
     "bytes",
     "rows"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "04 §2.2"
   },
   "ExtensionSession": {
    "title": "ExtensionSession",
    "description": "the extension's sign-in: the person, the tenant, the token's expiry, the transport in use and the contract hash the server reports",
    "type": "object",
    "properties": {
     "person": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "tenant": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "expires": {
      "type": "string",
      "format": "time",
      "description": ""
     },
     "transport": {
      "type": "string",
      "enum": [
       "loopback",
       "gateway"
      ],
      "description": ""
     },
     "contract_hash": {
      "type": "string",
      "format": "hash",
      "description": ""
     }
    },
    "required": [
     "person",
     "tenant",
     "expires",
     "transport",
     "contract_hash"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "24 §2.1"
   },
   "AccessMethod": {
    "title": "AccessMethod",
    "description": "one access method for one source (a way, for short, in specification 7): its kind, transport, credential kind, proxy policy, depth, rate, politeness, cost and contract",
    "type": "object",
    "properties": {
     "name": {
      "type": "string",
      "format": "text",
      "description": "the way's name: its source and its kind, as one name, which a job and a backfill name it by"
     },
     "source": {
      "type": "string",
      "description": "",
      "x-register": "Source"
     },
     "kind": {
      "type": "string",
      "enum": [
       "a bulk file",
       "an official interface",
       "a public page",
       "a licensed file",
       "a signed-in session",
       "a person's own browser"
      ],
      "description": "the method, as the field says it"
     },
     "transport": {
      "type": "string",
      "description": "one shared client; a connector never speaks it",
      "x-register": "TransportKind"
     },
     "credential_kind": {
      "type": "string",
      "enum": [
       "none",
       "an API key",
       "a bearer token",
       "OAuth 2",
       "OAuth 1",
       "basic",
       "a signed request",
       "a service account",
       "a client certificate",
       "an SSH key",
       "a webhook secret",
       "a signed-in identity",
       "the person's own signed-in session"
      ],
      "description": "the person's own signed-in session is the credential of a person's own browser: the capture extension reads under it as that person, and it is never lent (18 §2.2); a signed-in identity is a held identity that the platform keeps"
     },
     "proxy_policy": {
      "$ref": "#/components/schemas/ProxyPolicy",
      "description": ""
     },
     "depth": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "rate": {
      "$ref": "#/components/schemas/RateBound",
      "description": "numeric, or the way is unplannable"
     },
     "contract": {
      "$ref": "#/components/schemas/WayContract",
      "description": ""
     },
     "units_yielded": {
      "type": "array",
      "items": {
       "type": "string",
       "description": "the name of a row of SourceObject",
       "x-register": "SourceObject"
      },
      "description": ""
     },
     "addressed_by": {
      "type": "string",
      "enum": [
       "a channel",
       "a query",
       "a file"
      ],
      "description": "how the way names what it reads, the addressing that bounds each fetch (18 §2.1, SR-1801): a channel is a standing place that the source publishes into, such as a community, an account, a feed or a page that a person opens, and the way reads what appears there; a query is a question that the source returns results for, such as a search or an interface call with filters; a file is a whole file or dump that the way names by its address, such as a monthly dump or a held catalogue"
     },
     "coverage_window": {
      "$ref": "#/components/schemas/Window",
      "description": ""
     },
     "legality": {
      "type": "string",
      "enum": [
       "allowed",
       "not allowed",
       "paid",
       "unknown"
      ],
      "description": "follows the legality tier of the way's source: unknown while that tier is unknown, rejected or unusable, and not allowed while the tier is not allowed; a way with no row is not allowed (SR-0730)"
     },
     "limits": {
      "type": "object",
      "additionalProperties": {
       "type": "integer",
       "format": "count"
      },
      "description": "per-call limits as data"
     },
     "host": {
      "type": "string",
      "enum": [
       "the acquisition system",
       "the connector host",
       "the capture extension"
      ],
      "description": ""
     }
    },
    "required": [
     "name",
     "source",
     "kind",
     "transport",
     "credential_kind",
     "depth",
     "rate",
     "contract",
     "units_yielded",
     "addressed_by",
     "legality",
     "limits",
     "host"
    ],
    "additionalProperties": false,
    "x-kind": "row",
    "x-scope": "platform",
    "x-store": "postgres",
    "x-key": "the source and the kind",
    "x-places": [],
    "x-from": "07 §2.1; 18 §2.1; D-70"
   },
   "AcquisitionPlan": {
    "title": "AcquisitionPlan",
    "description": "what one beat issued and declined, adding up to its budget",
    "type": "object",
    "properties": {
     "plane": {
      "$ref": "#/components/schemas/Plane",
      "description": ""
     },
     "beat": {
      "type": "string",
      "description": "",
      "x-register": "Beat"
     },
     "issued": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "id"
      },
      "description": ""
     },
     "declined": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/DeclinedCell"
      },
      "description": ""
     },
     "budget": {
      "$ref": "#/components/schemas/Cost",
      "description": ""
     }
    },
    "required": [
     "plane",
     "beat",
     "issued",
     "declined",
     "budget"
    ],
    "additionalProperties": false,
    "x-kind": "fact",
    "x-scope": "follows",
    "x-store": "postgres",
    "x-key": "the plane and the beat",
    "x-places": [],
    "x-from": "07 §2.3"
   },
   "VaultEntry": {
    "title": "VaultEntry",
    "description": "a secret, encrypted under its owner's key; never in a table, a log, an address or an event",
    "type": "object",
    "properties": {
     "owner": {
      "type": "string",
      "enum": [
       "the platform",
       "a tenant"
      ],
      "description": ""
     },
     "purpose": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "versions": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/SecretVersion"
      },
      "description": "each with who rotated it"
     },
     "calls_that_may_use_it": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "text"
      },
      "description": ""
     },
     "last_used_at": {
      "type": "string",
      "format": "time",
      "description": ""
     },
     "last_used_by_role": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "where_on": {
      "type": "string",
      "format": "text",
      "description": ""
     }
    },
    "required": [
     "owner",
     "purpose",
     "versions",
     "calls_that_may_use_it",
     "where_on"
    ],
    "additionalProperties": false,
    "x-kind": "definition",
    "x-scope": "tenant",
    "x-store": "vault",
    "x-key": "its owner and what it is for",
    "x-places": [],
    "x-from": "03 §2.2; 19 §2.1; D-50"
   },
   "DocumentChangesInput": {
    "title": "DocumentChangesInput",
    "description": "two versions of one document",
    "type": "object",
    "properties": {
     "document": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "first": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "second": {
      "type": "integer",
      "format": "count",
      "description": ""
     }
    },
    "required": [
     "document",
     "first",
     "second"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "17 §3"
   },
   "LookupInput": {
    "title": "LookupInput",
    "description": "a key: a namespace with a value, or a name with a place",
    "type": "object",
    "properties": {
     "namespace": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "value": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "name": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "place": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "kind": {
      "type": "string",
      "description": "",
      "x-register": "KindOfEntity"
     },
     "breadth": {
      "type": "string",
      "enum": [
       "exact",
       "similar",
       "related",
       "broad"
      ],
      "description": "with a name: the one candidate search of the record at that breadth (specification 24 section 2.8), by exact keys, names and meaning, in place of the substring match"
     }
    },
    "required": [],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "05 §3"
   },
   "GroundingPriorsInput": {
    "title": "GroundingPriorsInput",
    "description": "the priors of grounding: one platform's, or every platform's",
    "type": "object",
    "properties": {
     "platform": {
      "type": "string",
      "format": "text",
      "description": ""
     }
    },
    "required": [],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "24 §3"
   },
   "ExportReceipt": {
    "title": "ExportReceipt",
    "description": "the receipt of a tenant's or a person's export: who asked, when it ran, every file with its hash and its count",
    "type": "object",
    "properties": {
     "tenant": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "subject": {
      "type": "string",
      "format": "id",
      "description": "a person, for a person's export"
     },
     "asked_by": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "ran_at": {
      "type": "string",
      "format": "time",
      "description": ""
     },
     "files": {
      "type": "array",
      "items": {},
      "description": "path, hash, rows"
     },
     "hash": {
      "type": "string",
      "format": "hash",
      "description": ""
     }
    },
    "required": [
     "tenant",
     "asked_by",
     "ran_at",
     "files",
     "hash"
    ],
    "additionalProperties": false,
    "x-kind": "fact",
    "x-scope": "platform",
    "x-store": "postgres",
    "x-key": "the tenant and the time",
    "x-places": [],
    "x-from": "03 §2.9"
   },
   "PlatformThing": {
    "title": "PlatformThing",
    "description": "one kind of thing a platform holds, in the platform's own words, and the registered kind it becomes: its key on the platform, the fields kept as long texts, the fields that are outbound links, and the counts it shows",
    "type": "object",
    "properties": {
     "name": {
      "type": "string",
      "format": "text",
      "description": "the platform's word: user profile, organisation profile, repository, package, job posting"
     },
     "becomes": {
      "type": "string",
      "description": "",
      "x-register": "KindOfEntity"
     },
     "key_namespace": {
      "type": "string",
      "format": "text",
      "description": "the identifier namespace of the thing's own key on the platform"
     },
     "key_prefix": {
      "type": "string",
      "format": "text",
      "description": "the prefix the key carries, such as github:"
     },
     "key_field": {
      "type": "string",
      "format": "text",
      "description": "the field that carries the key on its pages and in the API"
     },
     "texts": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "text"
      },
      "description": "the fields kept as long texts"
     },
     "links": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "text"
      },
      "description": "the fields that are outbound links"
     },
     "measures": {
      "type": "array",
      "items": {
       "type": "string",
       "description": "the name of a row of KindOfMeasure",
       "x-register": "KindOfMeasure"
      },
      "description": "the counts the thing shows"
     },
     "note": {
      "type": "string",
      "format": "text",
      "description": ""
     }
    },
    "required": [
     "name",
     "becomes",
     "key_namespace",
     "key_field",
     "texts",
     "links",
     "measures"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "24 §2.1"
   },
   "Lineage": {
    "title": "Lineage",
    "description": "every hop of a unit with its stamp and span, and its downstream footprint, marking unavailable what a store cannot answer",
    "type": "object",
    "properties": {
     "hops": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/HopStamp"
      },
      "description": ""
     },
     "footprint": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "id"
      },
      "description": ""
     },
     "unavailable": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "text"
      },
      "description": ""
     }
    },
    "required": [
     "hops",
     "footprint",
     "unavailable"
    ],
    "additionalProperties": false,
    "x-kind": "view",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "18 §2.17"
   },
   "PreviewSample": {
    "title": "PreviewSample",
    "description": "a representative sample of the units a predicate matched: at most the asked number, spread over the population's strata in proportion with at least one from each stratum that matched, chosen by the hash of the unit so the same predicate gives the same sample",
    "type": "object",
    "properties": {
     "units": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/SampleUnit"
      },
      "description": ""
     },
     "strata": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/SampleStratum"
      },
      "description": ""
     },
     "asked": {
      "type": "integer",
      "format": "count",
      "description": "the size asked for"
     },
     "method": {
      "type": "string",
      "format": "text",
      "description": "how the sample was drawn"
     }
    },
    "required": [
     "units",
     "strata",
     "asked",
     "method"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "06 §2.4"
   },
   "ModelStock": {
    "title": "ModelStock",
    "description": "one stock of a systems model: the units of one kind in one place, read from a chain stock where the chain holds one",
    "type": "object",
    "properties": {
     "name": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "unit": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "chain_stock": {
      "type": "string",
      "format": "text",
      "description": "the chain stock whose count starts it, by name"
     },
     "initial": {
      "$ref": "#/components/schemas/DriverNode",
      "description": "how its starting level is read when no chain stock holds it"
     },
     "reader": {
      "type": "string",
      "format": "text",
      "description": "who reads it; a stock with no reader is a leak"
     },
     "waiting": {
      "type": "string",
      "format": "duration",
      "description": "how long a unit may wait on it"
     }
    },
    "required": [
     "name",
     "unit",
     "reader"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "26 §2.1"
   },
   "Answer": {
    "title": "Answer",
    "description": "what every operation gives: the value, its population, and for every count which of the three positions it is in",
    "type": "object",
    "properties": {
     "card": {
      "$ref": "#/components/schemas/Card",
      "description": ""
     },
     "refusal": {
      "$ref": "#/components/schemas/Refusal",
      "description": ""
     },
     "task": {
      "type": "string",
      "format": "id",
      "description": "for a long step"
     }
    },
    "required": [
     "card"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "10 §2"
   },
   "Propensity": {
    "title": "Propensity",
    "description": "the propensity of one buyer to buy one offering: an estimate with its interval and its balance of evidence, and the causes as the evidence that moved it with their weights",
    "type": "object",
    "properties": {
     "buyer": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "offering": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "estimate": {
      "$ref": "#/components/schemas/Estimate",
      "description": "never a point without its interval"
     },
     "causes": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/EvidenceRef"
      },
      "description": "what moved it, with weights"
     },
     "inputs": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "text"
      },
      "description": "the stage, the motives, the means, the affinity, the constraints and the demand mode read"
     },
     "as_of": {
      "$ref": "#/components/schemas/TwoDates",
      "description": ""
     }
    },
    "required": [
     "buyer",
     "offering",
     "estimate",
     "causes",
     "inputs",
     "as_of"
    ],
    "additionalProperties": false,
    "x-kind": "fact",
    "x-scope": "follows",
    "x-store": "postgres+lake",
    "x-key": "the buyer, the offering and the two dates",
    "x-places": [],
    "x-from": "14 §2.4"
   },
   "RemovalRequest": {
    "title": "RemovalRequest",
    "description": "a person is to be removed; carried out only when every part reports that it is gone",
    "type": "object",
    "properties": {
     "asked_by": {
      "$ref": "#/components/schemas/Caller",
      "description": ""
     },
     "person": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "proof": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "reason": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "places_reached": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/RemovalReceipt"
      },
      "description": "the seven places a fact touches, each with a count before and a zero after"
     }
    },
    "required": [
     "asked_by",
     "person",
     "proof",
     "reason",
     "places_reached"
    ],
    "additionalProperties": false,
    "x-kind": "work",
    "x-scope": "tenant",
    "x-store": "postgres",
    "x-key": "who asks and the person named",
    "x-places": [
     "received",
     "verified",
     "carried out",
     "declined"
    ],
    "x-from": "03 §2.2; 04 §5"
   },
   "Artefact": {
    "title": "Artefact",
    "description": "the single artefact generated from every register, built into types in both repositories",
    "type": "object",
    "properties": {
     "hash": {
      "type": "string",
      "format": "hash",
      "description": "over its registers' rows"
     },
     "register_hash": {
      "type": "string",
      "format": "hash",
      "description": "the type register it was generated with"
     },
     "registers": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/Register"
      },
      "description": ""
     },
     "built_at": {
      "type": "string",
      "format": "time",
      "description": ""
     },
     "pinned_by": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "text"
      },
      "description": "the repositories and the versions that pin it"
     }
    },
    "required": [
     "hash",
     "register_hash",
     "registers",
     "built_at",
     "pinned_by"
    ],
    "additionalProperties": false,
    "x-kind": "definition",
    "x-scope": "platform",
    "x-store": "postgres",
    "x-key": "the hash of its content",
    "x-places": [],
    "x-from": "02 §2.3"
   },
   "OfferingStructure": {
    "title": "OfferingStructure",
    "description": "package, variant, part or complement",
    "type": "object",
    "properties": {
     "kind": {
      "type": "string",
      "enum": [
       "package",
       "variant",
       "part",
       "complement"
      ],
      "description": ""
     },
     "other": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "quantity": {
      "type": "integer",
      "format": "count",
      "description": "how many of the part a kit holds"
     }
    },
    "required": [
     "kind",
     "other"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "12 §2.1"
   },
   "Offering": {
    "title": "Offering",
    "description": "what a brand sells, with its structure and its prices as facts",
    "type": "object",
    "properties": {
     "brand": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "name": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "structure": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/OfferingStructure"
      },
      "description": ""
     },
     "prices": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/Claim"
      },
      "description": "a price is a claim with two times"
     },
     "claims": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/Claim"
      },
      "description": ""
     },
     "front_door": {
      "type": "string",
      "format": "text",
      "description": ""
     }
    },
    "required": [
     "brand",
     "name",
     "structure",
     "prices",
     "claims"
    ],
    "additionalProperties": false,
    "x-kind": "entity",
    "x-scope": "shared",
    "x-store": "postgres",
    "x-key": "the brand and its own name or address",
    "x-places": [],
    "x-from": "12 §2.1"
   },
   "SourceObject": {
    "title": "SourceObject",
    "description": "one kind of thing a source holds, in the source's own words",
    "type": "object",
    "properties": {
     "source": {
      "type": "string",
      "description": "",
      "x-register": "Source"
     },
     "name": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "fields": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/SourceField"
      },
      "description": ""
     },
     "ids": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/SourceId"
      },
      "description": ""
     },
     "times": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/SourceTime"
      },
      "description": ""
     },
     "measures": {
      "type": "array",
      "items": {
       "type": "string",
       "description": "the name of a row of KindOfMeasure",
       "x-register": "KindOfMeasure"
      },
      "description": ""
     },
     "links": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/SourceLink"
      },
      "description": ""
     },
     "plane": {
      "$ref": "#/components/schemas/Plane",
      "description": "absent for the platform's row; a tenant's extension row adds fields to a platform source object for that tenant only"
     },
     "declared": {
      "type": "string",
      "format": "text",
      "description": "the source's own description of the object, in its words, when it has one"
     },
     "header_fields": {
      "type": "object",
      "additionalProperties": {
       "type": "string",
       "format": "text"
      },
      "description": "which declared field fills each identity field of the shared silver header, by the header's own names: author_account, community, parent, thread_root, text; the refine of every way fills the header from this and never from a field chosen in code"
     }
    },
    "required": [
     "source",
     "name",
     "fields",
     "ids",
     "times",
     "measures",
     "links"
    ],
    "additionalProperties": false,
    "x-kind": "row",
    "x-scope": "platform",
    "x-store": "postgres",
    "x-key": "the source and its name",
    "x-places": [],
    "x-from": "07 §2.1; DOMAIN/07"
   },
   "BrowsingStep": {
    "title": "BrowsingStep",
    "description": "one step in a browser, the agent's in a browsing session or the person's own as the extension saw it under a capture rule: navigate, read, click, type, select, submit, scroll, wait, screenshot, download, close; a step that submits or sends is an action with a reach",
    "type": "object",
    "properties": {
     "kind": {
      "type": "string",
      "enum": [
       "navigate",
       "read",
       "click",
       "type",
       "press",
       "select",
       "submit",
       "scroll",
       "wait",
       "screenshot",
       "download",
       "close"
      ],
      "description": "a press step presses one key, named in the value by its standard key name (Backspace, Delete, Tab, Enter, Escape, ArrowLeft, ArrowRight, ArrowUp, ArrowDown, Home, End, PageUp, PageDown, Space)"
     },
     "target": {
      "type": "string",
      "format": "text",
      "description": "an address, a selector, an accessibility node, or a point on the page as x,y for a click; a type or press step with no target acts on the field that has focus"
     },
     "value": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "reading": {
      "type": "string",
      "enum": [
       "none",
       "the address and the title",
       "the whole page"
      ],
      "description": "what the step reads of the page after it acts; absent means the whole page for navigate, read, scroll and wait, and the address and the title for click, type, press, select and submit"
     },
     "reach": {
      "type": "string",
      "enum": [
       "reads only",
       "writes to the tenant's own system",
       "speaks as the brand",
       "spends money outside",
       "sends to a person"
      ],
      "description": "reads only unless the step submits or sends"
     },
     "result": {
      "description": "the accessibility tree, the text, the markdown, the screenshot's hash"
     },
     "hop": {
      "$ref": "#/components/schemas/HopStamp",
      "description": ""
     }
    },
    "required": [
     "kind",
     "reach",
     "hop"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "18 §2.19; 24 §2.2"
   },
   "Community": {
    "title": "Community",
    "description": "a room where people gather",
    "type": "object",
    "properties": {
     "platform": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "name": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "members": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "posture": {
      "$ref": "#/components/schemas/CommunityPosture",
      "description": ""
     }
    },
    "required": [
     "platform",
     "name"
    ],
    "additionalProperties": false,
    "x-kind": "entity",
    "x-scope": "shared",
    "x-store": "postgres",
    "x-key": "the platform and its own id",
    "x-places": [],
    "x-from": "12 §2.1; DOMAIN/03"
   },
   "LegalHold": {
    "title": "LegalHold",
    "description": "a hold that stops an erasure of a subject, with its reason, who set it and until when",
    "type": "object",
    "properties": {
     "subject": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "reason": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "set_by": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "until": {
      "type": "string",
      "format": "date",
      "description": ""
     }
    },
    "required": [
     "subject",
     "reason",
     "set_by"
    ],
    "additionalProperties": false,
    "x-kind": "definition",
    "x-scope": "tenant",
    "x-store": "postgres",
    "x-key": "the subject",
    "x-places": [],
    "x-from": "03 §2.9"
   },
   "SubscriptionPlan": {
    "title": "SubscriptionPlan",
    "description": "the limits a tenant receives, each a parameter of the receive family, and its kind: trial, paid or internal; acquisition never reads it",
    "type": "object",
    "properties": {
     "name": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "tenant": {
      "type": "string",
      "format": "id",
      "description": "the tenant the plan limits; absent on a plan embedded in a tenant's row at sign-up"
     },
     "leads_per_period": {
      "type": "integer",
      "format": "count",
      "description": "enforced at delivery, counted across the tenant's brands"
     },
     "period": {
      "type": "string",
      "format": "duration",
      "description": ""
     },
     "definitions_armed": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "starts_at": {
      "type": "string",
      "format": "time",
      "description": ""
     },
     "ends_at": {
      "type": "string",
      "format": "time",
      "description": ""
     },
     "kind": {
      "type": "string",
      "enum": [
       "trial",
       "paid",
       "internal"
      ],
      "description": ""
     },
     "ends": {
      "type": "string",
      "format": "date",
      "description": "a trial's end"
     }
    },
    "required": [
     "name",
     "leads_per_period",
     "period",
     "starts_at",
     "kind"
    ],
    "additionalProperties": false,
    "x-kind": "definition",
    "x-scope": "tenant",
    "x-store": "postgres",
    "x-key": "the tenant and its dates",
    "x-places": [],
    "x-from": "03 §2.2; 03 §2.8; 08 §2"
   },
   "Publishing": {
    "title": "Publishing",
    "description": "a document put at an address, a kind of action with reach",
    "type": "object",
    "properties": {
     "build": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "address": {
      "type": "string",
      "format": "address",
      "description": ""
     },
     "key": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "receipt": {
      "$ref": "#/components/schemas/PublishingReceipt",
      "description": ""
     },
     "action": {
      "type": "string",
      "format": "id",
      "description": ""
     }
    },
    "required": [
     "build",
     "address",
     "action"
    ],
    "additionalProperties": false,
    "x-kind": "work",
    "x-scope": "follows",
    "x-store": "postgres",
    "x-key": "the document's version and the address",
    "x-places": [
     "proposed",
     "published",
     "withdrawn"
    ],
    "x-from": "17 §2.1"
   },
   "GroupsInput": {
    "title": "GroupsInput",
    "description": "a scope, the two dates, and the resolution of the cut",
    "type": "object",
    "properties": {
     "scope": {
      "$ref": "#/components/schemas/Predicate",
      "description": ""
     },
     "resolution": {
      "type": "number",
      "format": "share",
      "description": ""
     }
    },
    "required": [
     "scope",
     "resolution"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "04 §3; SR-0433"
   },
   "WayContract": {
    "title": "WayContract",
    "description": "the contract of a way",
    "type": "object",
    "properties": {
     "transport": {
      "type": "string",
      "format": "text",
      "description": "the way's own transport written again, the name of a row of the transports; the way's transport field is the authority, and the register build rejects a contract that names another"
     },
     "unit_of_input": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "cursor_kind": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "yesterday_is_cheap": {
      "type": "boolean",
      "format": "bool",
      "description": ""
     },
     "deletions_visible": {
      "type": "boolean",
      "format": "bool",
      "description": ""
     },
     "edits_visible": {
      "type": "boolean",
      "format": "bool",
      "description": ""
     },
     "probe": {
      "type": "string",
      "format": "text",
      "description": "a cheap probe where one exists"
     },
     "release_rule": {
      "type": "string",
      "enum": [
       "appends",
       "republishes whole",
       "publishes its changes"
      ],
      "description": "for a source that republishes whole, a row that vanishes is itself the news"
     }
    },
    "required": [
     "transport",
     "unit_of_input",
     "cursor_kind",
     "yesterday_is_cheap",
     "deletions_visible",
     "edits_visible"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "07 §2.1"
   },
   "PolicyReplayInput": {
    "title": "PolicyReplayInput",
    "description": "a policy and its version replayed on a strategy's logged decisions over a window",
    "type": "object",
    "properties": {
     "policy": {
      "type": "string",
      "description": "",
      "x-register": "Policy"
     },
     "strategy": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "window": {
      "$ref": "#/components/schemas/Window",
      "description": ""
     }
    },
    "required": [
     "policy",
     "strategy"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "13 §3; MODELS/the-strategy-system-as-a-formal-model §8.4"
   },
   "BrandAsset": {
    "title": "BrandAsset",
    "description": "one file a page loads, held whole in bronze",
    "type": "object",
    "properties": {
     "address": {
      "type": "string",
      "format": "address",
      "description": ""
     },
     "artefact": {
      "type": "string",
      "format": "hash",
      "description": ""
     },
     "kind": {
      "type": "string",
      "format": "text",
      "description": "png, jpeg, gif, webp, svg, ico, woff, woff2, ttf, otf, mp4, webm or other, read from the bytes"
     },
     "role": {
      "type": "string",
      "enum": [
       "image",
       "animated image",
       "icon",
       "font",
       "media"
      ],
      "description": ""
     },
     "bytes": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "width": {
      "type": "number",
      "format": "number",
      "description": "read from the file's header, in px"
     },
     "height": {
      "type": "number",
      "format": "number",
      "description": ""
     },
     "basis": {
      "$ref": "#/components/schemas/Basis",
      "description": ""
     },
     "from": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "hash"
      },
      "description": "the documents and stylesheets that load it"
     }
    },
    "required": [
     "address",
     "artefact",
     "kind",
     "role",
     "bytes",
     "basis",
     "from"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "DESIGN/the-brand-graph-from-a-domain §5"
   },
   "BrandVariant": {
    "title": "BrandVariant",
    "description": "the system at one coordinate: a sparse delta over its parent, made by one derivation; the old layer's variants, axes and derivations kept and made rows",
    "type": "object",
    "properties": {
     "name": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "coordinate": {
      "$ref": "#/components/schemas/BrandCoordinate",
      "description": ""
     },
     "parent": {
      "type": "string",
      "format": "text",
      "description": "the variant the delta applies over; absent for the base"
     },
     "derivation": {
      "type": "string",
      "enum": [
       "measured",
       "dark mode",
       "accent shift",
       "density",
       "contrast fix",
       "modality treatment",
       "medium"
      ],
      "description": ""
     },
     "delta": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/BrandDelta"
      },
      "description": ""
     },
     "rules": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "text"
      },
      "description": "the rules of the derivation, each named"
     },
     "basis": {
      "$ref": "#/components/schemas/Basis",
      "description": ""
     },
     "from": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "hash"
      },
      "description": ""
     }
    },
    "required": [
     "name",
     "coordinate",
     "derivation",
     "delta",
     "rules",
     "basis",
     "from"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "DESIGN/the-brand-graph-from-a-domain §5"
   },
   "PlatformListParent": {
    "title": "PlatformListParent",
    "description": "the thing an item of a list belongs to, in the platform's words: the item field that carries the parent's key, the parent thing, and the relation from the item to it",
    "type": "object",
    "properties": {
     "field": {
      "type": "string",
      "format": "text",
      "description": "the item field that carries the parent's key"
     },
     "thing": {
      "type": "string",
      "format": "text",
      "description": "a thing of the domain"
     },
     "relation": {
      "type": "string",
      "format": "text",
      "description": "a relation of the domain whose from side is the item's thing and whose to side is the parent's"
     }
    },
    "required": [
     "field",
     "thing",
     "relation"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "24 §2.1"
   },
   "SeedReceipt": {
    "title": "SeedReceipt",
    "description": "what a seed wrote: the manifest's version, the window, the counts by kind, what was not ready with its reasons, and the hashes",
    "type": "object",
    "properties": {
     "manifest": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "version": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "window": {
      "$ref": "#/components/schemas/Window",
      "description": ""
     },
     "counts": {
      "description": "by kind of object"
     },
     "not_ready": {
      "type": "array",
      "items": {},
      "description": "object, reason"
     },
     "hashes": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "hash"
      },
      "description": ""
     },
     "ran_at": {
      "type": "string",
      "format": "time",
      "description": ""
     }
    },
    "required": [
     "manifest",
     "version",
     "window",
     "counts",
     "not_ready",
     "hashes",
     "ran_at"
    ],
    "additionalProperties": false,
    "x-kind": "fact",
    "x-scope": "platform",
    "x-store": "postgres",
    "x-key": "the manifest and the time",
    "x-places": [],
    "x-from": "12 §2.4"
   },
   "GameOfRoles": {
    "title": "GameOfRoles",
    "description": "a game-theoretic model laid over a template: the roles as players, each with its options and its payoff as a driver tree, and the equilibrium the solver reports; every payoff is computed by the one evaluator over the frame's drivers",
    "type": "object",
    "properties": {
     "players": {
      "type": "array",
      "items": {
       "type": "string",
       "description": "the name of a row of RoleAroundADecision",
       "x-register": "RoleAroundADecision"
      },
      "description": ""
     },
     "moves": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/GameMove"
      },
      "description": ""
     },
     "solution_concept": {
      "type": "string",
      "enum": [
       "a Nash equilibrium of the stage game",
       "a subgame-perfect equilibrium over the horizon",
       "a best-response dynamic"
      ],
      "description": ""
     },
     "equilibrium": {
      "type": "string",
      "format": "text",
      "description": "what the solver reports, in the roles' words; absent until solved"
     },
     "evidence": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/EvidenceRef"
      },
      "description": "the readings the payoffs rest on"
     }
    },
    "required": [
     "players",
     "moves",
     "solution_concept"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "26 §2.1"
   },
   "MarketInput": {
    "title": "MarketInput",
    "description": "a brand, a segment, the window",
    "type": "object",
    "properties": {
     "brand": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "segment": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "window": {
      "$ref": "#/components/schemas/Window",
      "description": ""
     }
    },
    "required": [
     "brand",
     "segment",
     "window"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "12 §3"
   },
   "Invoice": {
    "title": "Invoice",
    "description": "one invoice: the lines by kind of usage from the metered rows, the fee, the amount recomputed from the record, the provider's id and the state",
    "type": "object",
    "properties": {
     "period": {
      "$ref": "#/components/schemas/Window",
      "description": ""
     },
     "lines": {
      "type": "array",
      "items": {},
      "description": "kind, quantity, price, amount"
     },
     "fee": {
      "type": "number",
      "format": "money",
      "description": ""
     },
     "amount": {
      "type": "number",
      "format": "money",
      "description": "recomputed from the rows"
     },
     "currency": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "provider_invoice_id": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "state": {
      "type": "string",
      "enum": [
       "draft",
       "issued",
       "paid",
       "failed",
       "void"
      ],
      "description": ""
     }
    },
    "required": [
     "period",
     "lines",
     "fee",
     "amount",
     "currency",
     "state"
    ],
    "additionalProperties": false,
    "x-kind": "fact",
    "x-scope": "tenant",
    "x-store": "postgres",
    "x-key": "the tenant and the period",
    "x-places": [],
    "x-from": "19 §2.4"
   },
   "ModelFlow": {
    "title": "ModelFlow",
    "description": "one flow of a systems model between two stocks, its rate a driver tree the one evaluator computes each step",
    "type": "object",
    "properties": {
     "name": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "from_stock": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "to_stock": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "rate": {
      "$ref": "#/components/schemas/DriverNode",
      "description": "the units that move per step, as a tree over drivers"
     },
     "roles": {
      "type": "array",
      "items": {
       "type": "string",
       "description": "the name of a row of RoleAroundADecision",
       "x-register": "RoleAroundADecision"
      },
      "description": "the roles that hand the unit on"
     },
     "shape": {
      "type": "string",
      "description": "the calculation shape the flow's money follows, where it carries money",
      "x-register": "CalculationShape"
     },
     "selects": {
      "type": "string",
      "format": "text",
      "description": "the predicate, by name, that selects the units the flow moves"
     },
     "delay": {
      "type": "string",
      "format": "duration",
      "description": "the delay before a moved unit counts"
     }
    },
    "required": [
     "name",
     "from_stock",
     "to_stock",
     "rate",
     "roles"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "26 §2.1; 25 §2.2"
   },
   "Tenant": {
    "title": "Tenant",
    "description": "a tenant",
    "type": "object",
    "properties": {
     "name": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "company": {
      "type": "string",
      "format": "id",
      "description": "the entity of the record it is"
     },
     "plan": {
      "$ref": "#/components/schemas/SubscriptionPlan",
      "description": ""
     },
     "autonomy_ceiling": {
      "type": "object",
      "additionalProperties": {
       "type": "string",
       "enum": [
        "read only",
        "propose",
        "act",
        "full autonomy"
       ]
      },
      "description": "for each kind of reach"
     },
     "state": {
      "$ref": "#/components/schemas/Readiness",
      "description": "not ready with its reason when suspended"
     },
     "retired_at": {
      "type": "string",
      "format": "time",
      "description": ""
     }
    },
    "required": [
     "name",
     "company",
     "plan",
     "autonomy_ceiling",
     "state"
    ],
    "additionalProperties": false,
    "x-kind": "entity",
    "x-scope": "platform",
    "x-store": "postgres",
    "x-key": "its id",
    "x-places": [],
    "x-from": "03 §2.2"
   },
   "Tile": {
    "title": "Tile",
    "description": "one tile of a board: a saved question, a chart kind, a period and the comparison with the period before",
    "type": "object",
    "properties": {
     "question": {
      "type": "string",
      "description": "",
      "x-register": "SavedQuestion"
     },
     "chart": {
      "type": "string",
      "enum": [
       "a number",
       "a series over time",
       "a bar by kind",
       "a table"
      ],
      "description": ""
     },
     "period": {
      "$ref": "#/components/schemas/Window",
      "description": "the board's when empty"
     },
     "compare": {
      "type": "boolean",
      "format": "bool",
      "description": "with the period before"
     }
    },
    "required": [
     "question",
     "chart",
     "compare"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "11 §2.1"
   },
   "SizingPosition": {
    "title": "SizingPosition",
    "description": "a position a market is sized in, a register a person extends by a row: total, serviceable, signalling, customers, reachable, winnable, each with its definition",
    "type": "object",
    "properties": {
     "name": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "order": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "definition": {
      "type": "string",
      "format": "text",
      "description": "what the position counts"
     }
    },
    "required": [
     "name",
     "order",
     "definition"
    ],
    "additionalProperties": false,
    "x-kind": "row",
    "x-scope": "platform",
    "x-store": "postgres",
    "x-key": "its name",
    "x-places": [],
    "x-from": "12 §2.4"
   },
   "RouteToBuyer": {
    "title": "RouteToBuyer",
    "description": "a route to a buyer that is not a community: a voice, a router, a source or a paid surface, with how much of the kind it reaches now",
    "type": "object",
    "properties": {
     "route": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "kind": {
      "type": "string",
      "enum": [
       "a voice",
       "a router",
       "a source",
       "a paid surface",
       "an event"
      ],
      "description": "a community is found_in, never a route"
     },
     "now": {
      "$ref": "#/components/schemas/Summary",
      "description": ""
     }
    },
    "required": [
     "route",
     "kind"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "12 §2.4"
   },
   "BindBuyerInput": {
    "title": "BindBuyerInput",
    "description": "a buyer profile and its bindings",
    "type": "object",
    "properties": {
     "kind_of_buyer": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "bindings": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/Binding"
      },
      "description": ""
     },
     "ladder": {
      "type": "string",
      "format": "text",
      "description": "the ladder the kind climbs, by its name, where the binding changes it; the ladder must be kept and ready"
     }
    },
    "required": [
     "kind_of_buyer",
     "bindings"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "12 §3"
   },
   "KindOfReading": {
    "title": "KindOfReading",
    "description": "one kind of reading a connector declares, ready only after the check against recorded samples",
    "type": "object",
    "properties": {
     "name": {
      "type": "string",
      "format": "text",
      "description": "One name made from the connector and the way. The connector's declares lists this name."
     },
     "connector": {
      "type": "string",
      "description": "",
      "x-register": "Connector"
     },
     "way": {
      "type": "string",
      "description": "",
      "x-register": "AccessMethod"
     },
     "returns": {
      "type": "array",
      "items": {
       "type": "string",
       "description": "the name of a row of SourceObject",
       "x-register": "SourceObject"
      },
      "description": ""
     },
     "depth": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "cadence_allowed": {
      "type": "string",
      "format": "duration",
      "description": ""
     },
     "rights": {
      "$ref": "#/components/schemas/Rights",
      "description": ""
     },
     "probe": {
      "type": "boolean",
      "format": "bool",
      "description": ""
     },
     "subscribes": {
      "type": "boolean",
      "format": "bool",
      "description": "the source's own feed of changes"
     },
     "backfills": {
      "type": "boolean",
      "format": "bool",
      "description": "a window of history in blocks"
     },
     "samples_checked_at": {
      "type": "string",
      "format": "time",
      "description": ""
     },
     "state": {
      "$ref": "#/components/schemas/Readiness",
      "description": ""
     }
    },
    "required": [
     "name",
     "connector",
     "way",
     "returns",
     "depth",
     "cadence_allowed",
     "rights",
     "probe",
     "subscribes",
     "backfills",
     "state"
    ],
    "additionalProperties": false,
    "x-kind": "row",
    "x-scope": "platform",
    "x-store": "postgres",
    "x-key": "the connector and the way",
    "x-places": [],
    "x-from": "07 §2.1"
   },
   "FitSearchFrame": {
    "title": "FitSearchFrame",
    "description": "what a fit search gave: the markets ranked, the offering sculpted per buyer profile, the tactics proposed to test the fit, the verdict per market, and the set of options that compares the markets",
    "type": "object",
    "properties": {
     "search": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "markets": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/FitCandidateMarket"
      },
      "description": "ranked"
     },
     "sculpted": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/SculptedOffering"
      },
      "description": ""
     },
     "tactics": {
      "type": "array",
      "items": {
       "type": "string",
       "description": "the name of a row of Tactic",
       "x-register": "Tactic"
      },
      "description": "the tactics proposed, in the order to run them"
     },
     "verdicts": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/FitVerdict"
      },
      "description": ""
     },
     "options": {
      "type": "string",
      "format": "id",
      "description": ""
     }
    },
    "required": [
     "search",
     "markets",
     "sculpted",
     "tactics",
     "verdicts"
    ],
    "additionalProperties": false,
    "x-kind": "fact",
    "x-scope": "brand",
    "x-store": "postgres+lake",
    "x-key": "the search",
    "x-places": [],
    "x-from": "26 §2.1"
   },
   "UsageInput": {
    "title": "UsageInput",
    "description": "usage by tenant, kind, provider and window, for platform administrators",
    "type": "object",
    "properties": {
     "tenant": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "kind": {
      "type": "string",
      "description": "",
      "x-register": "KindOfUsage"
     },
     "provider": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "window": {
      "$ref": "#/components/schemas/Window",
      "description": ""
     }
    },
    "required": [
     "window"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "19 §3"
   },
   "HeldCookie": {
    "title": "HeldCookie",
    "description": "one cookie of a held identity's session state, as the browser gave it",
    "type": "object",
    "properties": {
     "name": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "value": {
      "type": "string",
      "format": "text",
      "description": "never returned by a tool and never logged"
     },
     "domain": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "path": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "expires": {
      "type": "number",
      "format": "number",
      "description": "seconds since the epoch; absent for a session cookie"
     },
     "secure": {
      "type": "boolean",
      "format": "bool",
      "description": ""
     },
     "http_only": {
      "type": "boolean",
      "format": "bool",
      "description": ""
     }
    },
    "required": [
     "name",
     "value",
     "domain",
     "path",
     "secure",
     "http_only"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "18 §2.3"
   },
   "Contribution": {
    "title": "Contribution",
    "description": "one ask's contribution to a demand statement",
    "type": "object",
    "properties": {
     "ask": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "cell_key": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "fields": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "text"
      },
      "description": ""
     },
     "depth": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "deadline": {
      "type": "string",
      "format": "time",
      "description": ""
     }
    },
    "required": [
     "ask",
     "cell_key",
     "fields",
     "depth"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "07 §2.5"
   },
   "RouteLoad": {
    "title": "RouteLoad",
    "description": "one tool a route calls when it opens: the tool, its inputs from the route's params, and the slot its response card fills",
    "type": "object",
    "properties": {
     "tool": {
      "type": "string",
      "format": "text",
      "description": "a tool id of the register"
     },
     "inputs": {
      "description": "from the route's params and search parameters"
     },
     "fills": {
      "type": "string",
      "format": "text",
      "description": "a slot name"
     }
    },
    "required": [
     "tool",
     "inputs",
     "fills"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "15 §2.4"
   },
   "ConnectorOffer": {
    "title": "ConnectorOffer",
    "description": "every kind of reading and of action, by source, with its state, the identity it needs, its cost and its rights",
    "type": "object",
    "properties": {
     "readings": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/KindOfReading"
      },
      "description": ""
     },
     "actions": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/KindOfAction"
      },
      "description": ""
     },
     "installed": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/InstalledConnector"
      },
      "description": ""
     }
    },
    "required": [
     "readings",
     "actions",
     "installed"
    ],
    "additionalProperties": false,
    "x-kind": "view",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "07 §2.1"
   },
   "BrandLayer": {
    "title": "BrandLayer",
    "description": "one stacking layer: a z-index declared and what sits on it",
    "type": "object",
    "properties": {
     "value": {
      "type": "number",
      "format": "number",
      "description": ""
     },
     "uses": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "selectors": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "text"
      },
      "description": ""
     },
     "basis": {
      "$ref": "#/components/schemas/Basis",
      "description": ""
     },
     "from": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "hash"
      },
      "description": ""
     }
    },
    "required": [
     "value",
     "uses",
     "selectors",
     "basis",
     "from"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "DESIGN/the-brand-graph-from-a-domain §5"
   },
   "Document": {
    "title": "Document",
    "description": "a document built from the record: its kind, its recipe, its versions",
    "type": "object",
    "properties": {
     "kind": {
      "type": "string",
      "enum": [
       "a report",
       "a brief",
       "a call set",
       "a set of options",
       "a workbench page",
       "a story in a frame",
       "a page of the documentation",
       "an estimator page"
      ],
      "description": ""
     },
     "recipe": {
      "$ref": "#/components/schemas/Recipe",
      "description": ""
     },
     "versions": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "id"
      },
      "description": "its builds"
     },
     "visibility": {
      "type": "string",
      "enum": [
       "private",
       "the tenant",
       "published"
      ],
      "description": ""
     }
    },
    "required": [
     "kind",
     "recipe",
     "versions",
     "visibility"
    ],
    "additionalProperties": false,
    "x-kind": "definition",
    "x-scope": "follows",
    "x-store": "postgres",
    "x-key": "its kind and its recipe's version",
    "x-places": [],
    "x-from": "17 §2.1"
   },
   "Regulation": {
    "title": "Regulation",
    "description": "a rule of a market or a place, as a row of the register of regulations",
    "type": "object",
    "properties": {
     "market_or_place": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "rule": {
      "type": "string",
      "format": "text",
      "description": "in a sentence"
     },
     "makes_not_ready": {
      "type": "string",
      "enum": [
       "a kind of action",
       "a play",
       "holding a person"
      ],
      "description": ""
     },
     "asks_consent_for": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "lawful_basis": {
      "type": "string",
      "format": "text",
      "description": "for holding a person"
     },
     "kept_for": {
      "type": "string",
      "format": "duration",
      "description": ""
     },
     "check": {
      "type": "string",
      "format": "text",
      "description": "the check that can fail"
     }
    },
    "required": [
     "market_or_place",
     "rule",
     "makes_not_ready",
     "check"
    ],
    "additionalProperties": false,
    "x-kind": "row",
    "x-scope": "platform",
    "x-store": "postgres",
    "x-key": "the market or the place and the rule",
    "x-places": [],
    "x-from": "03 §2.2; 12 §2"
   },
   "Place": {
    "title": "Place",
    "description": "one position a unit of a kind can be in",
    "type": "object",
    "properties": {
     "kind": {
      "type": "string",
      "description": "",
      "x-register": "Kind"
     },
     "name": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "resting": {
      "type": "boolean",
      "format": "bool",
      "description": "a resting place is declared, and has no reader"
     },
     "reader": {
      "type": "string",
      "format": "text",
      "description": "the durable work that moves units out, or a person"
     },
     "longest_wait": {
      "type": "string",
      "format": "duration",
      "description": "past which the view counts the unit"
     },
     "who_is_told": {
      "type": "string",
      "format": "text",
      "description": "when the longest wait passes"
     }
    },
    "required": [
     "kind",
     "name",
     "resting"
    ],
    "additionalProperties": false,
    "x-kind": "row",
    "x-scope": "platform",
    "x-store": "postgres",
    "x-key": "the kind and its name",
    "x-places": [],
    "x-from": "01 §2.2; 11 §2"
   },
   "ProcedureResult": {
    "title": "ProcedureResult",
    "description": "what one run of a named procedure in the workbench left: the procedure, the run, the hashes of its code and its inputs, its outputs as measures, how it ended and how long it took",
    "type": "object",
    "properties": {
     "procedure": {
      "type": "string",
      "description": "",
      "x-register": "NamedProcedure"
     },
     "run": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "code_hash": {
      "type": "string",
      "format": "hash",
      "description": "absent when the procedure carries no code, and then every output is never measured"
     },
     "inputs_hash": {
      "type": "string",
      "format": "hash",
      "description": ""
     },
     "outputs": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/Measure"
      },
      "description": "one for each number the code left, its kind the name the procedure leaves it under"
     },
     "ended": {
      "type": "string",
      "enum": [
       "ended",
       "failed",
       "stopped"
      ],
      "description": ""
     },
     "elapsed_ms": {
      "type": "integer",
      "format": "count",
      "description": ""
     }
    },
    "required": [
     "procedure",
     "run",
     "inputs_hash",
     "outputs",
     "ended",
     "elapsed_ms"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "09 §2; D-63"
   },
   "RateBound": {
    "title": "RateBound",
    "description": "rate, politeness and cost as typed values with dimensions",
    "type": "object",
    "properties": {
     "calls": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "per": {
      "type": "string",
      "format": "duration",
      "description": ""
     },
     "politeness_budget": {
      "type": "integer",
      "format": "count",
      "description": "the calls that the host may make on the way within each period of the rate (per), at most the rate's calls, so that the host decides when to read within it and never reads at the source's ceiling; 0 sets no bound beyond the rate itself. It is a parameter of the source family, counted in calls per unit of time and enforced at the call under the lease (07 §2.1; 18 §2.1 and its parameters table)"
     },
     "cost_per_call": {
      "type": "number",
      "format": "money",
      "description": ""
     },
     "ceiling_measured": {
      "type": "integer",
      "format": "count",
      "description": "the measured ceiling of the rate"
     }
    },
    "required": [
     "calls",
     "per",
     "politeness_budget"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "02 §2.4; 18 §2.1"
   },
   "FillOfMeaning": {
    "title": "FillOfMeaning",
    "description": "the fill of quantized embeddings for one partition",
    "type": "object",
    "properties": {
     "partition": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "model": {
      "type": "string",
      "description": "",
      "x-register": "Model"
     },
     "texts": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "already_held": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "given_meaning": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "cost": {
      "$ref": "#/components/schemas/Cost",
      "description": ""
     }
    },
    "required": [
     "partition",
     "model",
     "texts",
     "already_held",
     "given_meaning",
     "cost"
    ],
    "additionalProperties": false,
    "x-kind": "work",
    "x-scope": "follows",
    "x-store": "postgres",
    "x-key": "one partition and one model",
    "x-places": [
     "waiting",
     "filled"
    ],
    "x-from": "04 §2.2"
   },
   "Operation": {
    "title": "Operation",
    "description": "one tool as the API serves it: a route, its input and output as owning types, its errors, its limits; generated",
    "type": "object",
    "properties": {
     "tool": {
      "type": "string",
      "description": "",
      "x-register": "Tool"
     },
     "verb": {
      "type": "string",
      "description": "",
      "x-register": "Verb"
     },
     "route": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "method": {
      "type": "string",
      "enum": [
       "GET",
       "POST"
      ],
      "description": ""
     },
     "input_type": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "output_type": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "errors": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "text"
      },
      "description": "each a Refusal with its rule"
     },
     "limits": {
      "$ref": "#/components/schemas/RateBound",
      "description": ""
     },
     "idempotent": {
      "type": "boolean",
      "format": "bool",
      "description": "a change carries its idempotency key"
     },
     "version": {
      "type": "string",
      "format": "text",
      "description": "the API's version"
     }
    },
    "required": [
     "tool",
     "verb",
     "route",
     "method",
     "input_type",
     "output_type",
     "errors",
     "limits",
     "idempotent",
     "version"
    ],
    "additionalProperties": false,
    "x-kind": "row",
    "x-scope": "platform",
    "x-store": "postgres",
    "x-key": "the tool",
    "x-places": [],
    "x-from": "10 §2"
   },
   "PricingStudyInput": {
    "title": "PricingStudyInput",
    "description": "the methods to run, the buyer profiles, and the window of the rivals' claims",
    "type": "object",
    "properties": {
     "methods": {
      "type": "array",
      "items": {
       "type": "string",
       "description": "the name of a row of Method",
       "x-register": "Method"
      },
      "description": ""
     },
     "kinds_of_buyer": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "id"
      },
      "description": ""
     },
     "window": {
      "$ref": "#/components/schemas/Window",
      "description": ""
     }
    },
    "required": [
     "methods",
     "kinds_of_buyer",
     "window"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "one ask of a study",
    "x-places": [],
    "x-from": "25 §3"
   },
   "Rendering": {
    "title": "Rendering",
    "description": "a proof that a surface renders inside the real shell, arrived at from a sibling",
    "type": "object",
    "properties": {
     "surface": {
      "type": "string",
      "description": "",
      "x-register": "Surface"
     },
     "width": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "theme": {
      "type": "string",
      "enum": [
       "light",
       "dark"
      ],
      "description": ""
     },
     "version": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "image": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "landmark_before": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "landmark_after": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "arrived_from": {
      "type": "string",
      "description": "",
      "x-register": "Surface"
     }
    },
    "required": [
     "surface",
     "width",
     "theme",
     "version",
     "arrived_from"
    ],
    "additionalProperties": false,
    "x-kind": "work",
    "x-scope": "platform",
    "x-store": "postgres",
    "x-key": "the surface, the width, the theme and the version",
    "x-places": [
     "asked",
     "rendered",
     "failed"
    ],
    "x-from": "15 §2.1"
   },
   "ListParent": {
    "title": "ListParent",
    "description": "the thing an item of a list belongs to (a comment's post, a reply's comment, an edition's newsletter): the item field that carries the parent's key, the parent's kind and key namespace, and the connection from the item to the parent with the role each takes",
    "type": "object",
    "properties": {
     "key_path": {
      "type": "string",
      "format": "text",
      "description": "the item field that carries the parent's key"
     },
     "kind": {
      "type": "string",
      "description": "",
      "x-register": "KindOfEntity"
     },
     "key_namespace": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "key_prefix": {
      "type": "string",
      "format": "text",
      "description": "put before the key's value"
     },
     "connection": {
      "type": "string",
      "description": "",
      "x-register": "KindOfConnection"
     },
     "item_role": {
      "type": "string",
      "format": "text",
      "description": "the item's role in the connection"
     },
     "parent_role": {
      "type": "string",
      "format": "text",
      "description": "the parent's role"
     }
    },
    "required": [
     "key_path",
     "kind",
     "key_namespace",
     "connection",
     "item_role",
     "parent_role"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "07 §2.1"
   },
   "SourceLink": {
    "title": "SourceLink",
    "description": "a link between source objects",
    "type": "object",
    "properties": {
     "to": {
      "type": "string",
      "description": "",
      "x-register": "SourceObject"
     },
     "self_asserted": {
      "type": "boolean",
      "format": "bool",
      "description": ""
     }
    },
    "required": [
     "to",
     "self_asserted"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "07 §2.1"
   },
   "BrandDesignSystemChangesInput": {
    "title": "BrandDesignSystemChangesInput",
    "description": "the brand and two versions, else the two newest",
    "type": "object",
    "properties": {
     "brand": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "from_version": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "to_version": {
      "type": "integer",
      "format": "count",
      "description": ""
     }
    },
    "required": [
     "brand"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "DESIGN/the-brand-graph-from-a-domain §7"
   },
   "PredicateLanguage": {
    "title": "PredicateLanguage",
    "description": "the operators, the comparators and the value types, with the hash",
    "type": "object",
    "properties": {
     "operators": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/Operator"
      },
      "description": ""
     },
     "populations": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/Population"
      },
      "description": ""
     },
     "hash": {
      "type": "string",
      "format": "hash",
      "description": ""
     }
    },
    "required": [
     "operators",
     "populations",
     "hash"
    ],
    "additionalProperties": false,
    "x-kind": "view",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "06 §3"
   },
   "KeepPlayInput": {
    "title": "KeepPlayInput",
    "description": "a play to keep for a brand: the play with its condition and its graph of moves as edges, and the predicates given in full, kept by their hashes before the play",
    "type": "object",
    "properties": {
     "play": {
      "$ref": "#/components/schemas/Play",
      "description": "its condition and its edges carry their predicates by hash; a predicate given in full under `predicates` is kept first"
     },
     "predicates": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/Predicate"
      },
      "description": "the condition's and the edges' predicates in full, kept by their hashes before the play"
     }
    },
    "required": [
     "play"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "13 §3; MODELS/the-strategy-system-as-a-formal-model §2"
   },
   "Tool": {
    "title": "Tool",
    "description": "a capability from the tool register, with its inputs and outputs as owning types; generated, never written by hand",
    "type": "object",
    "properties": {
     "name": {
      "type": "string",
      "format": "text",
      "description": "si.<family>.<verb>"
     },
     "family": {
      "type": "string",
      "enum": [
       "session",
       "ask",
       "read",
       "view",
       "act",
       "work",
       "harness",
       "files"
      ],
      "description": ""
     },
     "from_row": {
      "type": "string",
      "format": "text",
      "description": "the specification's interface row"
     },
     "input_type": {
      "type": "string",
      "format": "text",
      "description": "a type of this register"
     },
     "output_type": {
      "type": "string",
      "format": "text",
      "description": "the body of the card"
     },
     "rung": {
      "type": "string",
      "enum": [
       "user",
       "tenant",
       "brand",
       "strategy"
      ],
      "description": ""
     },
     "grant": {
      "type": "string",
      "enum": [
       "read",
       "ask",
       "act",
       "work",
       "files",
       "admin"
      ],
      "description": ""
     },
     "where": {
      "type": "string",
      "enum": [
       "platform",
       "app",
       "either"
      ],
      "description": ""
     },
     "long": {
      "type": "boolean",
      "format": "bool",
      "description": "returns a task"
     },
     "exposure": {
      "type": "string",
      "enum": [
       "direct",
       "deferred",
       "workbench"
      ],
      "description": "direct is in the first list a model sees; deferred is reached by paging one family at a time; workbench only from code in the workbench (WA-134)"
     },
     "permission": {
      "type": "string",
      "description": "",
      "x-register": "Permission"
     },
     "state": {
      "$ref": "#/components/schemas/Readiness",
      "description": "off for a tenant is absent from the list"
     },
     "takes": {
      "type": "string",
      "format": "text",
      "description": "the plain sentence of what the tool takes, as the tool register prints it"
     },
     "gives": {
      "type": "string",
      "format": "text",
      "description": "the plain sentence of what the tool gives"
     }
    },
    "required": [
     "name",
     "family",
     "from_row",
     "input_type",
     "output_type",
     "rung",
     "grant",
     "where",
     "long",
     "exposure",
     "permission",
     "state",
     "takes",
     "gives"
    ],
    "additionalProperties": false,
    "x-kind": "row",
    "x-scope": "platform",
    "x-store": "postgres",
    "x-key": "its name",
    "x-places": [],
    "x-from": "09 §2; MODELS/the-tool-register"
   },
   "FitSearchInput": {
    "title": "FitSearchInput",
    "description": "the brand, the end the search starts from, its offerings or its concept, and the verticals to consider",
    "type": "object",
    "properties": {
     "brand": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "from_end": {
      "type": "string",
      "enum": [
       "an offering",
       "a concept"
      ],
      "description": ""
     },
     "offerings": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "id"
      },
      "description": ""
     },
     "concept": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "candidate_verticals": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "id"
      },
      "description": ""
     }
    },
    "required": [
     "brand",
     "from_end",
     "offerings",
     "candidate_verticals"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "26 §3"
   },
   "Span": {
    "title": "Span",
    "description": "one timed operation inside a trace, with its attributes and its outcome",
    "type": "object",
    "properties": {
     "span_id": {
      "type": "string",
      "format": "hash",
      "description": ""
     },
     "context": {
      "$ref": "#/components/schemas/TelemetryContext",
      "description": ""
     },
     "name": {
      "type": "string",
      "format": "text",
      "description": "the operation, from a closed list per role"
     },
     "role": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "started_at": {
      "type": "string",
      "format": "time",
      "description": ""
     },
     "duration": {
      "type": "string",
      "format": "duration",
      "description": ""
     },
     "outcome": {
      "type": "string",
      "enum": [
       "ok",
       "refused",
       "failed",
       "timed-out"
      ],
      "description": ""
     },
     "attributes": {
      "type": "object",
      "additionalProperties": {
       "type": "string",
       "format": "text"
      },
      "description": "from the attribute allow-list only; never a secret value"
     }
    },
    "required": [
     "span_id",
     "context",
     "name",
     "role",
     "started_at",
     "duration",
     "outcome",
     "attributes"
    ],
    "additionalProperties": false,
    "x-kind": "fact",
    "x-scope": "platform",
    "x-store": "lake:landed",
    "x-key": "its id",
    "x-places": [],
    "x-from": "22 §2.1"
   },
   "RunProcedureInput": {
    "title": "RunProcedureInput",
    "description": "a named procedure to follow, with its inputs",
    "type": "object",
    "properties": {
     "procedure": {
      "type": "string",
      "description": "",
      "x-register": "NamedProcedure"
     },
     "inputs": {
      "description": ""
     }
    },
    "required": [
     "procedure"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "09 §3"
   },
   "ProxyMembership": {
    "title": "ProxyMembership",
    "description": "a subject's membership in a proxy over a period, as a fact with its evidence: the verdict, the scale of association, and the likelihood where a band is calibrated",
    "type": "object",
    "properties": {
     "proxy": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "proxy_version": {
      "type": "string",
      "format": "hash",
      "description": ""
     },
     "subject": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "found_by": {
      "type": "string",
      "enum": [
       "lexical",
       "behavioural",
       "semantic",
       "position",
       "utterance"
      ],
      "description": ""
     },
     "overlap": {
      "type": "number",
      "format": "share",
      "description": "the scale of association: the share of the subject's activity in the proxy's observable set, weighted by affinity where the proxy widens"
     },
     "aggregate_only": {
      "type": "boolean",
      "format": "bool",
      "description": ""
     },
     "verdict": {
      "type": "string",
      "enum": [
       "holds",
       "does not hold",
       "not evaluable"
      ],
      "description": ""
     },
     "period": {
      "$ref": "#/components/schemas/Window",
      "description": "a membership is a period, not a date"
     },
     "likelihood": {
      "$ref": "#/components/schemas/Interval",
      "description": "from the calibration by band of association; never measured where the band has none"
     },
     "evidence": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/EvidenceRef"
      },
      "description": "a membership with no evidence cannot be written"
     },
     "strength": {
      "$ref": "#/components/schemas/ProxyStrength",
      "description": "the proxy's strength at the time"
     },
     "adult": {
      "type": "boolean",
      "format": "bool",
      "description": "true when a room the subject used in the period is marked adult; left out of every read by default (D-128)"
     },
     "adult_share": {
      "type": "number",
      "format": "share",
      "description": "the share of the subject's rows in the period that were in rooms marked adult; absent when none was"
     }
    },
    "required": [
     "proxy",
     "proxy_version",
     "subject",
     "found_by",
     "aggregate_only",
     "verdict",
     "evidence",
     "adult"
    ],
    "additionalProperties": false,
    "x-kind": "fact",
    "x-scope": "follows",
    "x-store": "lake:ready",
    "x-key": "the proxy, its version and the subject",
    "x-places": [],
    "x-from": "MODELS/proxies-and-how-they-work §3; 06 §2.5"
   },
   "CaptureRulesInput": {
    "title": "CaptureRulesInput",
    "description": "which capture rules to read: one platform, or all of the person's",
    "type": "object",
    "properties": {
     "platform": {
      "type": "string",
      "format": "text",
      "description": ""
     }
    },
    "required": [],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "24 §3"
   },
   "SculptedOffering": {
    "title": "SculptedOffering",
    "description": "the offering as the search shaped it for one buyer profile: the value drivers it moves, the price position, the positioning against the rivals' claims, and the frame of a sale that priced it",
    "type": "object",
    "properties": {
     "offering": {
      "type": "string",
      "format": "id",
      "description": "the existing offering, where the search starts from one"
     },
     "concept": {
      "type": "string",
      "format": "text",
      "description": "the offering in one sentence"
     },
     "buyer_profile": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "value_drivers_moved": {
      "type": "array",
      "items": {
       "type": "string",
       "description": "the name of a row of KindOfMeasure",
       "x-register": "KindOfMeasure"
      },
      "description": ""
     },
     "price_position": {
      "$ref": "#/components/schemas/Interval",
      "description": "where on the rivals' distribution it sits"
     },
     "positioning": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "against_rivals": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "text"
      },
      "description": "each rival's claim this answers"
     },
     "frame": {
      "type": "string",
      "format": "id",
      "description": "the sale frame that priced it"
     }
    },
    "required": [
     "concept",
     "buyer_profile",
     "value_drivers_moved",
     "positioning",
     "against_rivals"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "26 §2.1"
   },
   "LoopGain": {
    "title": "LoopGain",
    "description": "the gain a simulation read for one loop",
    "type": "object",
    "properties": {
     "loop": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "gain": {
      "$ref": "#/components/schemas/Interval",
      "description": ""
     }
    },
    "required": [
     "loop",
     "gain"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "26 §2.1"
   },
   "SqlAnswer": {
    "title": "SqlAnswer",
    "description": "rows, with how many and whether a bound was reached",
    "type": "object",
    "properties": {
     "columns": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/Column"
      },
      "description": ""
     },
     "rows": {
      "type": "array",
      "items": {},
      "description": ""
     },
     "count": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "bound_reached": {
      "type": "boolean",
      "format": "bool",
      "description": ""
     }
    },
    "required": [
     "columns",
     "rows",
     "count",
     "bound_reached"
    ],
    "additionalProperties": false,
    "x-kind": "view",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "09 §3"
   },
   "Yield": {
    "title": "Yield",
    "description": "what a job returned for each unit of cost, with the host's measured rate and health",
    "type": "object",
    "properties": {
     "job": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "units_returned": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "cost": {
      "$ref": "#/components/schemas/Cost",
      "description": ""
     },
     "rate_measured": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "health": {
      "type": "string",
      "enum": [
       "good",
       "degraded",
       "down"
      ],
      "description": ""
     }
    },
    "required": [
     "job",
     "units_returned",
     "cost",
     "rate_measured",
     "health"
    ],
    "additionalProperties": false,
    "x-kind": "fact",
    "x-scope": "follows",
    "x-store": "postgres+lake",
    "x-key": "the job",
    "x-places": [],
    "x-from": "07 §2.3; 18 §2.9"
   },
   "FailedCall": {
    "title": "FailedCall",
    "description": "a signed call that did not land, with why, and a way to send it again",
    "type": "object",
    "properties": {
     "telling": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "event": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "why": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "tries": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "send_again": {
      "type": "string",
      "format": "text",
      "description": ""
     }
    },
    "required": [
     "telling",
     "event",
     "why",
     "tries",
     "send_again"
    ],
    "additionalProperties": false,
    "x-kind": "fact",
    "x-scope": "tenant",
    "x-store": "postgres+lake",
    "x-key": "the telling and the moment",
    "x-places": [],
    "x-from": "10 §2"
   },
   "Capability": {
    "title": "Capability",
    "description": "a capability the product depends on: where it is on, when it was last proved, and what depends on it",
    "type": "object",
    "properties": {
     "name": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "on_where": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/Scope"
      },
      "description": ""
     },
     "last_proved_at": {
      "type": "string",
      "format": "time",
      "description": ""
     },
     "proved_by": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "limit": {
      "type": "string",
      "format": "duration",
      "description": "unproved past it shows as not ready"
     },
     "depends_on": {
      "type": "array",
      "items": {
       "type": "string",
       "description": "the name of a row of Capability",
       "x-register": "Capability"
      },
      "description": ""
     },
     "state": {
      "$ref": "#/components/schemas/Readiness",
      "description": ""
     }
    },
    "required": [
     "name",
     "on_where",
     "limit",
     "depends_on",
     "state"
    ],
    "additionalProperties": false,
    "x-kind": "row",
    "x-scope": "platform",
    "x-store": "postgres",
    "x-key": "its name",
    "x-places": [],
    "x-from": "11 §2; 14 §2.1"
   },
   "Observation": {
    "title": "Observation",
    "description": "one version of a content item as read; the same version read again makes no second observation",
    "type": "object",
    "properties": {
     "content_item": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "text": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "text_hash": {
      "type": "string",
      "format": "hash",
      "description": ""
     },
     "hand_over": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "row_of_silver": {
      "type": "string",
      "format": "id",
      "description": ""
     }
    },
    "required": [
     "content_item",
     "hand_over",
     "row_of_silver"
    ],
    "additionalProperties": false,
    "x-kind": "fact",
    "x-scope": "follows",
    "x-store": "lake:ready",
    "x-key": "the row of silver it was made from",
    "x-places": [],
    "x-from": "04 §2.2"
   },
   "SyncRuleInput": {
    "title": "SyncRuleInput",
    "description": "a sync rule to write, preview or arm",
    "type": "object",
    "properties": {
     "rule": {
      "$ref": "#/components/schemas/SyncRule",
      "description": ""
     },
     "flow": {
      "type": "string",
      "enum": [
       "write",
       "preview",
       "arm",
       "disarm"
      ],
      "description": ""
     }
    },
    "required": [
     "rule",
     "flow"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "18 §3"
   },
   "RolesInput": {
    "title": "RolesInput",
    "description": "nothing, or one role",
    "type": "object",
    "properties": {
     "role": {
      "type": "string",
      "format": "text",
      "description": ""
     }
    },
    "required": [],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "12 §3"
   },
   "ContentAffinity": {
    "title": "ContentAffinity",
    "description": "what an entity publishes, likes, stars, replies to and follows across every connector, as concept weights with their evidence over a window, kept and re-read on the beat",
    "type": "object",
    "properties": {
     "entity": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "window": {
      "$ref": "#/components/schemas/Window",
      "description": ""
     },
     "concepts": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/ConceptWeight"
      },
      "description": ""
     },
     "sources": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "id"
      },
      "description": "the sources read"
     },
     "units": {
      "type": "integer",
      "format": "count",
      "description": "the units of the record behind it"
     },
     "basis": {
      "$ref": "#/components/schemas/Basis",
      "description": ""
     },
     "as_of": {
      "$ref": "#/components/schemas/TwoDates",
      "description": ""
     }
    },
    "required": [
     "entity",
     "window",
     "concepts",
     "sources",
     "units",
     "basis",
     "as_of"
    ],
    "additionalProperties": false,
    "x-kind": "fact",
    "x-scope": "follows",
    "x-store": "postgres+lake",
    "x-key": "the entity and the window",
    "x-places": [],
    "x-from": "14 §2.4"
   },
   "Metric": {
    "title": "Metric",
    "description": "one named measurement with its kind, its unit and the labels it may carry",
    "type": "object",
    "properties": {
     "name": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "kind": {
      "type": "string",
      "enum": [
       "counter",
       "gauge",
       "histogram"
      ],
      "description": ""
     },
     "unit": {
      "type": "string",
      "format": "text",
      "description": "seconds, bytes, requests, dollars; a metric without a unit fails the check"
     },
     "labels": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "text"
      },
      "description": "from the label allow-list; never a free value"
     },
     "what_it_measures": {
      "type": "string",
      "format": "text",
      "description": ""
     }
    },
    "required": [
     "name",
     "kind",
     "unit",
     "labels",
     "what_it_measures"
    ],
    "additionalProperties": false,
    "x-kind": "definition",
    "x-scope": "platform",
    "x-store": "postgres",
    "x-key": "its name",
    "x-places": [],
    "x-from": "22 §2.1"
   },
   "Unit": {
    "title": "Unit",
    "description": "what every unit carries, whatever its type",
    "type": "object",
    "properties": {
     "id": {
      "type": "string",
      "format": "id",
      "description": "opaque, ordered by time, given once by the kernel; never made from an attribute"
     },
     "kind": {
      "type": "string",
      "description": "a registered kind; an unregistered kind cannot be named in code",
      "x-register": "Kind"
     },
     "key": {
      "type": "string",
      "format": "text",
      "description": "for a kind that is the same by construction, made from the input; two units of one kind never share one"
     },
     "scope": {
      "$ref": "#/components/schemas/Scope",
      "description": "never widens; a unit made from others lives at the narrowest"
     },
     "made_at": {
      "type": "string",
      "format": "time",
      "description": "set once"
     },
     "made_by": {
      "$ref": "#/components/schemas/Caller",
      "description": "the caller with the run"
     },
     "trace": {
      "type": "string",
      "format": "id",
      "description": "the run that made or moved it, set on every flow"
     }
    },
    "required": [
     "id",
     "kind",
     "scope",
     "made_at",
     "made_by",
     "trace"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "every unit carries these",
    "x-places": [],
    "x-from": "01 §2.1"
   },
   "BuyerFitVerdict": {
    "title": "BuyerFitVerdict",
    "description": "the fit with its criteria, its temperature and its verdict",
    "type": "object",
    "properties": {
     "entity": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "kind_of_buyer": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "fit": {
      "$ref": "#/components/schemas/FitScore",
      "description": ""
     },
     "criteria": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/CriterionVerdict"
      },
      "description": ""
     },
     "verdict": {
      "type": "string",
      "enum": [
       "a lead",
       "ready to judge",
       "not a buyer"
      ],
      "description": ""
     },
     "temperature": {
      "type": "string",
      "enum": [
       "hot",
       "warm",
       "cold"
      ],
      "description": ""
     },
     "temperature_reason": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "offerings_that_fit": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/OfferingFit"
      },
      "description": ""
     }
    },
    "required": [
     "entity",
     "kind_of_buyer",
     "fit",
     "criteria",
     "verdict",
     "offerings_that_fit"
    ],
    "additionalProperties": false,
    "x-kind": "view",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "08 §3"
   },
   "ProxyReadInput": {
    "title": "ProxyReadInput",
    "description": "a proxy, and the window",
    "type": "object",
    "properties": {
     "proxy": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "window": {
      "$ref": "#/components/schemas/Window",
      "description": ""
     }
    },
    "required": [
     "proxy"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "06 §3"
   },
   "LevelReading": {
    "title": "LevelReading",
    "description": "one computed value of one level",
    "type": "object",
    "properties": {
     "level": {
      "type": "string",
      "description": "",
      "x-register": "Level"
     },
     "at": {
      "type": "string",
      "format": "time",
      "description": ""
     },
     "value": {
      "type": "number",
      "format": "share",
      "description": ""
     },
     "met": {
      "type": "boolean",
      "format": "bool",
      "description": ""
     },
     "population": {
      "$ref": "#/components/schemas/PopulationStatement",
      "description": "what the value was computed over"
     }
    },
    "required": [
     "level",
     "at",
     "value",
     "met",
     "population"
    ],
    "additionalProperties": false,
    "x-kind": "fact",
    "x-scope": "platform",
    "x-store": "postgres+lake",
    "x-key": "the level and the time",
    "x-places": [],
    "x-from": "22 §2.2"
   },
   "Candidate": {
    "title": "Candidate",
    "description": "an entity gathering signals toward the qualifying rung of one kind of buyer",
    "type": "object",
    "properties": {
     "entity": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "kind_of_buyer": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "brand": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "signals": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "id"
      },
      "description": ""
     },
     "rung": {
      "type": "string",
      "format": "text",
      "description": "the rung reached"
     },
     "lacks": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "text"
      },
      "description": "what it still lacks"
     },
     "hypothesis": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "fit": {
      "$ref": "#/components/schemas/FitScore",
      "description": "the judgement at the qualifying rung, with its interval"
     },
     "criteria": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/CriterionVerdict"
      },
      "description": "each criterion with its probability, its basis and its highlights"
     }
    },
    "required": [
     "entity",
     "kind_of_buyer",
     "brand",
     "signals",
     "rung",
     "lacks"
    ],
    "additionalProperties": false,
    "x-kind": "work",
    "x-scope": "brand",
    "x-store": "postgres",
    "x-key": "the entity, the kind of buyer and the brand",
    "x-places": [
     "gathering",
     "ready to judge",
     "qualified",
     "not a buyer",
     "aged out"
    ],
    "x-from": "08 §2"
   },
   "BrandBorder": {
    "title": "BrandBorder",
    "description": "one border width and style declared",
    "type": "object",
    "properties": {
     "width": {
      "type": "number",
      "format": "number",
      "description": ""
     },
     "style": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "uses": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "basis": {
      "$ref": "#/components/schemas/Basis",
      "description": ""
     },
     "from": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "hash"
      },
      "description": ""
     }
    },
    "required": [
     "width",
     "style",
     "uses",
     "basis",
     "from"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "DESIGN/the-brand-graph-from-a-domain §5"
   },
   "Workflow": {
    "title": "Workflow",
    "description": "steps and what starts them, the same object whether a person or the agent composed it",
    "type": "object",
    "properties": {
     "name": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "starts_on": {
      "type": "string",
      "enum": [
       "a match",
       "a beat",
       "a flow",
       "a person's word"
      ],
      "description": ""
     },
     "start_ref": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "steps": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/WorkflowStep"
      },
      "description": ""
     },
     "strategy": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "state": {
      "$ref": "#/components/schemas/Readiness",
      "description": "ready only when every tool it names is ready"
     }
    },
    "required": [
     "name",
     "starts_on",
     "steps",
     "strategy",
     "state"
    ],
    "additionalProperties": false,
    "x-kind": "definition",
    "x-scope": "strategy",
    "x-store": "postgres",
    "x-key": "its name and version",
    "x-places": [],
    "x-from": "09 §2"
   },
   "InstallConnectorInput": {
    "title": "InstallConnectorInput",
    "description": "the connector, the ways, the identity and the settings",
    "type": "object",
    "properties": {
     "installed": {
      "$ref": "#/components/schemas/InstalledConnector",
      "description": ""
     }
    },
    "required": [
     "installed"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "07 §3"
   },
   "PlaceARunsAt": {
    "title": "PlaceARunsAt",
    "description": "a place a predicate runs: the population it reads, what an admitted unit makes, and who owns it",
    "type": "object",
    "properties": {
     "name": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "population": {
      "type": "string",
      "description": "",
      "x-register": "Population"
     },
     "makes": {
      "type": "string",
      "description": "",
      "x-register": "Kind"
     },
     "owner": {
      "type": "string",
      "format": "text",
      "description": "the part that owns what is made"
     }
    },
    "required": [
     "name",
     "population",
     "makes",
     "owner"
    ],
    "additionalProperties": false,
    "x-kind": "row",
    "x-scope": "platform",
    "x-store": "postgres",
    "x-key": "its name",
    "x-places": [],
    "x-from": "06 §2.1"
   },
   "HeldSessionState": {
    "title": "HeldSessionState",
    "description": "the session state of a held identity, sealed with the identities' key and kept in the record, so that every copy of the platform reads one store; the key never enters the record, and no tool returns this row",
    "type": "object",
    "properties": {
     "vault_entry": {
      "type": "string",
      "format": "id",
      "description": "the identity's store entry, which its SignedInIdentity row carries"
     },
     "key_name": {
      "type": "string",
      "format": "text",
      "description": "the environment name of the key that sealed the state"
     },
     "nonce": {
      "type": "string",
      "format": "text",
      "description": "the seal's nonce as hex; absent when the state was forgotten"
     },
     "sealed": {
      "type": "string",
      "format": "text",
      "description": "the sealed session state as hex; absent when the state was forgotten"
     },
     "checkpointed_at": {
      "type": "string",
      "format": "time",
      "description": ""
     }
    },
    "required": [
     "vault_entry",
     "key_name",
     "checkpointed_at"
    ],
    "additionalProperties": false,
    "x-kind": "definition",
    "x-scope": "tenant",
    "x-store": "postgres",
    "x-key": "the identity's store entry",
    "x-places": [],
    "x-from": "18 §2.3"
   },
   "IdentityMethod": {
    "title": "IdentityMethod",
    "description": "a method of deciding identity, ready only after it is calibrated for its kind",
    "type": "object",
    "properties": {
     "name": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "kind": {
      "type": "string",
      "description": "",
      "x-register": "KindOfEntity"
     },
     "version": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "planted_pairs": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "id"
      },
      "description": ""
     },
     "state": {
      "$ref": "#/components/schemas/Readiness",
      "description": ""
     },
     "upper_bar": {
      "type": "number",
      "format": "chance",
      "description": ""
     },
     "lower_bar": {
      "type": "number",
      "format": "chance",
      "description": ""
     },
     "smallest_gap": {
      "type": "number",
      "format": "chance",
      "description": ""
     }
    },
    "required": [
     "name",
     "kind",
     "version",
     "planted_pairs",
     "state",
     "upper_bar",
     "lower_bar",
     "smallest_gap"
    ],
    "additionalProperties": false,
    "x-kind": "row",
    "x-scope": "platform",
    "x-store": "postgres",
    "x-key": "its name and version",
    "x-places": [],
    "x-from": "05 §2.1"
   },
   "Workspace": {
    "title": "Workspace",
    "description": "the workspace folder, and every act the app made in it on the ledger",
    "type": "object",
    "properties": {
     "folder": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "acts": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/Event"
      },
      "description": ""
     }
    },
    "required": [
     "folder",
     "acts"
    ],
    "additionalProperties": false,
    "x-kind": "view",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "MODELS/the-outside-agent-path §7"
   },
   "OfferingFit": {
    "title": "OfferingFit",
    "description": "an offering that fits a lead, and why",
    "type": "object",
    "properties": {
     "offering": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "why": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "binding": {
      "type": "string",
      "format": "id",
      "description": ""
     }
    },
    "required": [
     "offering",
     "why",
     "binding"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "08 §2"
   },
   "LeadPass": {
    "title": "LeadPass",
    "description": "one pass of the beat that walks signals to leads: every rung of every kind of buyer bound to a brand run over its population, a candidate made or lifted for each entity a rung admits, judged when it holds what the qualifying rung asks, a lead made from a qualified candidate with its temperature, and each lead delivered inside the plan's limit or withheld at it with the count",
    "type": "object",
    "properties": {
     "kinds_of_buyer": {
      "type": "integer",
      "format": "count",
      "description": "bound to a brand and ready"
     },
     "rungs_run": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "rungs_not_ready": {
      "type": "integer",
      "format": "count",
      "description": "a rung whose predicate is not kept, or does not compile"
     },
     "units_read": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "candidates_lifted": {
      "type": "integer",
      "format": "count",
      "description": "made or moved up a rung"
     },
     "qualified": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "not_a_buyer": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "leads_made": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "delivered": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "withheld": {
      "type": "integer",
      "format": "count",
      "description": "at the plan's limit, or with no plan"
     },
     "deferred": {
      "type": "integer",
      "format": "count",
      "description": "left for the next tick by the beat's budget"
     },
     "tenants_served": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "at": {
      "type": "string",
      "format": "time",
      "description": ""
     }
    },
    "required": [
     "kinds_of_buyer",
     "rungs_run",
     "rungs_not_ready",
     "units_read",
     "candidates_lifted",
     "qualified",
     "not_a_buyer",
     "leads_made",
     "delivered",
     "withheld",
     "deferred",
     "tenants_served",
     "at"
    ],
    "additionalProperties": false,
    "x-kind": "work",
    "x-scope": "platform",
    "x-store": "postgres",
    "x-key": "the beat's tick",
    "x-places": [
     "asked",
     "done"
    ],
    "x-from": "08 §5; 06 §2.2"
   },
   "Predicate": {
    "title": "Predicate",
    "description": "the tree, of three forms, over a population; an edit is a new predicate",
    "type": "object",
    "properties": {
     "tree": {
      "$ref": "#/components/schemas/PredicateNode",
      "description": ""
     },
     "population": {
      "type": "string",
      "description": "",
      "x-register": "Population"
     },
     "tree_hash": {
      "type": "string",
      "format": "hash",
      "description": ""
     },
     "register_hash": {
      "type": "string",
      "format": "hash",
      "description": "the register it was written against"
     },
     "compiler_version": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "comparator_versions": {
      "type": "object",
      "additionalProperties": {
       "type": "string",
       "format": "text"
      },
      "description": "each comparator's register hash, and under the key the bars of nearness the version of that parameter row the breadths resolved against"
     },
     "summary_versions": {
      "type": "object",
      "additionalProperties": {
       "type": "integer",
       "format": "count"
      },
      "description": "of each summary its right-hand sides name"
     },
     "nearness": {
      "type": "object",
      "additionalProperties": {
       "type": "number",
       "format": "share"
      },
      "description": "for each leaf that names a breadth, keyed by the leaf's hash, the bar it resolved to under the bars of nearness at the version comparator_versions records; frozen, so a changed row never moves an armed predicate"
     },
     "sentence": {
      "type": "string",
      "format": "text",
      "description": "the sentence a person would say"
     }
    },
    "required": [
     "tree",
     "population",
     "tree_hash",
     "register_hash",
     "compiler_version",
     "comparator_versions"
    ],
    "additionalProperties": false,
    "x-kind": "definition",
    "x-scope": "follows",
    "x-store": "postgres",
    "x-key": "the hash of its tree",
    "x-places": [],
    "x-from": "06 §2.1; DOMAIN/04"
   },
   "PlatformPage": {
    "title": "PlatformPage",
    "description": "one kind of page of a platform: what it yields, how it is read, the lists it carries, whether it pages through a next link, and what the viewer must be to see it",
    "type": "object",
    "properties": {
     "name": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "address_patterns": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "text"
      },
      "description": ""
     },
     "deny_patterns": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "text"
      },
      "description": "the addresses under this page's patterns that are not this kind of page (an edit form, a details page, an overlay), which the page's template scope denies"
     },
     "yields": {
      "type": "string",
      "format": "text",
      "description": "a thing of the domain"
     },
     "render": {
      "type": "string",
      "enum": [
       "static",
       "auto",
       "rendered"
      ],
      "description": ""
     },
     "fields": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/FieldSpec"
      },
      "description": ""
     },
     "lists": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/PlatformList"
      },
      "description": ""
     },
     "paged": {
      "type": "boolean",
      "format": "bool",
      "description": ""
     },
     "scrolls": {
      "type": "string",
      "format": "text",
      "description": "the list the reader scrolls before it reads, until nothing new appears; absent when the page shows everything at once"
     },
     "needs": {
      "type": "string",
      "enum": [
       "anyone",
       "signed in",
       "connected",
       "member",
       "admin",
       "premium",
       "licensed"
      ],
      "description": "what the viewer must be to see the page as described; a page shows less to a viewer below it, and the capture records what it saw"
     }
    },
    "required": [
     "name",
     "address_patterns",
     "yields",
     "render",
     "fields",
     "lists",
     "paged",
     "needs"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "24 §2.1"
   },
   "Notification": {
    "title": "Notification",
    "description": "a message that something needs a person, with the tool that resolves it",
    "type": "object",
    "properties": {
     "what": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "why": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "tool": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "unit": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "to": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "passed_on_to": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "longest_wait": {
      "type": "string",
      "format": "duration",
      "description": ""
     }
    },
    "required": [
     "what",
     "why",
     "tool",
     "unit",
     "to",
     "longest_wait"
    ],
    "additionalProperties": false,
    "x-kind": "work",
    "x-scope": "user",
    "x-store": "postgres",
    "x-key": "what and who",
    "x-places": [
     "sent",
     "acknowledged",
     "passed on"
    ],
    "x-from": "09 §2"
   },
   "ServiceNote": {
    "title": "ServiceNote",
    "description": "the short-lived signed token the API gateway hands the role behind it: who is calling, for which service, until when",
    "type": "object",
    "properties": {
     "caller": {
      "$ref": "#/components/schemas/Caller",
      "description": ""
     },
     "audience": {
      "type": "string",
      "format": "text",
      "description": "the one service it is made out to"
     },
     "issued_at": {
      "type": "string",
      "format": "time",
      "description": ""
     },
     "expires_at": {
      "type": "string",
      "format": "time",
      "description": "seconds, never minutes"
     },
     "signature": {
      "type": "string",
      "format": "hash",
      "description": ""
     }
    },
    "required": [
     "caller",
     "audience",
     "issued_at",
     "expires_at",
     "signature"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "21 §2.3; 03 §2.5"
   },
   "DeclinedCell": {
    "title": "DeclinedCell",
    "description": "a cell declined with its reason",
    "type": "object",
    "properties": {
     "cell": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "reason": {
      "type": "string",
      "format": "text",
      "description": ""
     }
    },
    "required": [
     "cell",
     "reason"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "07 §2.3"
   },
   "Interval": {
    "title": "Interval",
    "description": "a point with its interval",
    "type": "object",
    "properties": {
     "point": {
      "description": "a number, a money or a count"
     },
     "lower": {
      "description": ""
     },
     "upper": {
      "description": ""
     },
     "level": {
      "type": "number",
      "format": "share",
      "description": "the coverage of the interval, checked"
     }
    },
    "required": [
     "point",
     "lower",
     "upper",
     "level"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "14 §2.1"
   },
   "FileList": {
    "title": "FileList",
    "description": "the files with their sizes, kinds and when they were written",
    "type": "object",
    "properties": {
     "files": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/FileEntry"
      },
      "description": ""
     }
    },
    "required": [
     "files"
    ],
    "additionalProperties": false,
    "x-kind": "view",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "MODELS/the-outside-agent-path §7"
   },
   "ProxyStrength": {
    "title": "ProxyStrength",
    "description": "the strength of a proxy, never one number",
    "type": "object",
    "properties": {
     "precision": {
      "type": "number",
      "format": "share",
      "description": ""
     },
     "recall": {
      "type": "number",
      "format": "share",
      "description": ""
     },
     "coverage": {
      "type": "number",
      "format": "share",
      "description": ""
     },
     "not_evaluable": {
      "type": "number",
      "format": "share",
      "description": ""
     }
    },
    "required": [],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "06 §2.1"
   },
   "InstallPackInput": {
    "title": "InstallPackInput",
    "description": "a brand, the template and its version",
    "type": "object",
    "properties": {
     "brand": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "template": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "version": {
      "type": "integer",
      "format": "count",
      "description": ""
     }
    },
    "required": [
     "brand",
     "template",
     "version"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "12 §3"
   },
   "Surface": {
    "title": "Surface",
    "description": "one node of the architecture: its route, the object it shows, its owner, its class, who sees it, its nine states",
    "type": "object",
    "properties": {
     "node": {
      "type": "string",
      "format": "text",
      "description": "N-nn"
     },
     "route": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "shows": {
      "type": "string",
      "description": "",
      "x-register": "Kind"
     },
     "owner": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "class": {
      "type": "string",
      "enum": [
       "persistent",
       "dismissible",
       "working"
      ],
      "description": ""
     },
     "slot": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "states": {
      "type": "array",
      "items": {
       "type": "string",
       "enum": [
        "default",
        "loading",
        "empty",
        "never measured",
        "partial",
        "degraded",
        "refused",
        "error",
        "stale"
       ]
      },
      "description": ""
     },
     "drawing": {
      "type": "string",
      "format": "text",
      "description": "the figure"
     }
    },
    "required": [
     "node",
     "route",
     "shows",
     "owner",
     "class",
     "slot",
     "states",
     "drawing"
    ],
    "additionalProperties": false,
    "x-kind": "row",
    "x-scope": "platform",
    "x-store": "postgres",
    "x-key": "its node",
    "x-places": [],
    "x-from": "15 §2.1; INTERFACE/00"
   },
   "ReadingOfMeasure": {
    "title": "ReadingOfMeasure",
    "description": "a measure read at a time; a score today and last week are two facts",
    "type": "object",
    "properties": {
     "subject": {
      "type": "string",
      "format": "id",
      "description": "a content item or an entity"
     },
     "measure": {
      "$ref": "#/components/schemas/Measure",
      "description": ""
     },
     "definition_version": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "slice": {
      "type": "object",
      "additionalProperties": {
       "type": "string",
       "format": "text"
      },
      "description": "the dimension and its value for a cut reading; the dimension is one of the measure's slices"
     }
    },
    "required": [
     "subject",
     "measure",
     "definition_version"
    ],
    "additionalProperties": false,
    "x-kind": "fact",
    "x-scope": "follows",
    "x-store": "lake:ready",
    "x-key": "the subject, the kind, its version and the time read",
    "x-places": [],
    "x-from": "04 §2.2"
   },
   "Verb": {
    "title": "Verb",
    "description": "one of the words that order the public surface; a verb with no operation yet is shown as not yet served",
    "type": "object",
    "properties": {
     "name": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "operations": {
      "type": "array",
      "items": {
       "type": "string",
       "description": "the name of a row of Tool",
       "x-register": "Tool"
      },
      "description": ""
     },
     "served": {
      "type": "boolean",
      "format": "bool",
      "description": ""
     }
    },
    "required": [
     "name",
     "operations",
     "served"
    ],
    "additionalProperties": false,
    "x-kind": "row",
    "x-scope": "platform",
    "x-store": "postgres",
    "x-key": "its name",
    "x-places": [],
    "x-from": "10 §2"
   },
   "FailureClass": {
    "title": "FailureClass",
    "description": "the class every reason of failure carries",
    "type": "object",
    "properties": {
     "who": {
      "type": "string",
      "enum": [
       "the unit's own",
       "the source's",
       "ours"
      ],
      "description": ""
     },
     "what": {
      "type": "string",
      "enum": [
       "absent",
       "forbidden",
       "rate",
       "dependency down",
       "platform fault",
       "the unit's own"
      ],
      "description": ""
     }
    },
    "required": [
     "who",
     "what"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "01 §2.3"
   },
   "ActionAudit": {
    "title": "ActionAudit",
    "description": "one row per action run through a connector: the move, the grant, the identity that served it, the arguments' sources, the source's own id for what was done, and the inverse",
    "type": "object",
    "properties": {
     "move": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "grant": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "mode": {
      "type": "string",
      "enum": [
       "read only",
       "propose",
       "act",
       "full autonomy"
      ],
      "description": ""
     },
     "identity": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "argument_sources": {
      "type": "object",
      "additionalProperties": {
       "type": "string",
       "format": "text"
      },
      "description": ""
     },
     "source_own_id": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "inverse": {
      "type": "string",
      "format": "text",
      "description": "captured first"
     }
    },
    "required": [
     "move",
     "grant",
     "mode",
     "identity",
     "argument_sources"
    ],
    "additionalProperties": false,
    "x-kind": "fact",
    "x-scope": "follows",
    "x-store": "postgres+lake",
    "x-key": "the move",
    "x-places": [],
    "x-from": "18 §2.7"
   },
   "PreviewInput": {
    "title": "PreviewInput",
    "description": "a predicate or its hash, the place, the window, the speeds wanted, and the surface it calls from",
    "type": "object",
    "properties": {
     "predicate": {
      "$ref": "#/components/schemas/Predicate",
      "description": ""
     },
     "predicate_hash": {
      "type": "string",
      "format": "hash",
      "description": ""
     },
     "place": {
      "type": "string",
      "description": "",
      "x-register": "PlaceARunsAt"
     },
     "window": {
      "$ref": "#/components/schemas/Window",
      "description": ""
     },
     "speeds": {
      "type": "array",
      "items": {
       "type": "string",
       "enum": [
        "instant",
        "the last seven days",
        "the whole record"
       ]
      },
      "description": ""
     }
    },
    "required": [
     "place",
     "window",
     "speeds"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "06 §3"
   },
   "RegisterInput": {
    "title": "RegisterInput",
    "description": "a register by name, or a name to check",
    "type": "object",
    "properties": {
     "register": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "name": {
      "type": "string",
      "format": "text",
      "description": "is this name registered"
     }
    },
    "required": [
     "register"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "02 §3"
   },
   "FrameInput": {
    "title": "FrameInput",
    "description": "one input a frame read, with where it came from and its basis",
    "type": "object",
    "properties": {
     "driver": {
      "type": "string",
      "description": "",
      "x-register": "KindOfMeasure"
     },
     "value": {
      "description": ""
     },
     "basis": {
      "$ref": "#/components/schemas/Basis",
      "description": ""
     },
     "from": {
      "type": "string",
      "enum": [
       "stated",
       "the record",
       "a benchmark",
       "a parameter",
       "computed",
       "withheld"
      ],
      "description": "a parameter: the stipulated position of a driver the setting rows hold, such as the platform's uplift until the outcome ledger measures it"
     },
     "unit": {
      "type": "string",
      "format": "id",
      "description": "the stated number, the reading or the benchmark it read"
     },
     "stale": {
      "type": "boolean",
      "format": "bool",
      "description": "a benchmark past its age or with its rights withdrawn"
     }
    },
    "required": [
     "driver",
     "value",
     "basis",
     "from",
     "stale"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "one input of a frame",
    "x-places": [],
    "x-from": "25 §2.1"
   },
   "FactsInput": {
    "title": "FactsInput",
    "description": "a unit or a population, as of two dates",
    "type": "object",
    "properties": {
     "unit": {
      "$ref": "#/components/schemas/UnitRef",
      "description": ""
     },
     "population": {
      "$ref": "#/components/schemas/Predicate",
      "description": ""
     },
     "attributes": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "text"
      },
      "description": ""
     }
    },
    "required": [],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "04 §3"
   },
   "FactBase": {
    "title": "FactBase",
    "description": "what every fact carries beyond the unit, and cannot be written without",
    "type": "object",
    "properties": {
     "happened_at": {
      "$ref": "#/components/schemas/TimeWithBasis",
      "description": "when it happened, with whether that time was published, scheduled or first seen"
     },
     "learned_at": {
      "type": "string",
      "format": "time",
      "description": "when we learned it"
     },
     "source": {
      "$ref": "#/components/schemas/SourceRef",
      "description": "the source, the way it was reached, and how it was fetched"
     },
     "made_from": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "id"
      },
      "description": "the units it was made from, walkable back to the observation and the sentence"
     },
     "basis": {
      "$ref": "#/components/schemas/Basis",
      "description": "observed, stated by a source, derived by a named rule, estimated with an interval"
     },
     "maker": {
      "type": "string",
      "format": "text",
      "description": "the rule, model or person that made it"
     },
     "rights": {
      "$ref": "#/components/schemas/Rights",
      "description": "copied from the source's row; a derived fact's are the most restrictive of its sources', read afresh"
     },
     "plane": {
      "$ref": "#/components/schemas/Plane",
      "description": "shared, or one tenant's; part of the type, so a leak does not compile"
     }
    },
    "required": [
     "happened_at",
     "learned_at",
     "source",
     "made_from",
     "basis",
     "maker",
     "rights",
     "plane"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "carried by every fact",
    "x-places": [],
    "x-from": "01 §2.1; 04 §2.1"
   },
   "SessionMaterial": {
    "title": "SessionMaterial",
    "description": "the session material a signed-in identity of one platform holds and the read that proves it: the cookie domains the platform keeps, the address whose answer differs signed in from signed out, and the text that appears only when signed in",
    "type": "object",
    "properties": {
     "cookie_domains": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "text"
      },
      "description": "the cookie domains the identity keeps, without a leading dot"
     },
     "probe_address": {
      "type": "string",
      "format": "text",
      "description": "the address the cheapest signed-in read fetches"
     },
     "signed_in_marker": {
      "type": "string",
      "format": "text",
      "description": "a text the probe's body carries only when signed in; absent when the status alone tells"
     },
     "signed_in_cookie": {
      "type": "string",
      "format": "text",
      "description": "the name of the cookie whose presence on the platform's domain reads signed in while the person signs in inside the platform's window, so no read from outside the browser runs while the person types; absent when the probe alone tells"
     },
     "pace": {
      "$ref": "#/components/schemas/RateBound",
      "description": "the pace a browsing session under this platform's identity reads at, which the way of a signed-in session carries as its rate bound; one call every twenty seconds when absent"
     },
     "signed_out_statuses": {
      "type": "array",
      "items": {
       "type": "integer",
       "format": "count"
      },
      "description": "the statuses the probe answers when signed out, redirects among them"
     },
     "wall_patterns": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "text"
      },
      "description": "the addresses of the platform's sign-in, sign-up, password and challenge pages; no request leaves for one of them, and a page that lands on one was not the page asked for, which under a held identity shows that the site signed the session out"
     },
     "signed_out_markers": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "text"
      },
      "description": "texts that a page's document carries only when the site shows the page signed out, such as LinkedIn's public tracking markers; a page read under a held identity that carries one shows that the site signed the session out"
     },
     "private_patterns": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "text"
      },
      "description": "the addresses of a signed-in person's own private pages (messages, notifications, their network, advertising accounts, settings); a walk that finds one never queues it, and no request leaves for one"
     },
     "account_cookie": {
      "type": "string",
      "format": "text",
      "description": "the cookie whose value carries the id of the account that the session belongs to; absent when the probe's body carries it"
     },
     "account_pattern": {
      "type": "string",
      "format": "text",
      "description": "a regular expression whose first group is the platform's own id of the account, read from the account cookie's value, or from the probe's body when no cookie is named; absent when the platform gives no way to read it"
     }
    },
    "required": [
     "cookie_domains",
     "probe_address",
     "signed_out_statuses",
     "wall_patterns",
     "signed_out_markers",
     "private_patterns"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "18 §2.3"
   },
   "ReleaseArtefact": {
    "title": "ReleaseArtefact",
    "description": "one image for each repository, with its version and its hash",
    "type": "object",
    "properties": {
     "repository": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "version": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "hash": {
      "type": "string",
      "format": "hash",
      "description": ""
     },
     "roles": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "text"
      },
      "description": ""
     }
    },
    "required": [
     "repository",
     "version",
     "hash",
     "roles"
    ],
    "additionalProperties": false,
    "x-kind": "fact",
    "x-scope": "platform",
    "x-store": "postgres",
    "x-key": "the repository and the version",
    "x-places": [],
    "x-from": "20 §2.1"
   },
   "SettingsDeclaration": {
    "title": "SettingsDeclaration",
    "description": "every setting of every role, with its dimension, its default and where it may be changed",
    "type": "object",
    "properties": {
     "settings": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/SettingRow"
      },
      "description": ""
     },
     "version": {
      "type": "string",
      "format": "text",
      "description": ""
     }
    },
    "required": [
     "settings",
     "version"
    ],
    "additionalProperties": false,
    "x-kind": "definition",
    "x-scope": "platform",
    "x-store": "postgres",
    "x-key": "the repository and the version",
    "x-places": [],
    "x-from": "20 §2.1; requirement 40"
   },
   "PlanReport": {
    "title": "PlanReport",
    "description": "did I do what I planned: one row per play, then the items done off plan",
    "type": "object",
    "properties": {
     "rows": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/PlanReportRow"
      },
      "description": ""
     },
     "window": {
      "$ref": "#/components/schemas/Window",
      "description": ""
     }
    },
    "required": [
     "rows",
     "window"
    ],
    "additionalProperties": false,
    "x-kind": "view",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "13 §3"
   },
   "Merge": {
    "title": "Merge",
    "description": "one fact recording that two entities are one; it changes no other fact",
    "type": "object",
    "properties": {
     "decision": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "first": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "second": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "answers_for_both": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "claim_precedence": {
      "type": "string",
      "format": "text",
      "description": "which of two claims shows first"
     },
     "parted_by": {
      "type": "string",
      "format": "id",
      "description": ""
     }
    },
    "required": [
     "decision",
     "first",
     "second",
     "answers_for_both",
     "claim_precedence"
    ],
    "additionalProperties": false,
    "x-kind": "fact",
    "x-scope": "follows",
    "x-store": "postgres+lake",
    "x-key": "the decision that caused it",
    "x-places": [],
    "x-from": "05 §2.1"
   },
   "MapPart": {
    "title": "MapPart",
    "description": "one part of the map: measured, under test or never read, and never two",
    "type": "object",
    "properties": {
     "name": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "units": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "id"
      },
      "description": ""
     },
     "position": {
      "type": "string",
      "enum": [
       "measured",
       "under test",
       "never read"
      ],
      "description": ""
     },
     "coverage": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/CoverageReading"
      },
      "description": ""
     },
     "not_ready": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "id"
      },
      "description": "the units of this part that are visibly not ready, a subset of units; a part whose units carry no readiness lists none"
     }
    },
    "required": [
     "name",
     "units",
     "position",
     "coverage",
     "not_ready"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "12 §2.1; SR-1216"
   },
   "EndpointHolder": {
    "title": "EndpointHolder",
    "description": "the process that serves the durable engine's endpoint on this machine, written beside the stack: its process id, the hash of the binary it runs, its release, its port and when it started; a newer release takes the endpoint over from an older one, the same release shares it, and an older one never takes it back",
    "type": "object",
    "properties": {
     "pid": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "binary_hash": {
      "type": "string",
      "format": "hash",
      "description": ""
     },
     "started_at": {
      "type": "string",
      "format": "time",
      "description": ""
     },
     "port": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "release": {
      "$ref": "#/components/schemas/ReleaseStamp",
      "description": "absent on a binary built before releases were stamped, which every stamped release reads as older"
     }
    },
    "required": [
     "pid",
     "binary_hash",
     "started_at",
     "port"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "09 §2; WA-223"
   },
   "FitFrameInput": {
    "title": "FitFrameInput",
    "description": "the search whose frame is read",
    "type": "object",
    "properties": {
     "search": {
      "type": "string",
      "format": "id",
      "description": ""
     }
    },
    "required": [
     "search"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "26 §3"
   },
   "Rollback": {
    "title": "Rollback",
    "description": "the previous artefact put back, with the readings after",
    "type": "object",
    "properties": {
     "release": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "previous": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "schema_allows": {
      "type": "boolean",
      "format": "bool",
      "description": ""
     },
     "readings_after": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/ChippedNumber"
      },
      "description": ""
     }
    },
    "required": [
     "release",
     "previous",
     "schema_allows",
     "readings_after"
    ],
    "additionalProperties": false,
    "x-kind": "work",
    "x-scope": "platform",
    "x-store": "postgres",
    "x-key": "the release",
    "x-places": [
     "asked",
     "installing",
     "proved",
     "held"
    ],
    "x-from": "20 §2.1"
   },
   "BrandComponent": {
    "title": "BrandComponent",
    "description": "one recurring part of the pages: a class the stylesheet styles as a surface and the pages use",
    "type": "object",
    "properties": {
     "selector": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "kind": {
      "type": "string",
      "enum": [
       "button",
       "card",
       "field",
       "navigation",
       "badge",
       "table",
       "other"
      ],
      "description": "read from the tag and the class name"
     },
     "uses": {
      "type": "integer",
      "format": "count",
      "description": "the elements on the pages held that carry the class"
     },
     "declarations": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "text"
      },
      "description": "each as property: value, the site's variables resolved"
     },
     "basis": {
      "$ref": "#/components/schemas/Basis",
      "description": ""
     },
     "from": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "hash"
      },
      "description": ""
     }
    },
    "required": [
     "selector",
     "kind",
     "uses",
     "declarations",
     "basis",
     "from"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "DESIGN/the-brand-graph-from-a-domain §5"
   },
   "PermissionHeld": {
    "title": "PermissionHeld",
    "description": "a registration, a licence, an approval or a certification one party holds in one country in one role, as a regulator's register records it",
    "type": "object",
    "properties": {
     "holder": {
      "type": "string",
      "format": "id",
      "description": "the entity"
     },
     "kind": {
      "type": "string",
      "enum": [
       "registration",
       "licence",
       "approval",
       "certification"
      ],
      "description": ""
     },
     "register": {
      "type": "string",
      "format": "id",
      "description": "the source, a regulator's register"
     },
     "identifier": {
      "type": "string",
      "format": "text",
      "description": "as the register writes it"
     },
     "country": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "role": {
      "type": "string",
      "enum": [
       "maker",
       "importer",
       "distributor",
       "licensee",
       "operator",
       "affiliate",
       "provider",
       "payer"
      ],
      "description": ""
     },
     "since": {
      "type": "string",
      "format": "date",
      "description": ""
     },
     "until": {
      "type": "string",
      "format": "date",
      "description": ""
     },
     "evidence": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/EvidenceRef"
      },
      "description": ""
     }
    },
    "required": [
     "holder",
     "kind",
     "register",
     "identifier",
     "country",
     "role",
     "since",
     "evidence"
    ],
    "additionalProperties": false,
    "x-kind": "fact",
    "x-scope": "follows",
    "x-store": "postgres",
    "x-key": "the holder, the register and the identifier",
    "x-places": [],
    "x-from": "12 §2.5"
   },
   "SpeedBudget": {
    "title": "SpeedBudget",
    "description": "the budget of one speed of the preview: units and time",
    "type": "object",
    "properties": {
     "units": {
      "type": "integer",
      "format": "count",
      "description": "the units the speed may read before it answers partial"
     },
     "time_ms": {
      "type": "integer",
      "format": "count",
      "description": "the time it may take, in milliseconds"
     },
     "sample": {
      "type": "integer",
      "format": "count",
      "description": "the units a preview shows as its sample; twelve when absent"
     }
    },
    "required": [
     "units",
     "time_ms"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "06 §2.4"
   },
   "ModelStatistics": {
    "title": "ModelStatistics",
    "description": "base rates, calibration by segment and version, interval coverage, and familiarity",
    "type": "object",
    "properties": {
     "base_rates": {
      "type": "object",
      "additionalProperties": {
       "type": "number",
       "format": "share"
      },
      "description": ""
     },
     "calibration_by_segment": {
      "type": "object",
      "additionalProperties": {
       "type": "number",
       "format": "share"
      },
      "description": ""
     },
     "interval_coverage": {
      "type": "number",
      "format": "share",
      "description": ""
     },
     "familiarity_test": {
      "$ref": "#/components/schemas/ControlResult",
      "description": ""
     },
     "floors": {
      "type": "object",
      "additionalProperties": {
       "type": "number",
       "format": "share"
      },
      "description": ""
     },
     "read_at": {
      "type": "string",
      "format": "time",
      "description": ""
     }
    },
    "required": [
     "base_rates",
     "calibration_by_segment",
     "interval_coverage",
     "familiarity_test",
     "floors",
     "read_at"
    ],
    "additionalProperties": false,
    "x-kind": "fact",
    "x-scope": "platform",
    "x-store": "postgres",
    "x-key": "the model and the beat",
    "x-places": [],
    "x-from": "14 §2.1"
   },
   "NetworkProxyProvider": {
    "title": "NetworkProxyProvider",
    "description": "a provider of network proxy exits, as a row and a credential; none is named in code",
    "type": "object",
    "properties": {
     "name": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "endpoint": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "credential": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "pool_kinds": {
      "type": "array",
      "items": {
       "type": "string",
       "enum": [
        "datacenter",
        "residential",
        "ISP",
        "mobile"
       ]
      },
      "description": ""
     },
     "countries": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "text"
      },
      "description": ""
     },
     "sticky_sessions": {
      "type": "boolean",
      "format": "bool",
      "description": ""
     },
     "cost_per_gigabyte": {
      "$ref": "#/components/schemas/Cost",
      "description": ""
     }
    },
    "required": [
     "name",
     "endpoint",
     "credential",
     "pool_kinds",
     "countries",
     "sticky_sessions",
     "cost_per_gigabyte"
    ],
    "additionalProperties": false,
    "x-kind": "row",
    "x-scope": "platform",
    "x-store": "postgres",
    "x-key": "its name",
    "x-places": [],
    "x-from": "18 §2.4"
   },
   "RaiseNeedInput": {
    "title": "RaiseNeedInput",
    "description": "a demand cell to raise",
    "type": "object",
    "properties": {
     "source": {
      "type": "string",
      "description": "",
      "x-register": "Source"
     },
     "entities": {
      "$ref": "#/components/schemas/Predicate",
      "description": ""
     },
     "bucket": {
      "$ref": "#/components/schemas/Window",
      "description": ""
     },
     "fields": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "text"
      },
      "description": ""
     },
     "value": {
      "type": "number",
      "format": "share",
      "description": ""
     }
    },
    "required": [
     "source",
     "entities",
     "bucket",
     "fields",
     "value"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "07 §3"
   },
   "StrategyMoveInput": {
    "title": "StrategyMoveInput",
    "description": "a strategy moved to a place in its life, with the reason",
    "type": "object",
    "properties": {
     "strategy": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "to": {
      "type": "string",
      "enum": [
       "drafted",
       "simulated",
       "rolled out in part",
       "running",
       "paused",
       "ended"
      ],
      "description": ""
     },
     "reason": {
      "type": "string",
      "format": "text",
      "description": ""
     }
    },
    "required": [
     "strategy",
     "to",
     "reason"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "13 §3; MODELS/the-strategy-system-as-a-formal-model §10.2"
   },
   "Basis": {
    "title": "Basis",
    "description": "how well founded a fact or a number is",
    "type": "object",
    "properties": {
     "basis": {
      "type": "string",
      "enum": [
       "observed",
       "stated by a source",
       "derived by a named rule",
       "estimated with an interval",
       "measured",
       "inferred",
       "never measured"
      ],
      "description": ""
     },
     "rule": {
      "type": "string",
      "format": "text",
      "description": "the named rule, for derived"
     },
     "interval": {
      "$ref": "#/components/schemas/Interval",
      "description": "for estimated"
     }
    },
    "required": [
     "basis"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "04 §2.1; the basis of a fact"
   },
   "MarginCheck": {
    "title": "MarginCheck",
    "description": "the ladder's gross margin against the metered cost of a lead and of a call, in one of three positions; never a typed cost",
    "type": "object",
    "properties": {
     "position": {
      "type": "string",
      "enum": [
       "measured",
       "never measured",
       "withheld"
      ],
      "description": ""
     },
     "cost_per_lead": {
      "type": "number",
      "format": "money",
      "description": "from metering"
     },
     "cost_per_call": {
      "type": "number",
      "format": "money",
      "description": "from metering"
     },
     "floor": {
      "type": "number",
      "format": "share",
      "description": "the parameter"
     },
     "cleared": {
      "type": "boolean",
      "format": "bool",
      "description": ""
     },
     "reason": {
      "type": "string",
      "format": "text",
      "description": ""
     }
    },
    "required": [
     "position",
     "floor"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "the margin check of a study",
    "x-places": [],
    "x-from": "25 §2.1"
   },
   "Word": {
    "title": "Word",
    "description": "one of the market's own words, with its meaning",
    "type": "object",
    "properties": {
     "term": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "means": {
      "type": "string",
      "format": "text",
      "description": ""
     }
    },
    "required": [
     "term",
     "means"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "12 §2.1"
   },
   "InvoicesInput": {
    "title": "InvoicesInput",
    "description": "the period of the invoices to read, or all",
    "type": "object",
    "properties": {
     "period": {
      "$ref": "#/components/schemas/Window",
      "description": ""
     }
    },
    "required": [],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "19 §3"
   },
   "PageMeasure": {
    "title": "PageMeasure",
    "description": "one count a page showed, read as a registered kind of measure: likes, comments, views, stars, downloads, followers, applicants and every other engagement a page shows, with the number as shown and as a number, and where it came from; it becomes a reading of the measure on the page's subject",
    "type": "object",
    "properties": {
     "measure": {
      "type": "string",
      "description": "the kind of measure's name",
      "x-register": "KindOfMeasure"
     },
     "value": {
      "type": "number",
      "format": "number",
      "description": "the number, with thousands and millions expanded"
     },
     "shown": {
      "type": "string",
      "format": "text",
      "description": "the count as the page showed it"
     },
     "basis": {
      "type": "string",
      "format": "text",
      "description": "the template field, the structured data, or the words beside the count"
     },
     "selector": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "item": {
      "type": "string",
      "format": "text",
      "description": "the item of a list the count belongs to, by its own id, when it is not the page's subject's"
     }
    },
    "required": [
     "measure",
     "value",
     "shown",
     "basis"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "24 §2.2; 02 §2.4"
   },
   "ConsentInput": {
    "title": "ConsentInput",
    "description": "the person or tenant, and the use; to record, withdraw or ask",
    "type": "object",
    "properties": {
     "subject": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "use": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "do": {
      "type": "string",
      "enum": [
       "record",
       "withdraw",
       "ask"
      ],
      "description": ""
     },
     "how": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "evidence": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "id"
      },
      "description": ""
     }
    },
    "required": [
     "subject",
     "use",
     "do"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "03 §3"
   },
   "CaptureHealth": {
    "title": "CaptureHealth",
    "description": "captures by platform, this window against the last",
    "type": "object",
    "properties": {
     "rows": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/CaptureHealthRow"
      },
      "description": ""
     },
     "window": {
      "$ref": "#/components/schemas/Window",
      "description": ""
     }
    },
    "required": [
     "rows",
     "window"
    ],
    "additionalProperties": false,
    "x-kind": "view",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "24 §3"
   },
   "KeepMonitorInput": {
    "title": "KeepMonitorInput",
    "description": "a monitor to keep: its name, its predicate, the place it runs at and the kind of signal it makes; the strategy where one is chosen, else the brand's standing strategy; for a platform monitor the vertical it keeps full",
    "type": "object",
    "properties": {
     "name": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "predicate": {
      "$ref": "#/components/schemas/Predicate",
      "description": "the tree, compiled at the place"
     },
     "place": {
      "type": "string",
      "description": "",
      "x-register": "PlaceARunsAt"
     },
     "kind_of_signal": {
      "type": "string",
      "description": "",
      "x-register": "KindOfSignal"
     },
     "strategy": {
      "type": "string",
      "format": "id",
      "description": "the brand's standing strategy unless one is chosen"
     },
     "vertical": {
      "type": "string",
      "format": "text",
      "description": "for a platform monitor"
     }
    },
    "required": [
     "name",
     "predicate",
     "place",
     "kind_of_signal"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "06 §3"
   },
   "BrowseOpenInput": {
    "title": "BrowseOpenInput",
    "description": "open a browsing session under the caller's grant, with a held identity, a proxy policy and a filter",
    "type": "object",
    "properties": {
     "strategy": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "identity": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "proxy_policy": {
      "$ref": "#/components/schemas/ProxyPolicy",
      "description": ""
     },
     "filter": {
      "$ref": "#/components/schemas/ResourceFilter",
      "description": ""
     },
     "live_view": {
      "type": "boolean",
      "format": "bool",
      "description": ""
     }
    },
    "required": [
     "live_view"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "18 §3"
   },
   "ScoredUnit": {
    "title": "ScoredUnit",
    "description": "a unit with its nearness",
    "type": "object",
    "properties": {
     "unit": {
      "$ref": "#/components/schemas/UnitRef",
      "description": ""
     },
     "nearness": {
      "type": "number",
      "format": "share",
      "description": ""
     }
    },
    "required": [
     "unit",
     "nearness"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "04 §3"
   },
   "ConceptWeight": {
    "title": "ConceptWeight",
    "description": "one concept with its weight in an entity's content affinity, and the evidence that carries it",
    "type": "object",
    "properties": {
     "concept": {
      "type": "string",
      "format": "id",
      "description": "a concept row"
     },
     "weight": {
      "type": "number",
      "format": "share",
      "description": ""
     },
     "evidence": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/EvidenceRef"
      },
      "description": "a weight without evidence cannot be written"
     }
    },
    "required": [
     "concept",
     "weight",
     "evidence"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "14 §2.4"
   },
   "CompareInput": {
    "title": "CompareInput",
    "description": "two brands and a question from the closed list",
    "type": "object",
    "properties": {
     "first": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "second": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "question": {
      "type": "string",
      "description": "",
      "x-register": "ComparisonQuestion"
     }
    },
    "required": [
     "first",
     "second",
     "question"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "12 §3"
   },
   "DeepenInput": {
    "title": "DeepenInput",
    "description": "an observation and the depth asked",
    "type": "object",
    "properties": {
     "observation": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "depth": {
      "type": "string",
      "enum": [
       "fetch",
       "embed",
       "both"
      ],
      "description": ""
     },
     "asked_by": {
      "$ref": "#/components/schemas/UnitRef",
      "description": ""
     }
    },
    "required": [
     "observation",
     "depth",
     "asked_by"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "04 §3"
   },
   "PlatformDomain": {
    "title": "PlatformDomain",
    "description": "a platform's world as one row the capture side is generated from: its things and the kinds they become, how they relate, its pages and its API objects with what each yields and the lists each carries, what its properties name, and what feeds a signal; the platform's sources, the browser connector's declaration, the source objects, the templates, the mappings and the mention kinds are derived from this row by the authoring tool and never written beside it",
    "type": "object",
    "properties": {
     "platform": {
      "type": "string",
      "format": "text",
      "description": "the slug; the row's key"
     },
     "name": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "host": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "address_patterns": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "text"
      },
      "description": ""
     },
     "tint": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "mark_drawn": {
      "type": "boolean",
      "format": "bool",
      "description": ""
     },
     "things": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/PlatformThing"
      },
      "description": ""
     },
     "relations": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/PlatformRelation"
      },
      "description": ""
     },
     "pages": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/PlatformPage"
      },
      "description": ""
     },
     "reveals": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/PlatformReveal"
      },
      "description": "the controls on its pages that show more"
     },
     "api": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/PlatformApiObject"
      },
      "description": ""
     },
     "network_events": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/ResourceFilter"
      },
      "description": ""
     },
     "mentions": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/PlatformMention"
      },
      "description": ""
     },
     "signals": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/PlatformSignal"
      },
      "description": ""
     },
     "session": {
      "$ref": "#/components/schemas/SessionMaterial",
      "description": "what a signed-in identity on this platform keeps and how the platform tells that it is signed in; absent for a platform with no signed-in reading"
     },
     "version": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "state": {
      "$ref": "#/components/schemas/Readiness",
      "description": ""
     },
     "legality_tier": {
      "type": "string",
      "format": "text",
      "description": "the legality tier of pages a person opens on this platform, as ruled for the tenant; absent until ruled, and the browser source stays not ready"
     },
     "standing_grant": {
      "type": "boolean",
      "format": "bool",
      "description": "whether the extension holds a standing site grant for this platform after the store review, so a person on its pages is not asked again; false or absent for every other platform, whose grant is optional and asked for on the person's own act"
     }
    },
    "required": [
     "platform",
     "name",
     "host",
     "address_patterns",
     "mark_drawn",
     "things",
     "relations",
     "pages",
     "reveals",
     "api",
     "network_events",
     "mentions",
     "signals",
     "version",
     "state"
    ],
    "additionalProperties": false,
    "x-kind": "row",
    "x-scope": "platform",
    "x-store": "postgres",
    "x-key": "the platform",
    "x-places": [],
    "x-from": "24 §2.1"
   },
   "PlatformMention": {
    "title": "PlatformMention",
    "description": "what kind of thing a property names on this platform",
    "type": "object",
    "properties": {
     "property": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "kind": {
      "type": "string",
      "description": "",
      "x-register": "KindOfEntity"
     }
    },
    "required": [
     "property",
     "kind"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "24 §2.7"
   },
   "BrandDuration": {
    "title": "BrandDuration",
    "description": "one duration of motion a site declares",
    "type": "object",
    "properties": {
     "ms": {
      "type": "number",
      "format": "number",
      "description": ""
     },
     "uses": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "properties": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "text"
      },
      "description": "transition or animation"
     },
     "basis": {
      "$ref": "#/components/schemas/Basis",
      "description": ""
     },
     "from": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "hash"
      },
      "description": ""
     }
    },
    "required": [
     "ms",
     "uses",
     "properties",
     "basis",
     "from"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "DESIGN/the-brand-graph-from-a-domain §5"
   },
   "UploadInput": {
    "title": "UploadInput",
    "description": "a file in the workspace to upload",
    "type": "object",
    "properties": {
     "path": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "kind": {
      "type": "string",
      "description": "",
      "x-register": "UserProvidedContentKind"
     }
    },
    "required": [
     "path",
     "kind"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "MODELS/the-outside-agent-path §7"
   },
   "TouchedBuckets": {
    "title": "TouchedBuckets",
    "description": "for one table of gold, the entity buckets an acceptance touched and the snapshot it made; a reader is stale when its read set meets them",
    "type": "object",
    "properties": {
     "table": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "buckets": {
      "type": "array",
      "items": {
       "type": "integer",
       "format": "count"
      },
      "description": "bounded by the bucket parameter"
     },
     "snapshot": {
      "type": "integer",
      "format": "count",
      "description": ""
     }
    },
    "required": [
     "table",
     "buckets",
     "snapshot"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "04 §4"
   },
   "TwoDates": {
    "title": "TwoDates",
    "description": "the two dates that every read specifies: the date it was true and the date we knew it; both default to now",
    "type": "object",
    "properties": {
     "as_true_on": {
      "type": "string",
      "format": "time",
      "description": ""
     },
     "as_known_on": {
      "type": "string",
      "format": "time",
      "description": ""
     }
    },
    "required": [
     "as_true_on",
     "as_known_on"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "04 §2.1"
   },
   "Summary": {
    "title": "Summary",
    "description": "a count, share, rank or ratio in one of three positions, never folded",
    "type": "object",
    "properties": {
     "position": {
      "type": "string",
      "enum": [
       "measured",
       "never measured",
       "withheld"
      ],
      "description": ""
     },
     "value": {
      "description": "only for measured, which may be zero"
     },
     "reason": {
      "type": "string",
      "format": "text",
      "description": "for never measured"
     },
     "withheld_count": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "coverage": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/ChannelCoverage"
      },
      "description": ""
     },
     "population": {
      "$ref": "#/components/schemas/PopulationStatement",
      "description": ""
     },
     "predicate_version": {
      "type": "string",
      "format": "hash",
      "description": ""
     },
     "definition_version": {
      "type": "integer",
      "format": "count",
      "description": ""
     }
    },
    "required": [
     "position",
     "coverage",
     "population",
     "predicate_version",
     "definition_version"
    ],
    "additionalProperties": false,
    "x-kind": "fact",
    "x-scope": "follows",
    "x-store": "postgres",
    "x-key": "the predicate, its own definition and the window",
    "x-places": [],
    "x-from": "06 §2.2"
   },
   "BrandGrid": {
    "title": "BrandGrid",
    "description": "the layout grid of the pages",
    "type": "object",
    "properties": {
     "containers": {
      "type": "array",
      "items": {
       "type": "number",
       "format": "number"
      },
      "description": "the max-widths declared on containers, in px"
     },
     "columns": {
      "type": "array",
      "items": {
       "type": "integer",
       "format": "count"
      },
      "description": "the column counts of the grids declared"
     },
     "gutter": {
      "type": "number",
      "format": "number",
      "description": "the most used grid gap, in px"
     },
     "basis": {
      "$ref": "#/components/schemas/Basis",
      "description": ""
     },
     "from": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "hash"
      },
      "description": ""
     }
    },
    "required": [
     "containers",
     "columns",
     "basis",
     "from"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "DESIGN/the-brand-graph-from-a-domain §5"
   },
   "Board": {
    "title": "Board",
    "description": "a board of tiles for an audience, at tenant or platform scope, drawn from saved questions",
    "type": "object",
    "properties": {
     "name": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "audience": {
      "type": "string",
      "format": "text",
      "description": "a role"
     },
     "tiles": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/Tile"
      },
      "description": ""
     },
     "period": {
      "$ref": "#/components/schemas/Window",
      "description": "the default"
     }
    },
    "required": [
     "name",
     "audience",
     "tiles",
     "period"
    ],
    "additionalProperties": false,
    "x-kind": "definition",
    "x-scope": "tenant",
    "x-store": "postgres",
    "x-key": "the scope and the name",
    "x-places": [],
    "x-from": "11 §2.1"
   },
   "FeedbackLoop": {
    "title": "FeedbackLoop",
    "description": "one loop of a systems model: balancing or reinforcing, the stocks it runs through, its delay and its limit",
    "type": "object",
    "properties": {
     "name": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "kind": {
      "type": "string",
      "enum": [
       "balances",
       "reinforces"
      ],
      "description": ""
     },
     "through": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "text"
      },
      "description": "the stocks it passes, in order"
     },
     "delay": {
      "type": "string",
      "format": "duration",
      "description": ""
     },
     "limit": {
      "type": "string",
      "format": "text",
      "description": "what limits it, or breaks it; a reinforcing loop with no limit is not ready"
     },
     "gain": {
      "type": "string",
      "description": "the measure that reads its gain",
      "x-register": "KindOfMeasure"
     }
    },
    "required": [
     "name",
     "kind",
     "through",
     "limit"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "26 §2.1; MODELS/the-whole-platform §2"
   },
   "PlatformState": {
    "title": "PlatformState",
    "description": "every service with its life, every reader's distance behind the log, events set aside, settings changed, cost by kind",
    "type": "object",
    "properties": {
     "services": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/RunningService"
      },
      "description": ""
     },
     "readers_behind": {
      "type": "object",
      "additionalProperties": {
       "type": "integer",
       "format": "count"
      },
      "description": ""
     },
     "events_set_aside": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/Event"
      },
      "description": ""
     },
     "settings_changed": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/Event"
      },
      "description": ""
     },
     "cost_by_kind": {
      "$ref": "#/components/schemas/Cost",
      "description": ""
     }
    },
    "required": [
     "services",
     "readers_behind",
     "events_set_aside",
     "settings_changed",
     "cost_by_kind"
    ],
    "additionalProperties": false,
    "x-kind": "view",
    "x-scope": "platform",
    "x-store": "derived",
    "x-key": "the moment",
    "x-places": [],
    "x-from": "11 §2"
   },
   "ClientConnection": {
    "title": "ClientConnection",
    "description": "one WebSocket the installed app keeps open to the platform: authenticated by the session's token in its first message, carrying progress, task events and file bytes",
    "type": "object",
    "properties": {
     "session": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "opened_at": {
      "type": "string",
      "format": "time",
      "description": ""
     },
     "last_message_at": {
      "type": "string",
      "format": "time",
      "description": ""
     },
     "bytes_in": {
      "type": "integer",
      "format": "bytes",
      "description": ""
     },
     "bytes_out": {
      "type": "integer",
      "format": "bytes",
      "description": ""
     },
     "state": {
      "type": "string",
      "enum": [
       "open",
       "idle",
       "closed"
      ],
      "description": ""
     }
    },
    "required": [
     "session",
     "opened_at",
     "last_message_at",
     "bytes_in",
     "bytes_out",
     "state"
    ],
    "additionalProperties": false,
    "x-kind": "fact",
    "x-scope": "tenant",
    "x-store": "postgres",
    "x-key": "the session and the connection id",
    "x-places": [],
    "x-from": "21 §2.4; MODELS/the-outside-agent-path §4"
   },
   "CapturePreview": {
    "title": "CapturePreview",
    "description": "what a capture would send: bytes by kind, network events kept and dropped, redactions by kind, the neighbourhood's size, the cells credited and what the plan meters",
    "type": "object",
    "properties": {
     "scope": {
      "type": "string",
      "enum": [
       "this item",
       "this thread",
       "this channel as shown",
       "this page",
       "this meeting",
       "my outbound message"
      ],
      "description": ""
     },
     "bytes_by_kind": {
      "description": "document, network events, selection, image"
     },
     "events_kept": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "events_dropped": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "redactions_by_kind": {
      "description": ""
     },
     "items": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "people": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "cells": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "id"
      },
      "description": ""
     },
     "metered": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/MeteredUsage"
      },
      "description": "what the plan would count"
     }
    },
    "required": [
     "scope",
     "bytes_by_kind",
     "events_kept",
     "events_dropped",
     "redactions_by_kind",
     "items",
     "people",
     "cells",
     "metered"
    ],
    "additionalProperties": false,
    "x-kind": "view",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "24 §2.4"
   },
   "RoutingRule": {
    "title": "RoutingRule",
    "description": "a predicate over leads with a person or a team attached; its dry run is the preview",
    "type": "object",
    "properties": {
     "name": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "predicate": {
      "type": "string",
      "format": "hash",
      "description": ""
     },
     "to": {
      "$ref": "#/components/schemas/GrantHolder",
      "description": "a user or a team"
     },
     "armed": {
      "type": "boolean",
      "format": "bool",
      "description": ""
     }
    },
    "required": [
     "name",
     "predicate",
     "to",
     "armed"
    ],
    "additionalProperties": false,
    "x-kind": "definition",
    "x-scope": "brand",
    "x-store": "postgres",
    "x-key": "its name and version",
    "x-places": [],
    "x-from": "08 §2"
   },
   "PredicateBudgets": {
    "title": "PredicateBudgets",
    "description": "how far a predicate may expand, how much state it may keep, how large it may be, how many semantic leaves a tenant may arm",
    "type": "object",
    "properties": {
     "expansion": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "state": {
      "type": "integer",
      "format": "bytes",
      "description": ""
     },
     "size": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "semantic_leaves_armed": {
      "type": "integer",
      "format": "count",
      "description": ""
     }
    },
    "required": [
     "expansion",
     "state",
     "size",
     "semantic_leaves_armed"
    ],
    "additionalProperties": false,
    "x-kind": "parameter",
    "x-scope": "platform",
    "x-store": "postgres",
    "x-key": "",
    "x-places": [],
    "x-from": "06 §2.1"
   },
   "AssignInput": {
    "title": "AssignInput",
    "description": "the lead and the user; by hand, or hand on",
    "type": "object",
    "properties": {
     "lead": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "user": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "reason": {
      "type": "string",
      "format": "text",
      "description": ""
     }
    },
    "required": [
     "lead",
     "user",
     "reason"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "08 §3"
   },
   "WorkflowInput": {
    "title": "WorkflowInput",
    "description": "a workflow to write, preview or arm",
    "type": "object",
    "properties": {
     "workflow": {
      "$ref": "#/components/schemas/Workflow",
      "description": ""
     },
     "do": {
      "type": "string",
      "enum": [
       "write",
       "preview",
       "arm"
      ],
      "description": ""
     }
    },
    "required": [
     "workflow",
     "do"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "09 §3"
   },
   "SignalsInput": {
    "title": "SignalsInput",
    "description": "a monitor, a subject, a kind or a strategy, and a window",
    "type": "object",
    "properties": {
     "monitor": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "subject": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "kind": {
      "type": "string",
      "description": "",
      "x-register": "KindOfSignal"
     },
     "strategy": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "window": {
      "$ref": "#/components/schemas/Window",
      "description": ""
     },
     "catches": {
      "type": "boolean",
      "format": "bool",
      "description": "read catches instead"
     }
    },
    "required": [
     "window"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "06 §3"
   },
   "PageLayer": {
    "title": "PageLayer",
    "description": "a dialog, menu or viewer open on the page when it was read, read as its own region: its kind, its title, the visible text, its links and how many items it listed; what a reveal of the domain binds to",
    "type": "object",
    "properties": {
     "kind": {
      "type": "string",
      "enum": [
       "dialog",
       "menu",
       "expanded",
       "viewer"
      ],
      "description": ""
     },
     "title": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "labelled_by": {
      "type": "string",
      "format": "text",
      "description": "the id or label the page gave the region"
     },
     "text": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "links": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/PageLink"
      },
      "description": ""
     },
     "items": {
      "type": "integer",
      "format": "count",
      "description": "the list items inside it"
     }
    },
    "required": [
     "kind",
     "title",
     "text",
     "links",
     "items"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "24 §2.1"
   },
   "Item": {
    "title": "Item",
    "description": "the atomic unit of input and output on the wire, typed by kind, with a lifecycle of started, streaming and completed; a tool call completes with its response card",
    "type": "object",
    "properties": {
     "id": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "kind": {
      "type": "string",
      "enum": [
       "user-message",
       "agent-message",
       "tool-call",
       "task",
       "approval-request",
       "question",
       "notification",
       "document"
      ],
      "description": ""
     },
     "state": {
      "type": "string",
      "enum": [
       "started",
       "streaming",
       "completed"
      ],
      "description": ""
     },
     "payload": {
      "description": "the owning type of the kind: UserMessage for a user-message, ToolCall for a tool-call, Task for a task, ApprovalRequest, TaskQuestion, Notification and Document for theirs; never a shape made at the site"
     },
     "started_at": {
      "type": "string",
      "format": "time",
      "description": ""
     },
     "completed_at": {
      "type": "string",
      "format": "time",
      "description": ""
     }
    },
    "required": [
     "id",
     "kind",
     "state",
     "payload",
     "started_at"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "09 §2.2"
   },
   "ScrapeRequest": {
    "title": "ScrapeRequest",
    "description": "arbitrary scraping as data: a scope, an extraction of fields or a schema for the model-assisted reader, the source object the rows become, a resource filter, a held identity and a proxy policy",
    "type": "object",
    "properties": {
     "template": {
      "type": "string",
      "format": "id",
      "description": "an extraction template; any of its parts may be overridden below"
     },
     "scope": {
      "$ref": "#/components/schemas/CrawlScope",
      "description": "required when no template"
     },
     "fields": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/FieldSpec"
      },
      "description": "declared selectors"
     },
     "schema": {
      "description": "for the model-assisted reader, every value with its evidence span or refused"
     },
     "source_object": {
      "type": "string",
      "description": "declared inline for one scrape, or a registered row",
      "x-register": "SourceObject"
     },
     "mapping": {
      "type": "string",
      "description": "",
      "x-register": "Mapping"
     },
     "filter": {
      "$ref": "#/components/schemas/ResourceFilter",
      "description": ""
     },
     "as_identity": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "proxy_policy": {
      "$ref": "#/components/schemas/ProxyPolicy",
      "description": ""
     },
     "credit_cells": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "id"
      },
      "description": ""
     },
     "asked_by": {
      "type": "string",
      "format": "text",
      "description": "who asked for the run, as the caller's kind, or the crawler for an address a walk found; the beat takes what a person or the agent asked before the crawler's own discoveries, oldest first within each"
     }
    },
    "required": [
     "source_object",
     "filter"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "18 §2.18"
   },
   "GroundingsInput": {
    "title": "GroundingsInput",
    "description": "which groundings to read: one capture's, one entity's, or every one in a place",
    "type": "object",
    "properties": {
     "capture": {
      "type": "string",
      "format": "hash",
      "description": ""
     },
     "entity": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "place": {
      "type": "string",
      "enum": [
       "staged",
       "grounding",
       "waiting for a person",
       "committed",
       "discarded",
       "all"
      ],
      "description": ""
     }
    },
    "required": [],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "24 §3"
   },
   "ModelFamily": {
    "title": "ModelFamily",
    "description": "one family of quantitative model a market may be expressed in over the substrate: what it represents, the quantities it holds, what it reads from the record, what it gives, the solver that steps or solves it, and the check that proves it; a template names its family and a vertical chooses among them",
    "type": "object",
    "properties": {
     "name": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "what": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "representation": {
      "type": "string",
      "enum": [
       "stocks and flows",
       "a graph of participants and handovers",
       "a hypergraph of co-presence",
       "agents with behaviours",
       "a game of roles",
       "a learned latent model of the market"
      ],
      "description": ""
     },
     "substrate": {
      "type": "string",
      "format": "text",
      "description": "the parts of the platform the model is written over and stepped on"
     },
     "state_form": {
      "type": "string",
      "format": "text",
      "description": "what one state of the model is, as rows"
     },
     "quantities": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "text"
      },
      "description": "the quantities the model holds, each a registered measure or a parameter"
     },
     "reads": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "text"
      },
      "description": "what it reads from the record, by kind"
     },
     "gives": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "text"
      },
      "description": "what a run gives, by kind"
     },
     "solver": {
      "type": "string",
      "format": "text",
      "description": "how a state becomes the next, or how the model is solved"
     },
     "check": {
      "type": "string",
      "format": "text",
      "description": "the check that proves a run right, with its planted fault"
     },
     "fits_verticals": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "text"
      },
      "description": "the vertical families it fits, by name; empty means every vertical"
     }
    },
    "required": [
     "name",
     "what",
     "representation",
     "substrate",
     "state_form",
     "quantities",
     "reads",
     "gives",
     "solver",
     "check",
     "fits_verticals"
    ],
    "additionalProperties": false,
    "x-kind": "row",
    "x-scope": "platform",
    "x-store": "postgres",
    "x-key": "its name",
    "x-places": [],
    "x-from": "26 §2.1"
   },
   "Flow": {
    "title": "Flow",
    "description": "a kind of flow, as a row of the register: the only way a unit changes place or a new unit is made",
    "type": "object",
    "properties": {
     "name": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "meaning": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "unit_kind": {
      "type": "string",
      "description": "",
      "x-register": "Kind"
     },
     "from_place": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "to_place": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "makes_kind": {
      "type": "string",
      "description": "for a flow that makes a fact",
      "x-register": "Kind"
     },
     "emitted_by": {
      "type": "string",
      "format": "text",
      "description": "the one part that emits it"
     },
     "plane": {
      "type": "string",
      "enum": [
       "tenant plane",
       "work plane"
      ],
      "description": ""
     },
     "version_of_shape": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "repeat_rule": {
      "type": "string",
      "format": "text",
      "description": "what makes a repeat harmless"
     },
     "retention_class": {
      "type": "string",
      "description": "",
      "x-register": "RetentionClass"
     },
     "reasons": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "text"
      },
      "description": "the typed reasons its outcomes may carry, each with its failure class"
     }
    },
    "required": [
     "name",
     "meaning",
     "unit_kind",
     "emitted_by",
     "plane",
     "version_of_shape",
     "repeat_rule",
     "retention_class",
     "reasons"
    ],
    "additionalProperties": false,
    "x-kind": "row",
    "x-scope": "platform",
    "x-store": "postgres",
    "x-key": "its name",
    "x-places": [],
    "x-from": "01 §2.3"
   },
   "Ingress": {
    "title": "Ingress",
    "description": "the Gateway API implementation in front of the API gateway, one copy per machine sharing certificates through secrets",
    "type": "object",
    "properties": {
     "implementation": {
      "type": "string",
      "format": "text",
      "description": "Envoy Gateway recommended; the owner's decision D-37"
     },
     "routes": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/Route"
      },
      "description": ""
     },
     "copies": {
      "type": "integer",
      "format": "count",
      "description": "one per machine"
     },
     "trusted_proxies": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "address"
      },
      "description": "only the load balancer"
     },
     "connection_limits": {
      "$ref": "#/components/schemas/ConnectionLimits",
      "description": ""
     }
    },
    "required": [
     "implementation",
     "routes",
     "copies",
     "trusted_proxies",
     "connection_limits"
    ],
    "additionalProperties": false,
    "x-kind": "definition",
    "x-scope": "platform",
    "x-store": "postgres",
    "x-key": "its name",
    "x-places": [],
    "x-from": "21 §2.1; D-37"
   },
   "Hypothesis": {
    "title": "Hypothesis",
    "description": "a claim the record does not yet settle, one shape for its faces",
    "type": "object",
    "properties": {
     "claim": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "face": {
      "type": "string",
      "enum": [
       "a possible match",
       "a candidate",
       "a part inferred from a website",
       "a forecast",
       "a proposed definition",
       "a suggested connection",
       "a suggested claim",
       "a done move",
       "a rival marking",
       "a play's class",
       "a propensity"
      ],
      "description": "the five faces of a claim under test, the three the grounding makes, the rival marking a person makes and settles at once (specification 12, specification 24 section 2.8), a play's class read on the beat and settled by the rule, and a propensity of an actor or a content for a lead, settled by the effects (MODELS/the-strategy-system-as-a-formal-model sections 3.2 and 7)"
     },
     "subject": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "subject_entity": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "evidence_for": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/EvidenceRef"
      },
      "description": ""
     },
     "evidence_against": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/EvidenceRef"
      },
      "description": ""
     },
     "tests": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/HypothesisTest"
      },
      "description": "owed and run"
     },
     "bar": {
      "type": "string",
      "format": "text",
      "description": "what settles it"
     },
     "decider": {
      "type": "string",
      "enum": [
       "a person",
       "the agent under a grant",
       "the rule",
       "the effect"
      ],
      "description": ""
     },
     "standing": {
      "type": "string",
      "enum": [
       "under test",
       "supported",
       "refuted",
       "cannot tell"
      ],
      "description": ""
     },
     "made_at": {
      "type": "string",
      "format": "time",
      "description": ""
     },
     "settled_at": {
      "type": "string",
      "format": "time",
      "description": ""
     },
     "settled_by": {
      "$ref": "#/components/schemas/Caller",
      "description": ""
     },
     "proposes": {
      "$ref": "#/components/schemas/ProposedFact",
      "description": "the fact the record would hold if the claim were supported, in the record's own shape"
     },
     "breadth": {
      "type": "string",
      "enum": [
       "exact",
       "similar",
       "related",
       "broad"
      ],
      "description": "how wide the grounding cast when it made this claim"
     },
     "score": {
      "type": "number",
      "format": "share",
      "description": "the grounding's nearness, before a person's word"
     },
     "grounding": {
      "type": "string",
      "format": "id",
      "description": "the grounding that made it"
     }
    },
    "required": [
     "claim",
     "face",
     "subject",
     "evidence_for",
     "evidence_against",
     "tests",
     "bar",
     "decider",
     "standing",
     "made_at"
    ],
    "additionalProperties": false,
    "x-kind": "work",
    "x-scope": "follows",
    "x-store": "postgres",
    "x-key": "the claim and its subject",
    "x-places": [
     "under test",
     "supported",
     "refuted",
     "cannot tell"
    ],
    "x-from": "01 §2.9; MODELS/the-hypothesis"
   },
   "JourneyInput": {
    "title": "JourneyInput",
    "description": "one unit, and a bound on depth",
    "type": "object",
    "properties": {
     "unit": {
      "$ref": "#/components/schemas/UnitRef",
      "description": ""
     },
     "depth": {
      "type": "integer",
      "format": "count",
      "description": ""
     }
    },
    "required": [
     "unit"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "11 §3"
   },
   "PropensityToMove": {
    "title": "PropensityToMove",
    "description": "the chance that a lead moves up a rung within the window if this actor touches it or this content reaches it, with its interval and its basis; a hypothesis of the face propensity; distinct from a buyer's Propensity to buy an offering (14 §2.4), which is the lead's side of the same question",
    "type": "object",
    "properties": {
     "face": {
      "type": "string",
      "enum": [
       "actor",
       "content"
      ],
      "description": ""
     },
     "subject": {
      "type": "string",
      "format": "id",
      "description": "the actor or the content"
     },
     "lead": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "move": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "play": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "rung_aimed": {
      "type": "string",
      "description": "the next rung above the lead's",
      "x-register": "Stage"
     },
     "window": {
      "type": "string",
      "format": "duration",
      "description": ""
     },
     "chance": {
      "type": "number",
      "format": "chance",
      "description": ""
     },
     "interval": {
      "$ref": "#/components/schemas/Interval",
      "description": ""
     },
     "similarity": {
      "type": "number",
      "format": "share",
      "description": "the semantic comparison of the lead's observations with the subject's"
     },
     "need": {
      "type": "number",
      "format": "share",
      "description": "the share of the lead's stated pains and needs the subject has met before"
     },
     "history": {
      "type": "integer",
      "format": "count",
      "description": "the outcomes the estimate pooled"
     },
     "odds": {
      "type": "number",
      "format": "chance",
      "description": "the chance the policy gave this subject of being chosen"
     },
     "chosen": {
      "type": "boolean",
      "format": "bool",
      "description": ""
     },
     "policy": {
      "type": "string",
      "description": "",
      "x-register": "Policy"
     },
     "hypothesis": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "state": {
      "$ref": "#/components/schemas/Readiness",
      "description": "not ready with no interval when uncalibrated"
     },
     "read_at": {
      "type": "string",
      "format": "time",
      "description": ""
     }
    },
    "required": [
     "face",
     "subject",
     "lead",
     "rung_aimed",
     "window",
     "chance",
     "interval",
     "similarity",
     "need",
     "history",
     "chosen",
     "policy",
     "hypothesis",
     "state",
     "read_at"
    ],
    "additionalProperties": false,
    "x-kind": "fact",
    "x-scope": "strategy",
    "x-store": "postgres+lake",
    "x-key": "the face, the subject, the lead and the move",
    "x-places": [],
    "x-from": "MODELS/the-strategy-system-as-a-formal-model §3.2, §4"
   },
   "ModelFamiliesInput": {
    "title": "ModelFamiliesInput",
    "description": "the vertical or the representation the families must fit; both absent asks for every family",
    "type": "object",
    "properties": {
     "vertical": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "representation": {
      "type": "string",
      "enum": [
       "stocks and flows",
       "a graph of participants and handovers",
       "a hypergraph of co-presence",
       "agents with behaviours",
       "a game of roles"
      ],
      "description": ""
     }
    },
    "required": [],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "26 §3"
   },
   "ReadingOffered": {
    "title": "ReadingOffered",
    "description": "the estimator offered to a buyer profile in return for a contact: the model it evaluates, the drivers it asks in order, what is shown at once and after the contact, the consent it states, its page, its play and the rung a submission lands on",
    "type": "object",
    "properties": {
     "name": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "kind_of_buyer": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "business_model": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "asks": {
      "type": "array",
      "items": {
       "type": "string",
       "description": "the name of a row of KindOfMeasure",
       "x-register": "KindOfMeasure"
      },
      "description": "the drivers the buyer states, in order; no more than the parameter allows"
     },
     "shown_at_once": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "text"
      },
      "description": "the outputs shown before any contact"
     },
     "shown_after_contact": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "text"
      },
      "description": ""
     },
     "contact_asked": {
      "type": "array",
      "items": {
       "type": "string",
       "description": "the name of a row of ContactKind",
       "x-register": "ContactKind"
      },
      "description": ""
     },
     "consent_text": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "document": {
      "type": "string",
      "format": "id",
      "description": "the estimator page, a document of specification 17"
     },
     "way": {
      "type": "string",
      "description": "the row a reading offered for a contact",
      "x-register": "WayOfGoingToMarket"
     },
     "play": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "rung": {
      "type": "string",
      "format": "text",
      "description": "the ladder rung a submission with a contact lands on"
     },
     "version": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "state": {
      "$ref": "#/components/schemas/Readiness",
      "description": ""
     }
    },
    "required": [
     "name",
     "kind_of_buyer",
     "business_model",
     "asks",
     "shown_at_once",
     "shown_after_contact",
     "contact_asked",
     "consent_text",
     "document",
     "way",
     "rung",
     "version",
     "state"
    ],
    "additionalProperties": false,
    "x-kind": "definition",
    "x-scope": "brand",
    "x-store": "postgres",
    "x-key": "the buyer profile and its version",
    "x-places": [],
    "x-from": "25 §2.1"
   },
   "SampleStratum": {
    "title": "SampleStratum",
    "description": "one stratum of a preview's sample: how many matched in it and how many are shown",
    "type": "object",
    "properties": {
     "stratum": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "matched": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "shown": {
      "type": "integer",
      "format": "count",
      "description": ""
     }
    },
    "required": [
     "stratum",
     "matched",
     "shown"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "06 §2.4"
   },
   "CaptureHealthRow": {
    "title": "CaptureHealthRow",
    "description": "one platform's captures in the window and the window before, with the verdict",
    "type": "object",
    "properties": {
     "platform": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "captures": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "before": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "verdict": {
      "type": "string",
      "enum": [
       "steady",
       "dropped",
       "silent",
       "new"
      ],
      "description": ""
     }
    },
    "required": [
     "platform",
     "captures",
     "before",
     "verdict"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "24 §3"
   },
   "Caller": {
    "title": "Caller",
    "description": "who is calling, as the auth gateway made it",
    "type": "object",
    "properties": {
     "kind": {
      "type": "string",
      "enum": [
       "a user",
       "our agent",
       "an outside agent",
       "the platform's own work",
       "the crawler"
      ],
      "description": ""
     },
     "acts_for": {
      "type": "string",
      "format": "id",
      "description": "the user acted for"
     },
     "came_in_through": {
      "type": "string",
      "enum": [
       "a session",
       "a key",
       "a run"
      ],
      "description": ""
     },
     "client": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "access_scopes": {
      "type": "array",
      "items": {
       "type": "string",
       "description": "the name of a row of AccessScope",
       "x-register": "AccessScope"
      },
      "description": "on the token"
     },
     "signed_in_strength": {
      "type": "string",
      "enum": [
       "password",
       "passkey",
       "second factor"
      ],
      "description": ""
     },
     "signed_in_at": {
      "type": "string",
      "format": "time",
      "description": ""
     },
     "tenant": {
      "type": "string",
      "format": "id",
      "description": "the token is bound to one tenant"
     },
     "grants": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/GrantRef"
      },
      "description": "after all three narrowings, for the place asked"
     },
     "run": {
      "type": "string",
      "format": "id",
      "description": ""
     }
    },
    "required": [
     "kind",
     "came_in_through",
     "access_scopes",
     "tenant",
     "grants"
    ],
    "additionalProperties": false,
    "x-kind": "view",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "made for each request and never stored",
    "x-places": [],
    "x-from": "03 §2.2"
   },
   "NamedProcedure": {
    "title": "NamedProcedure",
    "description": "a written way of doing a recurring job, which the agent follows and a person can read",
    "type": "object",
    "properties": {
     "name": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "steps": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "text"
      },
      "description": ""
     },
     "plants": {
      "type": "string",
      "format": "text",
      "description": "for an acceptance procedure: the fault it plants"
     },
     "must_read_red": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "must_read_green": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "population": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "control": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "code": {
      "type": "string",
      "format": "text",
      "description": "for a procedure the workbench runs: the script its steps run, as a path inside the workspace"
     },
     "code_hash": {
      "type": "string",
      "format": "hash",
      "description": "the hash of the code as it ran; a number from code without it is never measured"
     }
    },
    "required": [
     "name",
     "steps"
    ],
    "additionalProperties": false,
    "x-kind": "definition",
    "x-scope": "platform",
    "x-store": "postgres",
    "x-key": "its name and version",
    "x-places": [],
    "x-from": "09 §2; 20 §2.1"
   },
   "Actor": {
    "title": "Actor",
    "description": "a player of the strategy's game: one view over a user with a role held, a voice that speaks for the brand, or a held identity, with its accounts, the kinds of action it may take, its grant, its standing and its capacity",
    "type": "object",
    "properties": {
     "kind": {
      "type": "string",
      "enum": [
       "a user",
       "a voice",
       "a held identity"
      ],
      "description": ""
     },
     "unit": {
      "type": "string",
      "format": "id",
      "description": "the RoleHeld, the Voice or the held identity"
     },
     "brand": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "accounts": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "id"
      },
      "description": "the platform accounts it speaks through"
     },
     "kinds_of_action": {
      "type": "array",
      "items": {
       "type": "string",
       "description": "the name of a row of KindOfAction",
       "x-register": "KindOfAction"
      },
      "description": ""
     },
     "grant": {
      "type": "string",
      "format": "id",
      "description": "the grant that bounds it; absent reads not allowed"
     },
     "standing": {
      "type": "string",
      "format": "text",
      "description": "the sending identity's standing, read from the record"
     },
     "capacity": {
      "type": "integer",
      "format": "count",
      "description": "the moves it may carry in the window, a stock"
     },
     "outcomes": {
      "type": "integer",
      "format": "count",
      "description": "the outcomes of its record that the propensity is calibrated on"
     }
    },
    "required": [
     "kind",
     "unit",
     "brand",
     "accounts",
     "kinds_of_action",
     "standing",
     "capacity",
     "outcomes"
    ],
    "additionalProperties": false,
    "x-kind": "view",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "MODELS/the-strategy-system-as-a-formal-model §3; 12 §2.1; 13 §2.1"
   },
   "BrandFrame": {
    "title": "BrandFrame",
    "description": "one frame of a template: its role, its layout, the scaffold a build reads, the values and elements it uses",
    "type": "object",
    "properties": {
     "role": {
      "type": "string",
      "format": "text",
      "description": "cover, section, content, closing, header, body, footer, title, caption, post, story"
     },
     "layout": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "scaffold": {
      "type": "string",
      "format": "text",
      "description": "what the frame holds, in plain sentences, for a build or a generation prompt"
     },
     "token_paths": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "text"
      },
      "description": "the values it uses, by path"
     },
     "element_kinds": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "text"
      },
      "description": "the element kinds it places"
     },
     "basis": {
      "$ref": "#/components/schemas/Basis",
      "description": ""
     },
     "from": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "hash"
      },
      "description": ""
     }
    },
    "required": [
     "role",
     "layout",
     "scaffold",
     "token_paths",
     "element_kinds",
     "basis",
     "from"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "DESIGN/the-brand-graph-from-a-domain §5"
   },
   "ChainHandover": {
    "title": "ChainHandover",
    "description": "a flow between two stocks, with its count as a fact",
    "type": "object",
    "properties": {
     "from": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "to": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "what": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "count": {
      "$ref": "#/components/schemas/Summary",
      "description": ""
     },
     "country": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "money_per_unit": {
      "$ref": "#/components/schemas/NumberInPosition",
      "description": "by payer and setting, measured, estimated or stipulated"
     },
     "rail": {
      "type": "string",
      "format": "text",
      "description": "the payment rail, where the handover splits by it"
     },
     "permission": {
      "type": "string",
      "format": "id",
      "description": "the permission held that gates the handover"
     }
    },
    "required": [
     "from",
     "to",
     "what",
     "count"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "12 §2.1"
   },
   "Rights": {
    "title": "Rights",
    "description": "what the source allows to be done with what was read",
    "type": "object",
    "properties": {
     "keep": {
      "type": "boolean",
      "format": "bool",
      "description": ""
     },
     "show_to_a_tenant": {
      "type": "boolean",
      "format": "bool",
      "description": ""
     },
     "quote": {
      "type": "boolean",
      "format": "bool",
      "description": ""
     },
     "publish_again": {
      "type": "boolean",
      "format": "bool",
      "description": ""
     },
     "train_a_model_on": {
      "type": "boolean",
      "format": "bool",
      "description": ""
     },
     "put_in_a_prompt": {
      "type": "boolean",
      "format": "bool",
      "description": ""
     },
     "let_leave_the_platform": {
      "type": "boolean",
      "format": "bool",
      "description": ""
     },
     "tier": {
      "type": "string",
      "enum": [
       "1",
       "2",
       "3",
       "not allowed",
       "unknown"
      ],
      "description": "the legality tier; unknown makes the source not ready (SR-0730)"
     },
     "may_reach_a_lead": {
      "type": "boolean",
      "format": "bool",
      "description": ""
     },
     "may_reach_outreach": {
      "type": "boolean",
      "format": "bool",
      "description": ""
     },
     "basis": {
      "type": "string",
      "format": "text",
      "description": "the clause, the determination and its date that set the tier (SR-0730)"
     },
     "consent_ground": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "terms_posture": {
      "type": "string",
      "format": "text",
      "description": "the posture of the source's terms towards this use"
     },
     "retention": {
      "type": "string",
      "format": "duration",
      "description": ""
     },
     "erasure_path": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "personal_data": {
      "type": "string",
      "format": "text",
      "description": "the category of personal data the source holds"
     }
    },
    "required": [
     "keep",
     "show_to_a_tenant",
     "quote",
     "publish_again",
     "train_a_model_on",
     "put_in_a_prompt",
     "let_leave_the_platform",
     "tier",
     "may_reach_a_lead",
     "may_reach_outreach"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "03 §2.2; 04 §2.1"
   },
   "BrandGradient": {
    "title": "BrandGradient",
    "description": "one gradient a site declares, with the colours read out of it",
    "type": "object",
    "properties": {
     "value": {
      "type": "string",
      "format": "text",
      "description": "the gradient as declared, with the site's variables resolved"
     },
     "colours": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "text"
      },
      "description": ""
     },
     "uses": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "basis": {
      "$ref": "#/components/schemas/Basis",
      "description": ""
     },
     "from": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "hash"
      },
      "description": ""
     }
    },
    "required": [
     "value",
     "colours",
     "uses",
     "basis",
     "from"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "DESIGN/the-brand-graph-from-a-domain §5"
   },
   "ModelCall": {
    "title": "ModelCall",
    "description": "one call of a model, metered against the unit it served",
    "type": "object",
    "properties": {
     "model": {
      "type": "string",
      "description": "",
      "x-register": "Model"
     },
     "unit": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "tokens": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "size": {
      "type": "integer",
      "format": "bytes",
      "description": ""
     },
     "cost": {
      "$ref": "#/components/schemas/Cost",
      "description": ""
     },
     "outcome": {
      "type": "string",
      "enum": [
       "answered",
       "refused",
       "failed"
      ],
      "description": ""
     },
     "run": {
      "type": "string",
      "format": "id",
      "description": ""
     }
    },
    "required": [
     "model",
     "unit",
     "cost",
     "outcome",
     "run"
    ],
    "additionalProperties": false,
    "x-kind": "fact",
    "x-scope": "follows",
    "x-store": "postgres+lake",
    "x-key": "the model, the unit and the moment",
    "x-places": [],
    "x-from": "14 §2.1"
   },
   "ArmPlayInput": {
    "title": "ArmPlayInput",
    "description": "the play, inside a strategy, for a brand, and the share it is armed on with its holdout: a share under one makes the play an experiment",
    "type": "object",
    "properties": {
     "play": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "strategy": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "brand": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "arm": {
      "type": "boolean",
      "format": "bool",
      "description": ""
     },
     "share": {
      "type": "number",
      "format": "share",
      "description": "the share of the admitted members the arming admits; absent keeps the play's own"
     },
     "holdout": {
      "type": "number",
      "format": "share",
      "description": "the share left alone at random, read as the effect's comparison; absent keeps the play's own"
     }
    },
    "required": [
     "play",
     "strategy",
     "brand",
     "arm"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "13 §3; MODELS/the-strategy-system-as-a-formal-model §10.3"
   },
   "BrandExports": {
    "title": "BrandExports",
    "description": "the design system in the shapes the tools outside the platform read, each generated from the typed values",
    "type": "object",
    "properties": {
     "css": {
      "type": "string",
      "format": "text",
      "description": "custom properties, light on :root and dark under [data-theme=dark]"
     },
     "tailwind": {
      "description": "a theme.extend block"
     },
     "figma": {
      "description": "variable collections with light and dark modes"
     },
     "dtcg": {
      "description": "a design tokens file, each token with its basis and its artefacts as extensions"
     },
     "brief": {
      "type": "string",
      "format": "text",
      "description": "the constraint block a generation prompt or a document build reads: the values, the traits and the do and do-not lines, in plain sentences"
     }
    },
    "required": [
     "css",
     "tailwind",
     "figma",
     "dtcg",
     "brief"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "DESIGN/the-brand-graph-from-a-domain §5"
   },
   "Game": {
    "title": "Game",
    "description": "the game a strategy plays in its market, by value chain: the way of going to market, the twin's template, the roles that play, the play families that read alpha there, what is counted, and the dynamics it assumes",
    "type": "object",
    "properties": {
     "name": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "way": {
      "type": "string",
      "description": "",
      "x-register": "WayOfGoingToMarket"
     },
     "template": {
      "type": "string",
      "description": "",
      "x-register": "SystemsModelTemplate"
     },
     "roles": {
      "type": "array",
      "items": {
       "type": "string",
       "description": "the name of a row of RoleAroundADecision",
       "x-register": "RoleAroundADecision"
      },
      "description": "the roles that play"
     },
     "play_families": {
      "type": "array",
      "items": {
       "type": "string",
       "enum": [
        "demand engineering",
        "demand capture",
        "channel and partnership",
        "pricing",
        "positioning and proof",
        "offering design",
        "market entry and beachhead",
        "growth in a market",
        "retention and existing customers",
        "competitive",
        "regulatory and payer",
        "education and enablement",
        "sales motion and operations",
        "hedge and portfolio",
        "ecosystem and platform"
       ]
      },
      "description": "the families that read alpha in this game"
     },
     "what_is_counted": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "dynamics": {
      "type": "string",
      "format": "text",
      "description": "the loops, delays and limits the game assumes, in the living market's words"
     },
     "crowd": {
      "type": "string",
      "enum": [
       "named players",
       "a mean field"
      ],
      "description": "whether the parties are named players or a crowd"
     }
    },
    "required": [
     "name",
     "way",
     "template",
     "roles",
     "play_families",
     "what_is_counted",
     "dynamics",
     "crowd"
    ],
    "additionalProperties": false,
    "x-kind": "row",
    "x-scope": "platform",
    "x-store": "postgres",
    "x-key": "its name",
    "x-places": [],
    "x-from": "MODELS/the-strategy-system-as-a-formal-model §11; 26 §2.9"
   },
   "WeighInput": {
    "title": "WeighInput",
    "description": "a claim and the evidence to attach",
    "type": "object",
    "properties": {
     "hypothesis": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "for": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/EvidenceRef"
      },
      "description": ""
     },
     "against": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/EvidenceRef"
      },
      "description": ""
     }
    },
    "required": [
     "hypothesis"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "01 §3"
   },
   "Migration": {
    "title": "Migration",
    "description": "a change to a schema, forward only, re-declaring the list of applied migrations",
    "type": "object",
    "properties": {
     "number": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "applies_to": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "declared_list": {
      "type": "array",
      "items": {
       "type": "integer",
       "format": "count"
      },
      "description": ""
     },
     "allows_rollback": {
      "type": "boolean",
      "format": "bool",
      "description": ""
     }
    },
    "required": [
     "number",
     "applies_to",
     "declared_list",
     "allows_rollback"
    ],
    "additionalProperties": false,
    "x-kind": "definition",
    "x-scope": "platform",
    "x-store": "postgres",
    "x-key": "its number",
    "x-places": [],
    "x-from": "20 §2.1"
   },
   "ClassReading": {
    "title": "ClassReading",
    "description": "a play's class read on a beat from the rivals' coverage, the effect against the tide and the twin's sensitivity; moved when the reading moves, with its event",
    "type": "object",
    "properties": {
     "play": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "play_version": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "class": {
      "type": "string",
      "description": "",
      "x-register": "PlayClass"
     },
     "coverage": {
      "type": "integer",
      "format": "count",
      "description": "the rivals running the kind of play in the market"
     },
     "sensitivity": {
      "type": "number",
      "format": "share",
      "description": "the twin's trajectory's change per unit of the intervention; never measured before a simulation"
     },
     "effect_against_tide": {
      "$ref": "#/components/schemas/Interval",
      "description": ""
     },
     "moved": {
      "type": "boolean",
      "format": "bool",
      "description": "true when the class differs from the reading before"
     },
     "hypothesis": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "beat": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "read_at": {
      "type": "string",
      "format": "time",
      "description": ""
     }
    },
    "required": [
     "play",
     "play_version",
     "class",
     "coverage",
     "moved",
     "hypothesis",
     "beat",
     "read_at"
    ],
    "additionalProperties": false,
    "x-kind": "fact",
    "x-scope": "strategy",
    "x-store": "postgres+lake",
    "x-key": "the play, its version and the beat",
    "x-places": [],
    "x-from": "MODELS/the-strategy-system-as-a-formal-model §7"
   },
   "SpeedToLeadInput": {
    "title": "SpeedToLeadInput",
    "description": "a brand and a window",
    "type": "object",
    "properties": {
     "brand": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "window": {
      "$ref": "#/components/schemas/Window",
      "description": ""
     }
    },
    "required": [
     "brand",
     "window"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "08 §3"
   },
   "TrajectoryInput": {
    "title": "TrajectoryInput",
    "description": "a strategy's or one move's trajectory over a window",
    "type": "object",
    "properties": {
     "strategy": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "move": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "window": {
      "$ref": "#/components/schemas/Window",
      "description": ""
     }
    },
    "required": [],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "13 §3"
   },
   "RuntimeContext": {
    "title": "RuntimeContext",
    "description": "one of the extension's six runtime contexts: what it may do and what it never does",
    "type": "object",
    "properties": {
     "name": {
      "type": "string",
      "enum": [
       "the service worker",
       "the side panel",
       "the content script",
       "the page hook",
       "the offscreen document",
       "the options page"
      ],
      "description": ""
     },
     "may": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "text"
      },
      "description": ""
     },
     "never": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "text"
      },
      "description": ""
     }
    },
    "required": [
     "name",
     "may",
     "never"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "24 §2.1"
   },
   "ForecastScore": {
    "title": "ForecastScore",
    "description": "a forecast scored against its effect by the proper rule fixed on the row, read as of what was knowable when the forecast was written",
    "type": "object",
    "properties": {
     "forecast": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "effect": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "rule": {
      "type": "string",
      "enum": [
       "CRPS",
       "Brier",
       "log"
      ],
      "description": ""
     },
     "score": {
      "type": "number",
      "format": "number",
      "description": ""
     },
     "play": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "tactic": {
      "type": "string",
      "description": "",
      "x-register": "Tactic"
     },
     "framing": {
      "type": "string",
      "description": "",
      "x-register": "KindOfFraming"
     },
     "actor": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "content": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "read_at": {
      "type": "string",
      "format": "time",
      "description": ""
     }
    },
    "required": [
     "forecast",
     "effect",
     "rule",
     "score",
     "play",
     "tactic",
     "read_at"
    ],
    "additionalProperties": false,
    "x-kind": "fact",
    "x-scope": "strategy",
    "x-store": "postgres+lake",
    "x-key": "the forecast and the effect",
    "x-places": [],
    "x-from": "MODELS/the-strategy-system-as-a-formal-model §6.1"
   },
   "AudienceMapCell": {
    "title": "AudienceMapCell",
    "description": "the shared subjects, the share, the lift, the window and the negative control, with the size as bounds",
    "type": "object",
    "properties": {
     "first": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "second": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "window": {
      "$ref": "#/components/schemas/Window",
      "description": ""
     },
     "shared": {
      "type": "integer",
      "format": "count",
      "description": "null when never read"
     },
     "share": {
      "type": "number",
      "format": "share",
      "description": ""
     },
     "lift": {
      "type": "number",
      "format": "share",
      "description": ""
     },
     "control": {
      "type": "number",
      "format": "share",
      "description": "must read near one"
     },
     "lower": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "upper": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "mode": {
      "type": "string",
      "enum": [
       "present",
       "to be cultivated",
       "unknown"
      ],
      "description": "the demand mode read from the cell"
     }
    },
    "required": [
     "first",
     "second",
     "window"
    ],
    "additionalProperties": false,
    "x-kind": "view",
    "x-scope": "brand",
    "x-store": "derived",
    "x-key": "two facets or a facet and a community, and the window",
    "x-places": [],
    "x-from": "12 §2.1"
   },
   "BackfillInput": {
    "title": "BackfillInput",
    "description": "a source, an access method, a window and a plane; the platform fills the reading, so the same request over a catalogue read again is new work",
    "type": "object",
    "properties": {
     "source": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "access_method": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "window": {
      "$ref": "#/components/schemas/Window",
      "description": ""
     },
     "plane": {
      "$ref": "#/components/schemas/Plane",
      "description": ""
     },
     "reading": {
      "type": "string",
      "format": "text",
      "description": "the hash of the procedure reading the backfill runs over, filled by the platform from the newest reading of the source through the way's connector; a caller leaves it empty"
     }
    },
    "required": [
     "source",
     "access_method",
     "window",
     "plane"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "18 §3"
   },
   "EntityBase": {
    "title": "EntityBase",
    "description": "what every entity carries beyond the unit",
    "type": "object",
    "properties": {
     "state": {
      "type": "string",
      "enum": [
       "unproved",
       "resolved"
      ],
      "description": ""
     },
     "resolver_version": {
      "type": "string",
      "format": "text",
      "description": "absent for a kind that is the same by construction"
     },
     "evidence": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "id"
      },
      "description": "the identity decisions it was resolved under"
     }
    },
    "required": [
     "state"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "carried by every entity",
    "x-places": [],
    "x-from": "01 §2.1; 05 §2.1"
   },
   "DecideMoveInput": {
    "title": "DecideMoveInput",
    "description": "accept, decline or stop a move",
    "type": "object",
    "properties": {
     "move": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "decision": {
      "type": "string",
      "enum": [
       "accept",
       "decline",
       "stop"
      ],
      "description": ""
     },
     "reason": {
      "type": "string",
      "format": "text",
      "description": ""
     }
    },
    "required": [
     "move",
     "decision"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "13 §3"
   },
   "SourceRef": {
    "title": "SourceRef",
    "description": "the source a fact came from, the way it was reached, and how it was fetched",
    "type": "object",
    "properties": {
     "source": {
      "type": "string",
      "description": "",
      "x-register": "Source"
     },
     "way": {
      "type": "string",
      "description": "",
      "x-register": "AccessMethod"
     },
     "job": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "hand_over": {
      "type": "string",
      "format": "id",
      "description": ""
     }
    },
    "required": [
     "source",
     "way"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "04 §2.1"
   },
   "Shell": {
    "title": "Shell",
    "description": "the shell, drawn once: its slots, its parts, its three widths",
    "type": "object",
    "properties": {
     "kind": {
      "type": "string",
      "enum": [
       "web",
       "desktop"
      ],
      "description": ""
     },
     "slots": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "text"
      },
      "description": ""
     },
     "parts": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "text"
      },
      "description": ""
     },
     "widths": {
      "type": "array",
      "items": {
       "type": "integer",
       "format": "count"
      },
      "description": "1440, 900, 390"
     },
     "version": {
      "type": "integer",
      "format": "count",
      "description": ""
     }
    },
    "required": [
     "kind",
     "slots",
     "parts",
     "widths",
     "version"
    ],
    "additionalProperties": false,
    "x-kind": "row",
    "x-scope": "platform",
    "x-store": "postgres",
    "x-key": "web or desktop",
    "x-places": [],
    "x-from": "15 §2.1"
   },
   "AccessibilityAudit": {
    "title": "AccessibilityAudit",
    "description": "the audit of one rendering against the bar: the rules run, the violations by rule with the element, the state",
    "type": "object",
    "properties": {
     "rendering": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "standard": {
      "type": "string",
      "format": "text",
      "description": "WCAG 2.2 AA"
     },
     "rules_run": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "violations": {
      "type": "array",
      "items": {},
      "description": "rule, element, why"
     },
     "state": {
      "type": "string",
      "enum": [
       "passed",
       "failed"
      ],
      "description": ""
     }
    },
    "required": [
     "rendering",
     "standard",
     "rules_run",
     "violations",
     "state"
    ],
    "additionalProperties": false,
    "x-kind": "fact",
    "x-scope": "platform",
    "x-store": "postgres",
    "x-key": "the rendering",
    "x-places": [],
    "x-from": "15 §2.5"
   },
   "WorkflowStep": {
    "title": "WorkflowStep",
    "description": "one step: a tool to run, a wait, a branch on a predicate, or another workflow",
    "type": "object",
    "properties": {
     "kind": {
      "type": "string",
      "enum": [
       "tool",
       "wait",
       "branch",
       "workflow",
       "work"
      ],
      "description": "work is a kind of platform work the platform runs itself, such as the backup, named by its kind row"
     },
     "tool": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "input": {
      "description": "the serialisation of the tool's input type"
     },
     "work": {
      "type": "string",
      "description": "for a work step, the kind of platform work it runs; a kind with no runner in the release makes the workflow not ready",
      "x-register": "Kind"
     },
     "wait": {
      "type": "string",
      "format": "duration",
      "description": ""
     },
     "on_wait_passed": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "branch": {
      "type": "string",
      "format": "hash",
      "description": "a predicate"
     },
     "workflow": {
      "type": "string",
      "format": "id",
      "description": ""
     }
    },
    "required": [
     "kind"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "09 §2"
   },
   "Deepening": {
    "title": "Deepening",
    "description": "depth asked for one observation, with the reason it stopped",
    "type": "object",
    "properties": {
     "observation": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "depth_asked": {
      "type": "string",
      "enum": [
       "fetch",
       "embed",
       "both"
      ],
      "description": ""
     },
     "asked_by": {
      "type": "string",
      "format": "id",
      "description": "a definition, a match or a person"
     },
     "why_stopped": {
      "type": "string",
      "format": "text",
      "description": ""
     }
    },
    "required": [
     "observation",
     "depth_asked",
     "asked_by"
    ],
    "additionalProperties": false,
    "x-kind": "work",
    "x-scope": "follows",
    "x-store": "postgres",
    "x-key": "the observation",
    "x-places": [
     "shallow",
     "fetch asked",
     "fetched",
     "meaning asked",
     "meant",
     "not possible"
    ],
    "x-from": "04 §2.2"
   },
   "Action": {
    "title": "Action",
    "description": "one action of a move, run only through the permission check, with its inverse captured first",
    "type": "object",
    "properties": {
     "move": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "step": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "kind": {
      "type": "string",
      "description": "",
      "x-register": "KindOfAction"
     },
     "what": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "reach": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "arguments": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/ActionArgument"
      },
      "description": "each with where its value came from"
     },
     "identity": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "inverse": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "cost": {
      "$ref": "#/components/schemas/Cost",
      "description": ""
     },
     "allowed_by": {
      "$ref": "#/components/schemas/PermissionAnswer",
      "description": ""
     },
     "ran_at": {
      "type": "string",
      "format": "time",
      "description": ""
     },
     "undone_by": {
      "type": "string",
      "format": "id",
      "description": ""
     }
    },
    "required": [
     "move",
     "step",
     "kind",
     "what",
     "reach",
     "arguments",
     "identity",
     "inverse",
     "cost"
    ],
    "additionalProperties": false,
    "x-kind": "work",
    "x-scope": "strategy",
    "x-store": "postgres",
    "x-key": "the move and its step",
    "x-places": [
     "prepared",
     "allowed",
     "running",
     "done",
     "failed",
     "undone"
    ],
    "x-from": "13 §2.1"
   },
   "Collector": {
    "title": "Collector",
    "description": "the one OpenTelemetry collector: its receivers, its processors, and its exporters",
    "type": "object",
    "properties": {
     "receivers": {
      "type": "array",
      "items": {
       "type": "string",
       "enum": [
        "otlp-grpc",
        "otlp-http"
       ]
      },
      "description": ""
     },
     "processors": {
      "type": "array",
      "items": {
       "type": "string",
       "enum": [
        "redact-secrets",
        "attribute-allow-list",
        "batch",
        "memory-limit"
       ]
      },
      "description": "redaction runs first"
     },
     "exporters": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/SignalExport"
      },
      "description": ""
     },
     "listener": {
      "$ref": "#/components/schemas/Listener",
      "description": "on the private network only"
     },
     "buffer_limit_bytes": {
      "type": "integer",
      "format": "bytes",
      "description": "a role's local buffer when the collector is unreachable; past it, metrics are dropped and a request is never blocked"
     }
    },
    "required": [
     "receivers",
     "processors",
     "exporters",
     "listener",
     "buffer_limit_bytes"
    ],
    "additionalProperties": false,
    "x-kind": "definition",
    "x-scope": "platform",
    "x-store": "postgres",
    "x-key": "its name",
    "x-places": [],
    "x-from": "22 §2.3"
   },
   "Trail": {
    "title": "Trail",
    "description": "every access and every administrator's change, with the hash chain over it",
    "type": "object",
    "properties": {
     "owner": {
      "type": "string",
      "enum": [
       "a tenant",
       "the platform"
      ],
      "description": ""
     },
     "entries": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/Event"
      },
      "description": ""
     },
     "chain_hash": {
      "type": "string",
      "format": "hash",
      "description": ""
     },
     "proved_whole_at": {
      "type": "string",
      "format": "time",
      "description": ""
     }
    },
    "required": [
     "owner",
     "entries",
     "chain_hash"
    ],
    "additionalProperties": false,
    "x-kind": "view",
    "x-scope": "platform",
    "x-store": "derived",
    "x-key": "the tenant, or the platform",
    "x-places": [],
    "x-from": "19 §2.1"
   },
   "SourceTable": {
    "title": "SourceTable",
    "description": "one table of a read artefact: its count with its exactness, its population and the control that must come back right at the same hash",
    "type": "object",
    "properties": {
     "schema": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "table": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "kind": {
      "type": "string",
      "enum": [
       "table",
       "view",
       "file"
      ],
      "description": ""
     },
     "rows": {
      "type": "integer",
      "format": "count",
      "description": "absent when the count was not read in the bound"
     },
     "exactness": {
      "type": "string",
      "enum": [
       "exact",
       "estimated",
       "not read in the bound"
      ],
      "description": ""
     },
     "columns": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/SourceColumn"
      },
      "description": "absent when the reading did not list them"
     },
     "population": {
      "type": "string",
      "format": "text",
      "description": "what one row is"
     },
     "control": {
      "type": "string",
      "format": "text",
      "description": "the known count or row that must come back right at the same file hash: rows=<count>, bytes=<count>, or marker=<file>:<key> for a completion marker whose JSON names the count"
     },
     "read_at": {
      "type": "string",
      "format": "time",
      "description": ""
     },
     "files": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/LakeFile"
      },
      "description": "for a table that is a folder of files: each file with its hash, its bytes and its rows where read"
     },
     "definition": {
      "type": "string",
      "format": "text",
      "description": "for a view of a catalogue: its definition as the engine states it, which is the rule that made the derived table; the files the definition reads are the table's files, and the rule is recorded on the procedure at every reading"
     }
    },
    "required": [
     "schema",
     "table",
     "kind",
     "exactness",
     "population",
     "control",
     "read_at"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "18 §2.25"
   },
   "Highlight": {
    "title": "Highlight",
    "description": "the words of one observation that met a criterion",
    "type": "object",
    "properties": {
     "evidence": {
      "$ref": "#/components/schemas/EvidenceRef",
      "description": "the observation"
     },
     "from": {
      "type": "integer",
      "format": "count",
      "description": "the first character"
     },
     "to": {
      "type": "integer",
      "format": "count",
      "description": "the character after the last"
     },
     "words": {
      "type": "string",
      "format": "text",
      "description": "the span itself"
     }
    },
    "required": [
     "evidence",
     "from",
     "to",
     "words"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "08 §2; MODELS/the-fit-of-a-buyer-and-the-package-of-a-lead"
   },
   "SampleUnit": {
    "title": "SampleUnit",
    "description": "one unit of a preview's sample, with the words that met the predicate",
    "type": "object",
    "properties": {
     "unit": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "kind": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "name": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "stratum": {
      "type": "string",
      "format": "text",
      "description": "the values of the population's strata, joined"
     },
     "matched_by": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/Highlight"
      },
      "description": "the words of the unit that met each text condition"
     }
    },
    "required": [
     "unit",
     "kind",
     "stratum",
     "matched_by"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "06 §2.4"
   },
   "ParticipantImpact": {
    "title": "ParticipantImpact",
    "description": "the nature of one participant's impact on another role of the chain",
    "type": "object",
    "properties": {
     "on": {
      "type": "string",
      "description": "",
      "x-register": "RoleAroundADecision"
     },
     "nature": {
      "type": "string",
      "enum": [
       "gates",
       "refers",
       "supplies",
       "competes",
       "informs",
       "pays",
       "regulates",
       "hosts",
       "delivers"
      ],
      "description": ""
     },
     "strength": {
      "$ref": "#/components/schemas/Summary",
      "description": "where read"
     },
     "note": {
      "type": "string",
      "format": "text",
      "description": ""
     }
    },
    "required": [
     "on",
     "nature"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "26 §2.1"
   },
   "SettingRow": {
    "title": "SettingRow",
    "description": "one setting",
    "type": "object",
    "properties": {
     "role": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "name": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "dimension": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "default": {
      "description": ""
     },
     "changed_where": {
      "type": "string",
      "enum": [
       "the console",
       "a release",
       "the environment at first"
      ],
      "description": ""
     },
     "parameter": {
      "type": "string",
      "description": "",
      "x-register": "Parameter"
     },
     "values_by_place": {
      "description": "the value of this setting in each place where it differs from the default, keyed by the place's name (a developer's machine, the cluster); absent when one value serves every place; the cluster's render takes the cluster's value, so a row whose default names this machine's folders, executables or addresses carries one"
     }
    },
    "required": [
     "role",
     "name",
     "dimension",
     "default",
     "changed_where"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "20 §2.1"
   },
   "DefinitionBase": {
    "title": "DefinitionBase",
    "description": "what every definition carries beyond the unit",
    "type": "object",
    "properties": {
     "version": {
      "type": "integer",
      "format": "count",
      "description": "changed only by a new version; an old version stays what it was"
     },
     "content_hash": {
      "type": "string",
      "format": "hash",
      "description": ""
     },
     "state": {
      "$ref": "#/components/schemas/Readiness",
      "description": "ready, or not ready with its reason"
     },
     "author": {
      "$ref": "#/components/schemas/Caller",
      "description": ""
     },
     "original": {
      "type": "string",
      "format": "id",
      "description": "for a copy of a platform original: the original"
     },
     "copied_from_version": {
      "type": "integer",
      "format": "count",
      "description": "and the version it was copied from"
     }
    },
    "required": [
     "version",
     "content_hash",
     "state",
     "author"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "carried by every definition",
    "x-places": [],
    "x-from": "01 §2.1"
   },
   "BrandTypeStep": {
    "title": "BrandTypeStep",
    "description": "one size of a brand's type scale",
    "type": "object",
    "properties": {
     "px": {
      "type": "number",
      "format": "number",
      "description": "resolved at the site's root size"
     },
     "line": {
      "type": "number",
      "format": "number",
      "description": "the line height declared beside it, in px"
     },
     "weight": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "uses": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "basis": {
      "$ref": "#/components/schemas/Basis",
      "description": ""
     },
     "from": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "hash"
      },
      "description": ""
     }
    },
    "required": [
     "px",
     "uses",
     "basis",
     "from"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "DESIGN/the-brand-graph-from-a-domain §5"
   },
   "KeepLadderInput": {
    "title": "KeepLadderInput",
    "description": "a ladder to keep: its ordered rungs, each a predicate over the population that is kept by its hash in the same call, and the rung that qualifies",
    "type": "object",
    "properties": {
     "ladder": {
      "$ref": "#/components/schemas/Ladder",
      "description": "the rungs carry their predicates by hash; a rung whose predicate is given in full under `predicates` is kept first"
     },
     "predicates": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/Predicate"
      },
      "description": "the rungs' predicates in full, kept by their hashes before the ladder"
     }
    },
    "required": [
     "ladder"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "06 §3"
   },
   "Nothing": {
    "title": "Nothing",
    "description": "an input with no fields",
    "type": "object",
    "properties": {},
    "required": [],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "10 §2"
   },
   "BrandTrait": {
    "title": "BrandTrait",
    "description": "one motif of the brand, read from the measured values by a named rule",
    "type": "object",
    "properties": {
     "name": {
      "type": "string",
      "format": "text",
      "description": "palette, corners, depth, type, grid, buttons, cards, fields, badges, iconography, imagery or composition"
     },
     "value": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "evidence": {
      "type": "string",
      "format": "text",
      "description": "the measured values the rule read"
     },
     "basis": {
      "$ref": "#/components/schemas/Basis",
      "description": ""
     },
     "from": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "hash"
      },
      "description": ""
     }
    },
    "required": [
     "name",
     "value",
     "evidence",
     "basis",
     "from"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "DESIGN/the-brand-graph-from-a-domain §5"
   },
   "ChainStock": {
    "title": "ChainStock",
    "description": "one stock of a chain, with its side, its unit, its reader and a count with its basis",
    "type": "object",
    "properties": {
     "name": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "side": {
      "type": "string",
      "enum": [
       "demand",
       "supply",
       "intermediary",
       "influence",
       "rules"
      ],
      "description": ""
     },
     "unit": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "reader": {
      "type": "string",
      "format": "text",
      "description": "a stock with no reader is a leak"
     },
     "count": {
      "$ref": "#/components/schemas/Summary",
      "description": ""
     },
     "roles": {
      "type": "array",
      "items": {
       "type": "string",
       "description": "the name of a row of RoleAroundADecision",
       "x-register": "RoleAroundADecision"
      },
      "description": ""
     },
     "country": {
      "type": "string",
      "format": "text",
      "description": "where the stock sits, for a chain read country by country"
     },
     "waiting": {
      "type": "string",
      "format": "duration",
      "description": "how long a unit may wait on the stock"
     },
     "admits": {
      "$ref": "#/components/schemas/Predicate",
      "description": "the rule for which units the stock admits"
     },
     "splittable": {
      "type": "boolean",
      "format": "bool",
      "description": "false where the stock is read but cannot be split apart, such as a payment processor"
     }
    },
    "required": [
     "name",
     "side",
     "unit",
     "reader",
     "count",
     "roles"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "MODELS/the-verticals §3"
   },
   "Gazetteer": {
    "title": "Gazetteer",
    "description": "the register of places: a place's names and their forms, its parent in the hierarchy a count rolls up through, its coordinates and its cell, its population and its source",
    "type": "object",
    "properties": {
     "place_id": {
      "type": "string",
      "format": "text",
      "description": "the registered place id"
     },
     "names": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "text"
      },
      "description": "the name and its forms"
     },
     "parent": {
      "type": "string",
      "format": "id",
      "description": "the place a count rolls up into"
     },
     "latitude": {
      "type": "number",
      "format": "number",
      "description": "degrees"
     },
     "longitude": {
      "type": "number",
      "format": "number",
      "description": "degrees"
     },
     "cell": {
      "type": "string",
      "format": "text",
      "description": "the cell of one standard hierarchy of cells at the resolution the parameter names; the sort key of every place-keyed table"
     },
     "population": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "source": {
      "type": "string",
      "description": "",
      "x-register": "Source"
     },
     "state": {
      "$ref": "#/components/schemas/Readiness",
      "description": "not ready without coordinates"
     },
     "area": {
      "type": "string",
      "format": "text",
      "description": "a geometry in one standard encoding, for a place that is an area"
     },
     "cells": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "text"
      },
      "description": "the cells the area covers, at the resolution parameter"
     },
     "member_of": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "id"
      },
      "description": "overlapping areas outside the one parent"
     }
    },
    "required": [
     "place_id",
     "names",
     "latitude",
     "longitude",
     "cell",
     "source",
     "state"
    ],
    "additionalProperties": false,
    "x-kind": "row",
    "x-scope": "platform",
    "x-store": "postgres",
    "x-key": "its place id",
    "x-places": [],
    "x-from": "12 §2.1; DOMAIN/02"
   },
   "FacetKind": {
    "title": "FacetKind",
    "description": "a kind of facet, a closed register a person extends by a row",
    "type": "object",
    "properties": {
     "name": {
      "type": "string",
      "format": "text",
      "description": "place, condition, profession, life stage, interest, brand affinity, institution, firmographic, role, language, a need state, a rung, a posture of trust, a role of influence, a routing role"
     },
     "aggregate_only_by_rule": {
      "type": "boolean",
      "format": "bool",
      "description": ""
     }
    },
    "required": [
     "name",
     "aggregate_only_by_rule"
    ],
    "additionalProperties": false,
    "x-kind": "row",
    "x-scope": "platform",
    "x-store": "postgres",
    "x-key": "its name",
    "x-places": [],
    "x-from": "06 §2.1"
   },
   "KindOfFraming": {
    "title": "KindOfFraming",
    "description": "a way a sale is framed, a register a person extends by a row: mechanistic, emotional, motivational, social proof, risk and loss, time and urgency, status, curiosity, authority, belonging, reciprocity, scarcity, simplicity, craft, and more",
    "type": "object",
    "properties": {
     "name": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "order": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "appeals_to": {
      "type": "string",
      "format": "text",
      "description": "what in the buyer it speaks to"
     },
     "needs": {
      "type": "string",
      "format": "text",
      "description": "the evidence from the buyer it needs before it is chosen"
     }
    },
    "required": [
     "name",
     "order",
     "appeals_to",
     "needs"
    ],
    "additionalProperties": false,
    "x-kind": "row",
    "x-scope": "platform",
    "x-store": "postgres",
    "x-key": "its name",
    "x-places": [],
    "x-from": "13 §2.4"
   },
   "MonitorPass": {
    "title": "MonitorPass",
    "description": "one pass of the beat that runs the armed monitors: every armed version read, the units of its place's population evaluated since the monitor's last answer, a catch written for each unit admitted at an observation not caught before, a signal ranked from each catch, and the monitor's last answer kept",
    "type": "object",
    "properties": {
     "monitors": {
      "type": "integer",
      "format": "count",
      "description": "the armed versions run"
     },
     "units_read": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "catches": {
      "type": "integer",
      "format": "count",
      "description": "new catches"
     },
     "signals": {
      "type": "integer",
      "format": "count",
      "description": "new signals"
     },
     "not_evaluable": {
      "type": "integer",
      "format": "count",
      "description": "readings no condition could judge"
     },
     "deferred": {
      "type": "integer",
      "format": "count",
      "description": "left for the next tick by the beat's budget"
     },
     "tenants_served": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "at": {
      "type": "string",
      "format": "time",
      "description": ""
     }
    },
    "required": [
     "monitors",
     "units_read",
     "catches",
     "signals",
     "not_evaluable",
     "deferred",
     "tenants_served",
     "at"
    ],
    "additionalProperties": false,
    "x-kind": "work",
    "x-scope": "platform",
    "x-store": "postgres",
    "x-key": "the beat's tick",
    "x-places": [
     "asked",
     "done"
    ],
    "x-from": "06 §2.2; 06 §5"
   },
   "DenyHost": {
    "title": "DenyHost",
    "description": "a host whose addresses a capture turns away, the one list that does: a tracker, an advertising pixel or a malicious host, named by a person, never a guess; every other address a walk discovers is queued as a capture of its own, because nothing a capture reaches is out of scope",
    "type": "object",
    "properties": {
     "name": {
      "type": "string",
      "format": "text",
      "description": "the host, and every host under it"
     },
     "why": {
      "type": "string",
      "enum": [
       "a tracker",
       "an advertising pixel",
       "a malicious host"
      ],
      "description": ""
     },
     "named_by": {
      "type": "string",
      "format": "text",
      "description": "who named it and when"
     },
     "state": {
      "$ref": "#/components/schemas/Readiness",
      "description": ""
     }
    },
    "required": [
     "name",
     "why",
     "named_by",
     "state"
    ],
    "additionalProperties": false,
    "x-kind": "row",
    "x-scope": "platform",
    "x-store": "postgres",
    "x-key": "its host",
    "x-places": [],
    "x-from": "18 §2.18"
   },
   "PageField": {
    "title": "PageField",
    "description": "one form field a page showed, with what it held when the page was read: its label, its name, its kind, its value, and whether the person changed it; a password, a one-time code and a card's number never appear, by the platform's redaction rows",
    "type": "object",
    "properties": {
     "label": {
      "type": "string",
      "format": "text",
      "description": "the field's label, its placeholder or its name, as the page shows it"
     },
     "name": {
      "type": "string",
      "format": "text",
      "description": "the field's own name on the page"
     },
     "kind": {
      "type": "string",
      "format": "text",
      "description": "the input's type, a text area, a choice, or an editable region"
     },
     "value": {
      "type": "string",
      "format": "text",
      "description": "what the field held, cut to 4,000 characters"
     },
     "dirty": {
      "type": "boolean",
      "format": "bool",
      "description": "the person typed or chose it, and it differs from what the page loaded with"
     },
     "form": {
      "type": "string",
      "format": "text",
      "description": "the form it belongs to, by its name or the address it posts to"
     },
     "recipient": {
      "type": "boolean",
      "format": "bool",
      "description": "the field names who a message goes to"
     }
    },
    "required": [
     "label",
     "kind",
     "value",
     "dirty"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "24 §2.2"
   },
   "KindOfPlayObserved": {
    "title": "KindOfPlayObserved",
    "description": "a brand observed running a kind of play, with the evidence that showed it: the rivals' coverage of a kind of play is the count of rival brands with a standing observation of it; written by the brand graph's build from a domain (WORK-AHEAD row WA-514) or by a person who marks it",
    "type": "object",
    "properties": {
     "brand": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "kind_of_play": {
      "type": "string",
      "description": "",
      "x-register": "KindOfPlay"
     },
     "evidence": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/EvidenceRef"
      },
      "description": "what showed it: a page, a post, a filing"
     },
     "withdrawn_by": {
      "type": "string",
      "format": "id",
      "description": "a correction that ended the observation"
     }
    },
    "required": [
     "brand",
     "kind_of_play",
     "evidence"
    ],
    "additionalProperties": false,
    "x-kind": "fact",
    "x-scope": "brand",
    "x-store": "postgres",
    "x-key": "the brand, the kind of play and the evidence",
    "x-places": [],
    "x-from": "MODELS/the-strategy-system-as-a-formal-model §7; 12 §2.1"
   },
   "UsageStatement": {
    "title": "UsageStatement",
    "description": "a tenant's metered usage of a period by kind, priced, against the plan's included quantities",
    "type": "object",
    "properties": {
     "period": {
      "$ref": "#/components/schemas/Window",
      "description": ""
     },
     "lines": {
      "type": "array",
      "items": {},
      "description": "kind, quantity, included, over, price, amount"
     },
     "total": {
      "type": "number",
      "format": "money",
      "description": ""
     },
     "plan_kind": {
      "type": "string",
      "enum": [
       "trial",
       "paid",
       "internal"
      ],
      "description": ""
     }
    },
    "required": [
     "period",
     "lines",
     "total",
     "plan_kind"
    ],
    "additionalProperties": false,
    "x-kind": "view",
    "x-scope": "none",
    "x-store": "derived",
    "x-key": "",
    "x-places": [],
    "x-from": "19 §2.4"
   },
   "Binding": {
    "title": "Binding",
    "description": "a buyer profile bound to an offering or a segment",
    "type": "object",
    "properties": {
     "offering": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "segment": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "weight": {
      "type": "number",
      "format": "share",
      "description": ""
     },
     "mode": {
      "type": "string",
      "enum": [
       "scored",
       "required",
       "disqualifying"
      ],
      "description": ""
     },
     "condition": {
      "$ref": "#/components/schemas/Predicate",
      "description": "when the binding applies; absent means the whole kind"
     },
     "reason": {
      "type": "string",
      "format": "text",
      "description": "required when the mode is disqualifying"
     },
     "sequence": {
      "type": "integer",
      "format": "count",
      "description": "1 for the first purchase"
     }
    },
    "required": [
     "weight",
     "mode"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "12 §2.1"
   },
   "Brand": {
    "title": "Brand",
    "description": "a brand, shared; a tenant's own and a rival are one kind, and the marking is a fact",
    "type": "object",
    "properties": {
     "company": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "name": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "website": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "offerings": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "id"
      },
      "description": ""
     },
     "accounts": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "id"
      },
      "description": ""
     },
     "voices": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "id"
      },
      "description": ""
     },
     "places": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "id"
      },
      "description": ""
     },
     "markets": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "id"
      },
      "description": ""
     },
     "zone": {
      "type": "string",
      "format": "text",
      "description": "the time zone the brand works in"
     },
     "vertical": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "segment": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "template_installed": {
      "$ref": "#/components/schemas/InstalledTemplate",
      "description": ""
     },
     "position": {
      "$ref": "#/components/schemas/Claim",
      "description": "a claim, under test until settled"
     }
    },
    "required": [
     "company",
     "name",
     "website",
     "offerings",
     "accounts",
     "voices",
     "places",
     "markets"
    ],
    "additionalProperties": false,
    "x-kind": "entity",
    "x-scope": "shared",
    "x-store": "postgres",
    "x-key": "its owning company and its name",
    "x-places": [],
    "x-from": "12 §2.1"
   },
   "DesignSystem": {
    "title": "DesignSystem",
    "description": "the tokens, the two type systems, the three tonal levels, the closed glyph set, the motion rules, the component library",
    "type": "object",
    "properties": {
     "version": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "tokens": {
      "description": ""
     },
     "glyphs": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "text"
      },
      "description": "closed; no emoji"
     },
     "components": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "text"
      },
      "description": ""
     }
    },
    "required": [
     "version",
     "tokens",
     "glyphs",
     "components"
    ],
    "additionalProperties": false,
    "x-kind": "row",
    "x-scope": "platform",
    "x-store": "postgres",
    "x-key": "its version",
    "x-places": [],
    "x-from": "15 §2.1"
   },
   "SubjectResolution": {
    "title": "SubjectResolution",
    "description": "what a subject stands for when the predicate is armed: names, keys and meaning",
    "type": "object",
    "properties": {
     "subject": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "entity": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "names": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "text"
      },
      "description": ""
     },
     "keys": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/Identifier"
      },
      "description": ""
     },
     "vector": {
      "$ref": "#/components/schemas/Vector",
      "description": ""
     },
     "version": {
      "type": "integer",
      "format": "count",
      "description": ""
     }
    },
    "required": [
     "subject",
     "names",
     "keys",
     "version"
    ],
    "additionalProperties": false,
    "x-kind": "fact",
    "x-scope": "follows",
    "x-store": "postgres+lake",
    "x-key": "the subject a leaf names, and its version",
    "x-places": [],
    "x-from": "06 §2.1"
   },
   "Grounding": {
    "title": "Grounding",
    "description": "the grounding of one subject, a captured page, an entity, a text or an address: its mentions resolved and its relations suggested as hypotheses a person settles; staged when the subject is given, waiting for a person once the hypotheses are made, committed when every one is settled; the same work on every face",
    "type": "object",
    "properties": {
     "subject": {
      "type": "string",
      "enum": [
       "a capture",
       "an entity",
       "a text",
       "an address"
      ],
      "description": "what was grounded"
     },
     "capture": {
      "type": "string",
      "format": "hash",
      "description": "the artefact's hash, for a capture or an address the record holds a capture of"
     },
     "text": {
      "type": "string",
      "format": "text",
      "description": "the text grounded, cut to 4,000 characters, for a text"
     },
     "address": {
      "type": "string",
      "format": "text",
      "description": "the page's address, the entity's own page, or empty for a text"
     },
     "platform": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "breadth": {
      "type": "string",
      "enum": [
       "exact",
       "similar",
       "related",
       "broad"
      ],
      "description": ""
     },
     "entity": {
      "type": "string",
      "format": "id",
      "description": "the entity the page became"
     },
     "hypotheses": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "id"
      },
      "description": ""
     },
     "mentions": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "id"
      },
      "description": ""
     },
     "channels": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "text"
      },
      "description": "the channels that ran: exact keys, names, meaning, thread, neighbourhood"
     },
     "candidates": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "made_at": {
      "type": "string",
      "format": "time",
      "description": ""
     },
     "settled_at": {
      "type": "string",
      "format": "time",
      "description": ""
     },
     "settled_by": {
      "$ref": "#/components/schemas/Caller",
      "description": ""
     }
    },
    "required": [
     "subject",
     "address",
     "platform",
     "breadth",
     "hypotheses",
     "mentions",
     "channels",
     "candidates",
     "made_at"
    ],
    "additionalProperties": false,
    "x-kind": "work",
    "x-scope": "follows",
    "x-store": "postgres",
    "x-key": "the subject and the breadth",
    "x-places": [
     "staged",
     "grounding",
     "waiting for a person",
     "committed",
     "discarded"
    ],
    "x-from": "24 §2.7; 24 §2.8"
   },
   "NeighboursAnswer": {
    "title": "NeighboursAnswer",
    "description": "the members one hop away, and whether the cap was reached",
    "type": "object",
    "properties": {
     "members": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/ConnectionMember"
      },
      "description": ""
     },
     "cap_reached": {
      "type": "boolean",
      "format": "bool",
      "description": ""
     },
     "cap": {
      "type": "integer",
      "format": "count",
      "description": ""
     }
    },
    "required": [
     "members",
     "cap_reached",
     "cap"
    ],
    "additionalProperties": false,
    "x-kind": "view",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "04 §3"
   },
   "PropensityAnswer": {
    "title": "PropensityAnswer",
    "description": "every eligible actor and every fitting content with its propensity, and the one the policy would choose on each face",
    "type": "object",
    "properties": {
     "rows": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/PropensityToMove"
      },
      "description": ""
     },
     "chosen_actor": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "chosen_content": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "not_eligible": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/Reason"
      },
      "description": "each candidate refused, with the reason"
     }
    },
    "required": [
     "rows",
     "not_eligible"
    ],
    "additionalProperties": false,
    "x-kind": "view",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "13 §3"
   },
   "FactsAnswer": {
    "title": "FactsAnswer",
    "description": "the facts, and the tier that gave them",
    "type": "object",
    "properties": {
     "claims": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/Claim"
      },
      "description": ""
     },
     "connections": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/Connection"
      },
      "description": ""
     },
     "readings": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/ReadingOfMeasure"
      },
      "description": ""
     },
     "events": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/MarketEvent"
      },
      "description": ""
     },
     "tier": {
      "type": "string",
      "format": "text",
      "description": ""
     }
    },
    "required": [
     "claims",
     "connections",
     "readings",
     "events",
     "tier"
    ],
    "additionalProperties": false,
    "x-kind": "view",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "04 §3"
   },
   "Plane": {
    "title": "Plane",
    "description": "shared, one tenant's, or the platform's own; part of the type of a fact",
    "type": "object",
    "properties": {
     "plane": {
      "type": "string",
      "enum": [
       "shared",
       "tenant",
       "platform"
      ],
      "description": ""
     },
     "tenant": {
      "type": "string",
      "format": "id",
      "description": "required for tenant"
     }
    },
    "required": [
     "plane"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "04 §2.1"
   },
   "UnitRef": {
    "title": "UnitRef",
    "description": "one unit by its id and kind",
    "type": "object",
    "properties": {
     "id": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "kind": {
      "type": "string",
      "description": "",
      "x-register": "Kind"
     }
    },
    "required": [
     "id",
     "kind"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "10 §2"
   },
   "CapabilitiesPage": {
    "title": "CapabilitiesPage",
    "description": "the page of capabilities",
    "type": "object",
    "properties": {
     "capabilities": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/Capability"
      },
      "description": ""
     },
     "as_of": {
      "$ref": "#/components/schemas/TwoDates",
      "description": ""
     }
    },
    "required": [
     "capabilities",
     "as_of"
    ],
    "additionalProperties": false,
    "x-kind": "view",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "11 §2; 14 §2"
   },
   "IdentityDecision": {
    "title": "IdentityDecision",
    "description": "same, new or review, with the chance and the evidence; a wrong one is never edited",
    "type": "object",
    "properties": {
     "mention": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "method": {
      "type": "string",
      "description": "",
      "x-register": "IdentityMethod"
     },
     "resolver_version": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "answer": {
      "type": "string",
      "enum": [
       "same",
       "new",
       "review"
      ],
      "description": ""
     },
     "entity": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "chance": {
      "type": "number",
      "format": "chance",
      "description": ""
     },
     "evidence": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/EvidenceRef"
      },
      "description": ""
     },
     "names_as_wrong": {
      "type": "string",
      "format": "id",
      "description": "a later decision names the one it corrects"
     }
    },
    "required": [
     "mention",
     "method",
     "resolver_version",
     "answer",
     "chance",
     "evidence"
    ],
    "additionalProperties": false,
    "x-kind": "fact",
    "x-scope": "follows",
    "x-store": "postgres+lake",
    "x-key": "the mention, the method and the resolver's version",
    "x-places": [],
    "x-from": "05 §2.1"
   },
   "ReadingOfferedInput": {
    "title": "ReadingOfferedInput",
    "description": "the buyer profile, the model and the drivers to ask",
    "type": "object",
    "properties": {
     "kind_of_buyer": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "business_model": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "asks": {
      "type": "array",
      "items": {
       "type": "string",
       "description": "the name of a row of KindOfMeasure",
       "x-register": "KindOfMeasure"
      },
      "description": ""
     }
    },
    "required": [
     "kind_of_buyer",
     "business_model",
     "asks"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "one ask to offer a reading",
    "x-places": [],
    "x-from": "25 §3"
   },
   "ErasePersonInput": {
    "title": "ErasePersonInput",
    "description": "the person to erase, and the second administrator's verification",
    "type": "object",
    "properties": {
     "person": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "verified_by": {
      "type": "string",
      "format": "id",
      "description": ""
     }
    },
    "required": [
     "person",
     "verified_by"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "03 §3"
   },
   "Tactic": {
    "title": "Tactic",
    "description": "the named, reusable method that a move applies; what works is learned tactic by tactic; the catalogue of the standard mechanisms people use to find product-market fit is rows of this register, each with the phase of the search it serves",
    "type": "object",
    "properties": {
     "name": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "forecasts_against_effects": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "id"
      },
      "description": ""
     },
     "phase": {
      "type": "string",
      "enum": [
       "find the market",
       "sculpt the offering",
       "test the fit",
       "build a beachhead",
       "engineer demand",
       "find demand",
       "grow in a market",
       "hedge"
      ],
      "description": "the phase of the search for product-market fit it serves; absent for a tactic of the plays alone"
     },
     "mechanism": {
      "type": "string",
      "format": "text",
      "description": "what the tactic does, in the field's terms"
     },
     "deciding_number": {
      "type": "string",
      "format": "text",
      "description": "the number that says it worked, and its bar"
     },
     "control": {
      "type": "string",
      "format": "text",
      "description": "the control read in the same run"
     },
     "known_failure": {
      "type": "string",
      "format": "text",
      "description": "the way it goes wrong, and the answer"
     },
     "applies_to_kinds_of_offering": {
      "type": "array",
      "items": {
       "type": "string",
       "description": "the name of a row of KindOfOffering",
       "x-register": "KindOfOffering"
      },
      "description": "empty means every kind"
     },
     "applies_to_verticals": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "text"
      },
      "description": "the vertical families it fits, by name; empty means every vertical"
     },
     "library_method": {
      "type": "string",
      "format": "text",
      "description": "the method of the methodology library it runs, by name, where one exists"
     }
    },
    "required": [
     "name",
     "forecasts_against_effects"
    ],
    "additionalProperties": false,
    "x-kind": "row",
    "x-scope": "platform",
    "x-store": "postgres",
    "x-key": "its name",
    "x-places": [],
    "x-from": "13 §2.1; 26 §2.1"
   },
   "PricingStudy": {
    "title": "PricingStudy",
    "description": "one run of the pricing methods over the frames of every buyer profile and the rivals' price claims of a window, with its candidates as a set of options, the decision and its reasons, and the margin check",
    "type": "object",
    "properties": {
     "ladder_version": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "methods": {
      "type": "array",
      "items": {
       "type": "string",
       "description": "the name of a row of Method",
       "x-register": "Method"
      },
      "description": "the methods of the library it ran, at their versions"
     },
     "kinds_of_buyer": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "id"
      },
      "description": ""
     },
     "window": {
      "$ref": "#/components/schemas/Window",
      "description": "the window of the rivals' claims read"
     },
     "anchors": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "id"
      },
      "description": "the rivals' price claims read"
     },
     "frames": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "id"
      },
      "description": "the frames of a sale read, by buyer profile"
     },
     "candidates": {
      "type": "string",
      "format": "id",
      "description": "the set of options document"
     },
     "decision": {
      "type": "string",
      "format": "text",
      "description": "the candidate decided, or none yet"
     },
     "reasons": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "text"
      },
      "description": ""
     },
     "margin": {
      "$ref": "#/components/schemas/MarginCheck",
      "description": ""
     },
     "bar_set_before_reading": {
      "type": "boolean",
      "format": "bool",
      "description": "false marks the study as not to be read"
     }
    },
    "required": [
     "ladder_version",
     "methods",
     "kinds_of_buyer",
     "window",
     "anchors",
     "frames",
     "candidates",
     "decision",
     "reasons",
     "margin",
     "bar_set_before_reading"
    ],
    "additionalProperties": false,
    "x-kind": "fact",
    "x-scope": "platform",
    "x-store": "postgres",
    "x-key": "the ladder version it set",
    "x-places": [],
    "x-from": "25 §2.1"
   },
   "KindOfConnection": {
    "title": "KindOfConnection",
    "description": "a kind of connection, as a row: its roles and what each role allows",
    "type": "object",
    "properties": {
     "name": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "roles": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/ConnectionRole"
      },
      "description": ""
     },
     "from_header": {
      "$ref": "#/components/schemas/HeaderRule",
      "description": "the rule that makes this kind of connection from the shared silver header, when the kind has one: each role bound to a header column, and when the rule applies; a kind with no rule makes no view (D-106)"
     },
     "adds": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/SourceField"
      },
      "description": "the fields the kind adds, typed as a source object declares its fields; each is a typed column of the kind's gold table"
     },
     "layer": {
      "type": "string",
      "enum": [
       "relational",
       "associative",
       "semantic",
       "none"
      ],
      "description": "the layer of likeness it feeds, if any"
     },
     "materialised_under_a_cut": {
      "type": "boolean",
      "format": "bool",
      "description": "for co-presence"
     },
     "symmetric": {
      "type": "boolean",
      "format": "bool",
      "description": ""
     },
     "transitive": {
      "type": "boolean",
      "format": "bool",
      "description": "a derivation may walk it to a depth only when true"
     },
     "inverse_of": {
      "type": "string",
      "description": "",
      "x-register": "KindOfConnection"
     }
    },
    "required": [
     "name",
     "roles",
     "layer",
     "materialised_under_a_cut"
    ],
    "additionalProperties": false,
    "x-kind": "row",
    "x-scope": "platform",
    "x-store": "postgres",
    "x-key": "its name",
    "x-places": [],
    "x-from": "DOMAIN/03 §4; 02 SR-0206"
   },
   "CorrectInput": {
    "title": "CorrectInput",
    "description": "the event to correct, and the correction",
    "type": "object",
    "properties": {
     "event": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "correction": {
      "$ref": "#/components/schemas/Event",
      "description": ""
     },
     "why": {
      "type": "string",
      "format": "text",
      "description": ""
     }
    },
    "required": [
     "event",
     "correction",
     "why"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "01 §3"
   },
   "PopulationAttributes": {
    "title": "PopulationAttributes",
    "description": "the attributes a population's units carry, read from the units themselves in one bounded scan, so a composer offers only what the record holds and a strata choice rests on counts",
    "type": "object",
    "properties": {
     "population": {
      "type": "string",
      "description": "",
      "x-register": "Population"
     },
     "units_read": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "units_in": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "partial": {
      "$ref": "#/components/schemas/PartialAnswer",
      "description": "when the budget ran out"
     },
     "attributes": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/AttributeCount"
      },
      "description": "most carried first"
     },
     "as_of": {
      "type": "string",
      "format": "time",
      "description": ""
     }
    },
    "required": [
     "population",
     "units_read",
     "units_in",
     "attributes",
     "as_of"
    ],
    "additionalProperties": false,
    "x-kind": "view",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "06 §2.1"
   },
   "NormalisationRule": {
    "title": "NormalisationRule",
    "description": "how one extracted field becomes a typed value: trimmed text, a number with its unit, money with its currency, a date with its basis, a regular-expression capture, a map of words to a registered kind, or an entity looked up by identifier",
    "type": "object",
    "properties": {
     "field": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "kind": {
      "type": "string",
      "enum": [
       "trim",
       "number with unit",
       "money with currency",
       "date with basis",
       "regex capture",
       "map to a kind",
       "lookup by identifier"
      ],
      "description": ""
     },
     "argument": {
      "type": "string",
      "format": "text",
      "description": "the unit, the currency, the basis, the pattern, the kind or the namespace"
     },
     "required": {
      "type": "boolean",
      "format": "bool",
      "description": "a row missing a required value is not ready with the reason"
     }
    },
    "required": [
     "field",
     "kind",
     "required"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "18 §2.23"
   },
   "FitScore": {
    "title": "FitScore",
    "description": "the fit of an entity to a kind of buyer as a weighted mean over its criteria with a Beta interval",
    "type": "object",
    "properties": {
     "mean": {
      "type": "number",
      "format": "number",
      "description": ""
     },
     "lower": {
      "type": "number",
      "format": "number",
      "description": ""
     },
     "upper": {
      "type": "number",
      "format": "number",
      "description": ""
     },
     "level": {
      "type": "number",
      "format": "number",
      "description": "the interval's level"
     },
     "criteria_evaluated": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "criteria_missing": {
      "type": "integer",
      "format": "count",
      "description": ""
     }
    },
    "required": [
     "mean",
     "lower",
     "upper",
     "level",
     "criteria_evaluated",
     "criteria_missing"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "08 §2; MODELS/the-fit-of-a-buyer-and-the-package-of-a-lead"
   },
   "CaptureRule": {
    "title": "CaptureRule",
    "description": "a person's rule for the capture extension on one platform: on their say-so, every page under a named way, or never",
    "type": "object",
    "properties": {
     "person": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "platform": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "mode": {
      "type": "string",
      "enum": [
       "on my say-so",
       "on my own submit",
       "ask me on this platform",
       "every page I open",
       "never"
      ],
      "description": ""
     },
     "default_scope": {
      "type": "string",
      "enum": [
       "this item",
       "this thread",
       "this channel as shown",
       "this page",
       "this meeting",
       "my outbound message"
      ],
      "description": ""
     },
     "redactions": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/RedactionRule"
      },
      "description": "the person's own"
     },
     "browser_grant": {
      "type": "string",
      "enum": [
       "given",
       "not given",
       "not needed"
      ],
      "description": ""
     },
     "way": {
      "type": "string",
      "description": "",
      "x-register": "AccessMethod"
     },
     "never_captured": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "text"
      },
      "description": "addresses or kinds"
     }
    },
    "required": [
     "person",
     "platform",
     "mode",
     "default_scope",
     "browser_grant",
     "never_captured"
    ],
    "additionalProperties": false,
    "x-kind": "definition",
    "x-scope": "tenant",
    "x-store": "postgres",
    "x-key": "the person and the platform",
    "x-places": [],
    "x-from": "18 §2.6"
   },
   "Reader": {
    "title": "Reader",
    "description": "the durable work that moves units out of a place",
    "type": "object",
    "properties": {
     "place": {
      "$ref": "#/components/schemas/Place",
      "description": ""
     },
     "key_rule": {
      "type": "string",
      "format": "text",
      "description": "its key comes from the unit"
     },
     "deadline": {
      "type": "string",
      "format": "duration",
      "description": ""
     },
     "capacity": {
      "type": "integer",
      "format": "count",
      "description": "it draws on a capacity"
     },
     "beat": {
      "type": "string",
      "description": "",
      "x-register": "Beat"
     }
    },
    "required": [
     "place",
     "key_rule",
     "deadline",
     "capacity"
    ],
    "additionalProperties": false,
    "x-kind": "row",
    "x-scope": "platform",
    "x-store": "postgres",
    "x-key": "the place it reads",
    "x-places": [],
    "x-from": "01 §2.5"
   },
   "GroundingPriors": {
    "title": "GroundingPriors",
    "description": "the priors, one row per kind, platform and breadth",
    "type": "object",
    "properties": {
     "rows": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/GroundingPrior"
      },
      "description": ""
     },
     "settled": {
      "type": "integer",
      "format": "count",
      "description": ""
     }
    },
    "required": [
     "rows",
     "settled"
    ],
    "additionalProperties": false,
    "x-kind": "view",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "24 §3"
   },
   "SourceCatalogueEntry": {
    "title": "SourceCatalogueEntry",
    "description": "one source in the catalogue with its connectors, kinds of reading and action, identity needed, rights tier, cost, state, coverage by cell and health",
    "type": "object",
    "properties": {
     "source": {
      "$ref": "#/components/schemas/Source",
      "description": ""
     },
     "connectors": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/Connector"
      },
      "description": ""
     },
     "readings": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/KindOfReading"
      },
      "description": ""
     },
     "actions": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/KindOfAction"
      },
      "description": ""
     },
     "installed": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/InstalledConnector"
      },
      "description": ""
     },
     "coverage": {
      "$ref": "#/components/schemas/Coverage",
      "description": ""
     },
     "health": {
      "$ref": "#/components/schemas/Readiness",
      "description": ""
     }
    },
    "required": [
     "source",
     "connectors",
     "readings",
     "actions",
     "installed",
     "coverage",
     "health"
    ],
    "additionalProperties": false,
    "x-kind": "view",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "18 §2.14"
   },
   "RememberInput": {
    "title": "RememberInput",
    "description": "a memory to keep, or one to forget",
    "type": "object",
    "properties": {
     "memory": {
      "$ref": "#/components/schemas/Memory",
      "description": ""
     },
     "forget": {
      "type": "string",
      "format": "id",
      "description": ""
     }
    },
    "required": [],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "09 §3"
   },
   "LandingOfObservations": {
    "title": "LandingOfObservations",
    "description": "one landing of observations into the tenant plane's gold from what the platform captured and holds: the pages captured whole, and the posts and comments of the corpus tables, each as one observation with its text and its hash, keyed by the row it was made from so a repeat writes nothing",
    "type": "object",
    "properties": {
     "source": {
      "type": "string",
      "description": "",
      "x-register": "Source"
     },
     "read_from": {
      "type": "string",
      "format": "text",
      "description": "the table or the store the observations were read from"
     },
     "rows_read": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "observations_written": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "already_held": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "why_stopped": {
      "type": "string",
      "format": "text",
      "description": ""
     }
    },
    "required": [
     "source",
     "read_from",
     "rows_read",
     "observations_written",
     "already_held"
    ],
    "additionalProperties": false,
    "x-kind": "work",
    "x-scope": "platform",
    "x-store": "postgres",
    "x-key": "the source and the hour",
    "x-places": [
     "landing",
     "landed",
     "not possible"
    ],
    "x-from": "04 §2.2; 06 §2.1; SR-0642"
   },
   "Workbench": {
    "title": "Workbench",
    "description": "a place to run queries, and later code, over what the caller may read, through the tools",
    "type": "object",
    "properties": {
     "strategy": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "allows_code": {
      "type": "boolean",
      "format": "bool",
      "description": ""
     },
     "time_budget": {
      "type": "string",
      "format": "duration",
      "description": ""
     }
    },
    "required": [
     "strategy",
     "allows_code",
     "time_budget"
    ],
    "additionalProperties": false,
    "x-kind": "definition",
    "x-scope": "strategy",
    "x-store": "postgres",
    "x-key": "the strategy",
    "x-places": [],
    "x-from": "09 §2; D-40"
   },
   "Comparison": {
    "title": "Comparison",
    "description": "two summaries over one structure, each with its coverage",
    "type": "object",
    "properties": {
     "question": {
      "type": "string",
      "description": "",
      "x-register": "ComparisonQuestion"
     },
     "first": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/Summary"
      },
      "description": ""
     },
     "second": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/Summary"
      },
      "description": ""
     }
    },
    "required": [
     "question",
     "first",
     "second"
    ],
    "additionalProperties": false,
    "x-kind": "view",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "12 §3"
   },
   "PlanChange": {
    "title": "PlanChange",
    "description": "a plan change as a proposal, with the provider's own page for payment",
    "type": "object",
    "properties": {
     "proposal": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "payment_page": {
      "type": "string",
      "format": "address",
      "description": ""
     }
    },
    "required": [
     "proposal"
    ],
    "additionalProperties": false,
    "x-kind": "view",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "19 §3"
   },
   "OldestInput": {
    "title": "OldestInput",
    "description": "a place",
    "type": "object",
    "properties": {
     "kind": {
      "type": "string",
      "description": "",
      "x-register": "Kind"
     },
     "place": {
      "type": "string",
      "format": "text",
      "description": ""
     }
    },
    "required": [
     "kind",
     "place"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "11 §3"
   },
   "Event": {
    "title": "Event",
    "description": "one change of state, written in the same transaction as the change",
    "type": "object",
    "properties": {
     "flow": {
      "type": "string",
      "description": "",
      "x-register": "Flow"
     },
     "unit": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "at": {
      "type": "string",
      "format": "time",
      "description": ""
     },
     "by": {
      "$ref": "#/components/schemas/Caller",
      "description": ""
     },
     "plane": {
      "type": "string",
      "enum": [
       "tenant plane",
       "work plane"
      ],
      "description": ""
     },
     "from_place": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "to_place": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "outcome": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "reason": {
      "type": "string",
      "format": "text",
      "description": "typed, from the flow's row"
     },
     "run": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "correction_of": {
      "type": "string",
      "format": "id",
      "description": "an event that corrects an earlier one names it"
     }
    },
    "required": [
     "flow",
     "unit",
     "at",
     "by",
     "plane",
     "outcome",
     "run"
    ],
    "additionalProperties": false,
    "x-kind": "fact",
    "x-scope": "follows",
    "x-store": "log",
    "x-key": "the flow, the unit and the moment",
    "x-places": [],
    "x-from": "01 §2.4"
   },
   "BoardReadInput": {
    "title": "BoardReadInput",
    "description": "a board to read, over a period",
    "type": "object",
    "properties": {
     "board": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "period": {
      "$ref": "#/components/schemas/Window",
      "description": ""
     }
    },
    "required": [
     "board"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "11 §3"
   },
   "NetworkPolicy": {
    "title": "NetworkPolicy",
    "description": "one allowed flow between two parties on the private network; everything not declared is denied",
    "type": "object",
    "properties": {
     "from_role": {
      "type": "string",
      "format": "text",
      "description": "a role, the ingress, the load balancer, or the internet"
     },
     "to_role": {
      "type": "string",
      "format": "text",
      "description": "a role, a store, the collector, or the internet"
     },
     "port": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "protocol": {
      "type": "string",
      "enum": [
       "tcp",
       "udp"
      ],
      "description": ""
     },
     "reason": {
      "type": "string",
      "format": "text",
      "description": "why the flow exists, in one sentence"
     }
    },
    "required": [
     "from_role",
     "to_role",
     "port",
     "protocol",
     "reason"
    ],
    "additionalProperties": false,
    "x-kind": "definition",
    "x-scope": "platform",
    "x-store": "postgres",
    "x-key": "the source and the destination",
    "x-places": [],
    "x-from": "21 §2.2"
   },
   "SemanticSearchAnswer": {
    "title": "SemanticSearchAnswer",
    "description": "the units above the floor, with the model, the floor, the measured recall of quantized embeddings, and the tier",
    "type": "object",
    "properties": {
     "units": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/ScoredUnit"
      },
      "description": ""
     },
     "model": {
      "type": "string",
      "description": "",
      "x-register": "Model"
     },
     "floor": {
      "type": "number",
      "format": "share",
      "description": ""
     },
     "narrow_tier_recall": {
      "type": "number",
      "format": "share",
      "description": ""
     },
     "tier": {
      "type": "string",
      "format": "text",
      "description": ""
     }
    },
    "required": [
     "units",
     "model",
     "floor",
     "narrow_tier_recall",
     "tier"
    ],
    "additionalProperties": false,
    "x-kind": "view",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "04 §3"
   },
   "Release": {
    "title": "Release",
    "description": "a versioned, tagged artefact reaching production, with its readings and its receipt",
    "type": "object",
    "properties": {
     "version": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "commit": {
      "type": "string",
      "format": "hash",
      "description": ""
     },
     "artefact": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "checks": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/ControlResult"
      },
      "description": ""
     },
     "readings": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/ChippedNumber"
      },
      "description": ""
     },
     "receipt": {
      "$ref": "#/components/schemas/Receipt",
      "description": ""
     },
     "cut_by": {
      "$ref": "#/components/schemas/Caller",
      "description": ""
     }
    },
    "required": [
     "version",
     "commit",
     "artefact",
     "checks",
     "readings",
     "cut_by"
    ],
    "additionalProperties": false,
    "x-kind": "work",
    "x-scope": "platform",
    "x-store": "postgres",
    "x-key": "the version",
    "x-places": [
     "tagged",
     "building",
     "built",
     "installing",
     "proved",
     "held",
     "rolled back"
    ],
    "x-from": "20 §2.1"
   },
   "Package": {
    "title": "Package",
    "description": "the lead as handed to a person: why it is a lead, who this buyer is, which offerings fit, the moves to choose from",
    "type": "object",
    "properties": {
     "lead": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "committee": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/ConnectionMember"
      },
      "description": "where known"
     },
     "why": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/EvidenceRef"
      },
      "description": "walked back to the sentence"
     },
     "kind_of_buyer": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "offerings_that_fit": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/OfferingFit"
      },
      "description": ""
     },
     "moves": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "id"
      },
      "description": "each with its forecast and interval"
     },
     "as_of": {
      "$ref": "#/components/schemas/TwoDates",
      "description": ""
     },
     "fit": {
      "$ref": "#/components/schemas/FitScore",
      "description": "the fit with its interval"
     },
     "criteria": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/CriterionVerdict"
      },
      "description": "each criterion with its highlights"
     },
     "explanation": {
      "$ref": "#/components/schemas/Explanation",
      "description": "from the highlighted evidence alone"
     },
     "temperature": {
      "type": "string",
      "enum": [
       "hot",
       "warm",
       "cold"
      ],
      "description": ""
     },
     "temperature_reason": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "observations": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/EvidenceRef"
      },
      "description": "every observation read"
     }
    },
    "required": [
     "lead",
     "committee",
     "why",
     "kind_of_buyer",
     "offerings_that_fit",
     "moves",
     "as_of"
    ],
    "additionalProperties": false,
    "x-kind": "view",
    "x-scope": "brand",
    "x-store": "derived",
    "x-key": "the lead and the receiver",
    "x-places": [],
    "x-from": "08 §2"
   },
   "DownloadControlInput": {
    "title": "DownloadControlInput",
    "description": "pause, resume or cancel one download or a set",
    "type": "object",
    "properties": {
     "job": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "set": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "control": {
      "type": "string",
      "enum": [
       "pause",
       "resume",
       "cancel"
      ],
      "description": ""
     }
    },
    "required": [
     "control"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "18 §3"
   },
   "DownloadInput": {
    "title": "DownloadInput",
    "description": "a file or a document to download into the workspace",
    "type": "object",
    "properties": {
     "pointer": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "into": {
      "type": "string",
      "format": "text",
      "description": ""
     }
    },
    "required": [
     "pointer"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "MODELS/the-outside-agent-path §7"
   },
   "SystemsModelTemplate": {
    "title": "SystemsModelTemplate",
    "description": "one systems model of a market, written as rows over the calculation shapes and the predicates: its stocks, its flows, its loops, its delays and its parameters, for a family of verticals and kinds of offering; versioned; carries a planted defect so its check can go red",
    "type": "object",
    "properties": {
     "name": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "version": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "what": {
      "type": "string",
      "format": "text",
      "description": "the market it models, in one sentence"
     },
     "vertical_family": {
      "type": "string",
      "format": "text",
      "description": "the family of verticals it fits, in the verticals model's words"
     },
     "kinds_of_offering": {
      "type": "array",
      "items": {
       "type": "string",
       "description": "the name of a row of KindOfOffering",
       "x-register": "KindOfOffering"
      },
      "description": ""
     },
     "stocks": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/ModelStock"
      },
      "description": ""
     },
     "flows": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/ModelFlow"
      },
      "description": ""
     },
     "loops": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/FeedbackLoop"
      },
      "description": ""
     },
     "shapes": {
      "type": "array",
      "items": {
       "type": "string",
       "description": "the name of a row of CalculationShape",
       "x-register": "CalculationShape"
      },
      "description": "the calculation shapes its money flows compose"
     },
     "parameters": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "text"
      },
      "description": "the parameter rows it reads, by name"
     },
     "outputs": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "text"
      },
      "description": "the stocks and gains a simulation reports"
     },
     "step": {
      "type": "string",
      "format": "duration",
      "description": ""
     },
     "horizon": {
      "type": "string",
      "format": "duration",
      "description": ""
     },
     "family": {
      "type": "string",
      "description": "the model family the template is written in",
      "x-register": "ModelFamily"
     },
     "way": {
      "type": "string",
      "description": "the way of going to market the template serves, where one fits",
      "x-register": "WayOfGoingToMarket"
     },
     "game": {
      "$ref": "#/components/schemas/GameOfRoles",
      "description": "the game of roles laid over the template, where the family carries one"
     },
     "planted_defect": {
      "type": "string",
      "format": "text",
      "description": "the fault the template carries in its check mode, so the check is proved able to go red"
     },
     "state": {
      "$ref": "#/components/schemas/Readiness",
      "description": ""
     },
     "content_hash": {
      "type": "string",
      "format": "hash",
      "description": ""
     }
    },
    "required": [
     "name",
     "version",
     "what",
     "vertical_family",
     "kinds_of_offering",
     "stocks",
     "flows",
     "loops",
     "shapes",
     "parameters",
     "outputs",
     "step",
     "horizon",
     "family",
     "planted_defect",
     "state",
     "content_hash"
    ],
    "additionalProperties": false,
    "x-kind": "row",
    "x-scope": "platform",
    "x-store": "postgres",
    "x-key": "its name and version",
    "x-places": [],
    "x-from": "26 §2.1"
   },
   "MarkRivalInput": {
    "title": "MarkRivalInput",
    "description": "a brand and the rival, with the evidence",
    "type": "object",
    "properties": {
     "brand": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "rival": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "evidence": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/EvidenceRef"
      },
      "description": ""
     }
    },
    "required": [
     "brand",
     "rival",
     "evidence"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "12 §3"
   },
   "SourceColumn": {
    "title": "SourceColumn",
    "description": "one column of a table of a read artefact, as the engine names it",
    "type": "object",
    "properties": {
     "name": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "type": {
      "type": "string",
      "format": "text",
      "description": "as the engine names it, such as VARCHAR or decimal128(2, 1)"
     },
     "nullable": {
      "type": "boolean",
      "format": "bool",
      "description": "absent when the reading did not record it"
     }
    },
    "required": [
     "name",
     "type"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "18 §2.25"
   },
   "Readiness": {
    "title": "Readiness",
    "description": "ready, or visibly not ready with the plain reason; there is no third state",
    "type": "object",
    "properties": {
     "ready": {
      "type": "boolean",
      "format": "bool",
      "description": ""
     },
     "reason": {
      "type": "string",
      "format": "text",
      "description": "required when not ready"
     },
     "since": {
      "type": "string",
      "format": "time",
      "description": ""
     },
     "what_would_make_it_ready": {
      "type": "string",
      "format": "text",
      "description": ""
     }
    },
    "required": [
     "ready",
     "since"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "01 §2.1; CLAUDE.md 00d"
   },
   "Column": {
    "title": "Column",
    "description": "one column of a served table",
    "type": "object",
    "properties": {
     "name": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "type": {
      "type": "string",
      "format": "text",
      "description": "a type of this register or a primitive"
     },
     "version": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "required": {
      "type": "boolean",
      "format": "bool",
      "description": "whether every row must carry it; for a served table's columns, absent"
     }
    },
    "required": [
     "name",
     "type",
     "version"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "06 §2.2"
   },
   "BuildState": {
    "title": "BuildState",
    "description": "every build stage, its acceptance procedure, and when it last showed red and then green",
    "type": "object",
    "properties": {
     "stages": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/StageState"
      },
      "description": ""
     }
    },
    "required": [
     "stages"
    ],
    "additionalProperties": false,
    "x-kind": "view",
    "x-scope": "platform",
    "x-store": "derived",
    "x-key": "the moment",
    "x-places": [],
    "x-from": "11 §2"
   },
   "RunningService": {
    "title": "RunningService",
    "description": "a service of the platform, with its life",
    "type": "object",
    "properties": {
     "role": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "version": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "host": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "ready_at": {
      "type": "string",
      "format": "time",
      "description": ""
     }
    },
    "required": [
     "role",
     "version",
     "host"
    ],
    "additionalProperties": false,
    "x-kind": "work",
    "x-scope": "platform",
    "x-store": "postgres",
    "x-key": "its role and version",
    "x-places": [
     "starting",
     "ready",
     "finishing its last work",
     "stopped",
     "failed"
    ],
    "x-from": "19 §2.1"
   },
   "KindOfUsage": {
    "title": "KindOfUsage",
    "description": "one kind of metered usage with its unit, its price basis and its provider: network egress, proxy bytes, model tokens, embedding calls, image generation, document storage, lakehouse bytes, browser minutes, search queries, connector calls, downloads",
    "type": "object",
    "properties": {
     "name": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "unit": {
      "type": "string",
      "format": "text",
      "description": "bytes, tokens, calls, minutes, queries, images"
     },
     "provider": {
      "type": "string",
      "format": "text",
      "description": "a provider row: DeepSeek, Modal, the proxy provider, the object store"
     },
     "price_basis": {
      "type": "string",
      "enum": [
       "list price",
       "the provider's bill",
       "estimated"
      ],
      "description": ""
     },
     "ceiling": {
      "$ref": "#/components/schemas/Cost",
      "description": "of the receive family"
     }
    },
    "required": [
     "name",
     "unit",
     "price_basis"
    ],
    "additionalProperties": false,
    "x-kind": "row",
    "x-scope": "platform",
    "x-store": "postgres",
    "x-key": "its name",
    "x-places": [],
    "x-from": "19 §2; D-72"
   },
   "InviteInput": {
    "title": "InviteInput",
    "description": "an address and a role to invite to the tenant, with where the role is held",
    "type": "object",
    "properties": {
     "address": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "role": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "held_on": {
      "$ref": "#/components/schemas/Scope",
      "description": "the tenant, brand or strategy the role is held on; absent means the whole tenant, which a guest may not hold (a guest holds roles only on the brands they were invited to)"
     }
    },
    "required": [
     "address",
     "role"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "03 §3"
   },
   "CommunityPosture": {
    "title": "CommunityPosture",
    "description": "open, conditional, closed or unknown, from the removal rates in the room",
    "type": "object",
    "properties": {
     "community": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "window": {
      "$ref": "#/components/schemas/Window",
      "description": ""
     },
     "posture": {
      "type": "string",
      "enum": [
       "open",
       "conditional",
       "closed",
       "unknown"
      ],
      "description": ""
     },
     "removed_with_link": {
      "type": "number",
      "format": "share",
      "description": ""
     },
     "removed_without_link": {
      "type": "number",
      "format": "share",
      "description": ""
     },
     "archetype": {
      "type": "string",
      "format": "text",
      "description": ""
     }
    },
    "required": [
     "community",
     "window",
     "posture"
    ],
    "additionalProperties": false,
    "x-kind": "fact",
    "x-scope": "shared",
    "x-store": "postgres+lake",
    "x-key": "the community and the window",
    "x-places": [],
    "x-from": "12 §2.1"
   },
   "ContentResponse": {
    "title": "ContentResponse",
    "description": "what get_content returned: each requested form, the article's fields where asked, the artefact's hash in bronze, the bytes by resource type, and the identity that served it",
    "type": "object",
    "properties": {
     "address": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "artefact_hash": {
      "type": "string",
      "format": "hash",
      "description": ""
     },
     "forms": {
      "type": "object",
      "additionalProperties": {
       "type": "string",
       "format": "text"
      },
      "description": "each requested form by name"
     },
     "article": {
      "$ref": "#/components/schemas/ExtractedArticle",
      "description": "when article was asked for"
     },
     "bytes_by_type": {
      "type": "object",
      "additionalProperties": {
       "type": "integer",
       "format": "count"
      },
      "description": ""
     },
     "blocked": {
      "type": "object",
      "additionalProperties": {
       "type": "integer",
       "format": "count"
      },
      "description": "what the filter refused, by type"
     },
     "identity": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "hops": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/HopStamp"
      },
      "description": ""
     }
    },
    "required": [
     "address",
     "artefact_hash",
     "forms",
     "bytes_by_type",
     "blocked",
     "hops"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "18 §2.18"
   },
   "UsageReconciliation": {
    "title": "UsageReconciliation",
    "description": "the metered total against the provider's bill for one day, with the count and sum of discrepancies; ready only under the tolerance",
    "type": "object",
    "properties": {
     "provider": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "day": {
      "type": "string",
      "format": "time",
      "description": ""
     },
     "metered": {
      "$ref": "#/components/schemas/Cost",
      "description": ""
     },
     "billed": {
      "$ref": "#/components/schemas/Cost",
      "description": ""
     },
     "discrepancies": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "discrepancy_sum": {
      "$ref": "#/components/schemas/Cost",
      "description": ""
     },
     "state": {
      "$ref": "#/components/schemas/Readiness",
      "description": ""
     }
    },
    "required": [
     "provider",
     "day",
     "metered",
     "billed",
     "discrepancies",
     "discrepancy_sum",
     "state"
    ],
    "additionalProperties": false,
    "x-kind": "fact",
    "x-scope": "follows",
    "x-store": "postgres",
    "x-key": "the provider and the day",
    "x-places": [],
    "x-from": "19 §2; D-72"
   },
   "Arming": {
    "title": "Arming",
    "description": "a definition pointing at a cell and raising its value",
    "type": "object",
    "properties": {
     "definition": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "definition_version": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "cell": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "value": {
      "type": "number",
      "format": "share",
      "description": ""
     },
     "disarmed_by": {
      "type": "string",
      "format": "id",
      "description": ""
     }
    },
    "required": [
     "definition",
     "definition_version",
     "cell",
     "value"
    ],
    "additionalProperties": false,
    "x-kind": "fact",
    "x-scope": "follows",
    "x-store": "postgres",
    "x-key": "the definition's version, with the cell's key",
    "x-places": [],
    "x-from": "07 §2.3"
   },
   "NotificationRule": {
    "title": "NotificationRule",
    "description": "which notices go to which channel for whom, with quiet hours and a digest cadence; never what happens, only who is told",
    "type": "object",
    "properties": {
     "name": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "notices": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "text"
      },
      "description": ""
     },
     "channel": {
      "type": "string",
      "description": "",
      "x-register": "NotificationChannel"
     },
     "for_person": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "quiet_hours": {
      "type": "string",
      "format": "text",
      "description": "a range in the person's zone"
     },
     "digest": {
      "type": "string",
      "enum": [
       "none",
       "hourly",
       "daily"
      ],
      "description": ""
     }
    },
    "required": [
     "name",
     "notices",
     "channel",
     "for_person",
     "digest"
    ],
    "additionalProperties": false,
    "x-kind": "definition",
    "x-scope": "tenant",
    "x-store": "postgres",
    "x-key": "the person and the name",
    "x-places": [],
    "x-from": "08 §2.1"
   },
   "Mapping": {
    "title": "Mapping",
    "description": "how a source object becomes a registered kind: an entity, a content item, a fact (a reading, a claim, a connection, a vector, a control result) or a definition; with its connections, identifiers, the two times and readings",
    "type": "object",
    "properties": {
     "source_object": {
      "type": "string",
      "description": "",
      "x-register": "SourceObject"
     },
     "becomes": {
      "type": "string",
      "description": "",
      "x-register": "Kind"
     },
     "connections": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/MappingConnection"
      },
      "description": ""
     },
     "identifiers": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/MappingIdentifier"
      },
      "description": ""
     },
     "header_prefix": {
      "type": "string",
      "format": "text",
      "description": "put before every identity value of the shared header (the author's account, the community, the parent, the thread's root): the platform's own prefix, so a header id compares with the own ids the identifiers' prefixes write (D-105, D-106)"
     },
     "times": {
      "type": "object",
      "additionalProperties": {
       "type": "string",
       "format": "text"
      },
      "description": "which fill the two times"
     },
     "readings": {
      "type": "array",
      "items": {
       "type": "string",
       "description": "the name of a row of KindOfMeasure",
       "x-register": "KindOfMeasure"
      },
      "description": ""
     },
     "required_fields": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "text"
      },
      "description": ""
     },
     "self_asserted": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "text"
      },
      "description": ""
     },
     "texts": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "text"
      },
      "description": "the fields kept as long texts of the entity the row becomes: each written as a claim stated by the source under the field's name, and given meaning under the model, so a bio, a description or a readme is searchable by meaning and grounds a later capture"
     },
     "kinds": {
      "type": "object",
      "additionalProperties": {
       "type": "string",
       "format": "text"
      },
      "description": "the source's own kind words, each to a registered kind of entity, when the object carries a kind field"
     },
     "kind": {
      "type": "string",
      "description": "the kind of entity every row of the object becomes, for an object whose rows carry no kind field (a table of accounts, of communities, of domains); kinds and kind are never both set",
      "x-register": "KindOfEntity"
     },
     "lists": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/ListMapping"
      },
      "description": "list fields whose items become entities of their own"
     }
    },
    "required": [
     "source_object",
     "becomes",
     "connections",
     "identifiers",
     "times",
     "readings",
     "required_fields",
     "self_asserted"
    ],
    "additionalProperties": false,
    "x-kind": "row",
    "x-scope": "platform",
    "x-store": "postgres",
    "x-key": "the source object",
    "x-places": [],
    "x-from": "07 §2.1"
   },
   "NotificationChannel": {
    "title": "NotificationChannel",
    "description": "where a notice goes: in the app, by email, in Slack, by webhook or in the browser extension, verified by a test notice before it carries one",
    "type": "object",
    "properties": {
     "kind": {
      "type": "string",
      "enum": [
       "in the app",
       "email",
       "Slack",
       "webhook",
       "the extension"
      ],
      "description": ""
     },
     "address": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "owner": {
      "type": "string",
      "format": "id",
      "description": "a person, or the tenant"
     },
     "notices": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "text"
      },
      "description": "the kinds of notice it carries"
     },
     "verified": {
      "type": "boolean",
      "format": "bool",
      "description": ""
     },
     "verified_at": {
      "type": "string",
      "format": "time",
      "description": ""
     }
    },
    "required": [
     "kind",
     "address",
     "owner",
     "notices",
     "verified"
    ],
    "additionalProperties": false,
    "x-kind": "row",
    "x-scope": "tenant",
    "x-store": "postgres",
    "x-key": "the owner and the address",
    "x-places": [],
    "x-from": "08 §2.1"
   },
   "DryRunAnswer": {
    "title": "DryRunAnswer",
    "description": "what it would do, and what the inverse would be",
    "type": "object",
    "properties": {
     "would_do": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "inverse": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "arguments": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/ActionArgument"
      },
      "description": ""
     },
     "allowed": {
      "$ref": "#/components/schemas/PermissionAnswer",
      "description": ""
     }
    },
    "required": [
     "would_do",
     "inverse",
     "arguments",
     "allowed"
    ],
    "additionalProperties": false,
    "x-kind": "view",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "13 §3"
   },
   "DownloadJob": {
    "title": "DownloadJob",
    "description": "one file of a download set through the download manager: resumable by byte range, pausable, bounded by residency, landing in bronze or the person's workspace",
    "type": "object",
    "properties": {
     "address": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "set": {
      "type": "string",
      "format": "id",
      "description": "the download set it belongs to"
     },
     "identity": {
      "type": "string",
      "format": "id",
      "description": "the page's session or a held identity"
     },
     "filter": {
      "$ref": "#/components/schemas/ResourceFilter",
      "description": ""
     },
     "bytes_expected": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "bytes_done": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "destination": {
      "type": "string",
      "enum": [
       "bronze",
       "the workspace"
      ],
      "description": ""
     },
     "artefact_hash": {
      "type": "string",
      "format": "hash",
      "description": ""
     },
     "failure": {
      "$ref": "#/components/schemas/FailureClass",
      "description": ""
     }
    },
    "required": [
     "address",
     "set",
     "filter",
     "bytes_done",
     "destination"
    ],
    "additionalProperties": false,
    "x-kind": "work",
    "x-scope": "follows",
    "x-store": "postgres",
    "x-key": "the address and the caller",
    "x-places": [
     "queued",
     "downloading",
     "paused",
     "done",
     "failed",
     "cancelled"
    ],
    "x-from": "18 §2.19"
   },
   "ConnectionState": {
    "title": "ConnectionState",
    "description": "the one WebSocket a session keeps to the platform, as the status bar shows it",
    "type": "object",
    "properties": {
     "state": {
      "type": "string",
      "enum": [
       "connecting",
       "open",
       "degraded",
       "closed"
      ],
      "description": ""
     },
     "opened_at": {
      "type": "string",
      "format": "time",
      "description": ""
     },
     "last_message_at": {
      "type": "string",
      "format": "time",
      "description": ""
     },
     "cursor": {
      "$ref": "#/components/schemas/EventCursor",
      "description": ""
     },
     "retries": {
      "type": "integer",
      "format": "count",
      "description": ""
     }
    },
    "required": [
     "state",
     "retries"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "15 §2.4; 21 §2.4"
   },
   "MeasurementOfBars": {
    "title": "MeasurementOfBars",
    "description": "one measurement of the bars of nearness under a model: the probes in use, the units read, the shares each breadth admits, and the bars written",
    "type": "object",
    "properties": {
     "model": {
      "type": "string",
      "description": "",
      "x-register": "Model"
     },
     "probes": {
      "type": "integer",
      "format": "count",
      "description": "the distinct concepts of the kept predicates' semantic leaves"
     },
     "units": {
      "type": "integer",
      "format": "count",
      "description": "the units with a vector under the model"
     },
     "shares": {
      "type": "object",
      "additionalProperties": {
       "type": "number",
       "format": "share"
      },
      "description": "the share of the population each breadth admits, from the parameter row"
     },
     "bars": {
      "$ref": "#/components/schemas/BarsOfNearness",
      "description": "absent while the measurement is not possible, with the reason"
     },
     "version_written": {
      "type": "integer",
      "format": "count",
      "description": "the version of the parameter row written"
     },
     "why_stopped": {
      "type": "string",
      "format": "text",
      "description": ""
     }
    },
    "required": [
     "model",
     "probes",
     "units",
     "shares"
    ],
    "additionalProperties": false,
    "x-kind": "work",
    "x-scope": "platform",
    "x-store": "postgres",
    "x-key": "the model and the day",
    "x-places": [
     "measuring",
     "measured",
     "not possible"
    ],
    "x-from": "06 §2.6; 14 §5"
   },
   "WorkflowAnswer": {
    "title": "WorkflowAnswer",
    "description": "the workflow, and for a preview what it would have done over history",
    "type": "object",
    "properties": {
     "workflow": {
      "$ref": "#/components/schemas/Workflow",
      "description": ""
     },
     "would_have_done": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/StepResult"
      },
      "description": ""
     }
    },
    "required": [
     "workflow"
    ],
    "additionalProperties": false,
    "x-kind": "view",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "09 §3"
   },
   "Intervention": {
    "title": "Intervention",
    "description": "what a play does to a systems model: a change to one flow's rate, delay, inflow, outflow or limit, from a stated step of the horizon",
    "type": "object",
    "properties": {
     "play": {
      "type": "string",
      "format": "id",
      "description": "the play that makes it, where one is armed"
     },
     "tactic": {
      "type": "string",
      "description": "the tactic it applies",
      "x-register": "Tactic"
     },
     "on_flow": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "changes": {
      "type": "string",
      "enum": [
       "rate",
       "delay",
       "inflow",
       "outflow",
       "limit",
       "payoff"
      ],
      "description": ""
     },
     "by": {
      "$ref": "#/components/schemas/DriverNode",
      "description": "the change, as a tree over drivers"
     },
     "since": {
      "type": "string",
      "format": "duration",
      "description": "when in the horizon it starts"
     },
     "kind_of_play": {
      "type": "string",
      "description": "the kind of play the intervention stands for",
      "x-register": "KindOfPlay"
     }
    },
    "required": [
     "on_flow",
     "changes",
     "by"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "26 §2.1"
   },
   "Ledger": {
    "title": "Ledger",
    "description": "every move, action, forecast, effect and impact in order, with the budget spent by kind",
    "type": "object",
    "properties": {
     "entries": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/UnitRef"
      },
      "description": "in order"
     },
     "spent": {
      "$ref": "#/components/schemas/Cost",
      "description": ""
     },
     "budget": {
      "$ref": "#/components/schemas/Budget",
      "description": ""
     }
    },
    "required": [
     "entries",
     "spent",
     "budget"
    ],
    "additionalProperties": false,
    "x-kind": "view",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "13 §3"
   },
   "SyncPreview": {
    "title": "SyncPreview",
    "description": "what a sync rule would read and push, before it is armed",
    "type": "object",
    "properties": {
     "would_read": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "would_push": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "id"
      },
      "description": ""
     },
     "conflicts": {
      "type": "integer",
      "format": "count",
      "description": ""
     }
    },
    "required": [
     "would_read",
     "would_push",
     "conflicts"
    ],
    "additionalProperties": false,
    "x-kind": "view",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "18 §2.8"
   },
   "Backup": {
    "title": "Backup",
    "description": "the daily verified backup of the database, with the lakehouse's catalogue and manifest beside it",
    "type": "object",
    "properties": {
     "day": {
      "type": "string",
      "format": "date",
      "description": ""
     },
     "copy": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "bytes": {
      "type": "integer",
      "format": "bytes",
      "description": ""
     },
     "tables": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "discrepancies": {
      "type": "integer",
      "format": "count",
      "description": "ready only at zero"
     },
     "rows": {
      "type": "integer",
      "format": "count",
      "description": "the rows the copy holds over its tables, as the verifier counted them"
     },
     "log_hash": {
      "type": "string",
      "format": "hash",
      "description": "the hash of the log inside the copy, as the verifier read it; the drill compares against it"
     },
     "lake_manifest": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/LakeFile"
      },
      "description": ""
     },
     "made_at": {
      "type": "string",
      "format": "time",
      "description": ""
     }
    },
    "required": [
     "day",
     "copy",
     "bytes",
     "tables",
     "discrepancies",
     "rows",
     "log_hash",
     "lake_manifest",
     "made_at"
    ],
    "additionalProperties": false,
    "x-kind": "work",
    "x-scope": "platform",
    "x-store": "postgres",
    "x-key": "the day",
    "x-places": [
     "making",
     "verifying",
     "verified",
     "not current",
     "failed"
    ],
    "x-from": "19 §2.1"
   },
   "Sensitivity": {
    "title": "Sensitivity",
    "description": "the change in the return for a one-step change of one stated driver",
    "type": "object",
    "properties": {
     "driver": {
      "type": "string",
      "description": "",
      "x-register": "KindOfMeasure"
     },
     "step": {
      "description": "the step, in the driver's dimension"
     },
     "change_in_return": {
      "$ref": "#/components/schemas/Interval",
      "description": ""
     }
    },
    "required": [
     "driver",
     "step",
     "change_in_return"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "one stated driver's effect on the return",
    "x-places": [],
    "x-from": "25 §2.1"
   },
   "ToolMeta": {
    "title": "ToolMeta",
    "description": "what a listed MCP tool carries beside its schema: its row as the register holds it and the release's stamp",
    "type": "object",
    "properties": {
     "tool": {
      "$ref": "#/components/schemas/Tool",
      "description": "the row"
     },
     "register_hash": {
      "type": "string",
      "format": "hash",
      "description": "the register the row is from"
     },
     "built_in_this_release": {
      "type": "boolean",
      "format": "bool",
      "description": ""
     }
    },
    "required": [
     "tool",
     "register_hash",
     "built_in_this_release"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "14 §2.4"
   },
   "Shortfall": {
    "title": "Shortfall",
    "description": "one pass of the beat that fills the shortfall: every wanted cell read, a deepening asked for each entity its predicate names on the cell's source, the cell planned, covered once every deepening is fetched, or not satisfiable with the reason when the source needs a held identity the tenant does not hold",
    "type": "object",
    "properties": {
     "cells_read": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "deepenings_asked": {
      "type": "integer",
      "format": "count",
      "description": "new work items; a deepening already asked or fetched counts as held"
     },
     "cells_planned": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "cells_covered": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "cells_not_satisfiable": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "at": {
      "type": "string",
      "format": "time",
      "description": ""
     }
    },
    "required": [
     "cells_read",
     "deepenings_asked",
     "cells_planned",
     "cells_covered",
     "cells_not_satisfiable",
     "at"
    ],
    "additionalProperties": false,
    "x-kind": "work",
    "x-scope": "platform",
    "x-store": "postgres",
    "x-key": "the beat's tick",
    "x-places": [
     "asked",
     "done"
    ],
    "x-from": "07 §2.3; 18 §2.13"
   },
   "Application": {
    "title": "Application",
    "description": "one customer question the platform can answer over a vertical, with what it needs, what it gives, and the check that would show it wrong",
    "type": "object",
    "properties": {
     "name": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "customer_question": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "inputs": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "text"
      },
      "description": ""
     },
     "outputs": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "text"
      },
      "description": "the surfaces it lands on"
     },
     "context_modes": {
      "type": "array",
      "items": {
       "type": "string",
       "enum": [
        "the platform's own offering",
        "a customer's brand",
        "an agency's client",
        "a person's own workspace"
       ]
      },
      "description": ""
     },
     "failure_checks": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "text"
      },
      "description": ""
     },
     "state": {
      "$ref": "#/components/schemas/Readiness",
      "description": ""
     }
    },
    "required": [
     "name",
     "customer_question",
     "inputs",
     "outputs",
     "context_modes",
     "failure_checks",
     "state"
    ],
    "additionalProperties": false,
    "x-kind": "row",
    "x-scope": "platform",
    "x-store": "postgres",
    "x-key": "its name",
    "x-places": [],
    "x-from": "12 §2.1; MODELS/the-verticals §11"
   },
   "MakeBrandDesignSystemInput": {
    "title": "MakeBrandDesignSystemInput",
    "description": "the brand whose design system is made from the pages held on its site",
    "type": "object",
    "properties": {
     "brand": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "website": {
      "type": "string",
      "format": "address",
      "description": "defaults to the brand row's own"
     }
    },
    "required": [
     "brand"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "DESIGN/the-brand-graph-from-a-domain §5"
   },
   "WhyInput": {
    "title": "WhyInput",
    "description": "a unit that is not ready, or a count that is not measured",
    "type": "object",
    "properties": {
     "unit": {
      "$ref": "#/components/schemas/UnitRef",
      "description": ""
     }
    },
    "required": [
     "unit"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "04 §3; 14 §3"
   },
   "GrantInput": {
    "title": "GrantInput",
    "description": "give, change or withdraw a grant",
    "type": "object",
    "properties": {
     "grant": {
      "$ref": "#/components/schemas/Grant",
      "description": ""
     },
     "withdraw": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "reason": {
      "type": "string",
      "format": "text",
      "description": ""
     }
    },
    "required": [
     "reason"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "03 §3"
   },
   "ReferabilityStatus": {
    "title": "ReferabilityStatus",
    "description": "one referability condition for one brand, with its status and its evidence",
    "type": "object",
    "properties": {
     "condition": {
      "type": "string",
      "description": "",
      "x-register": "ReferabilityCondition"
     },
     "status": {
      "type": "string",
      "enum": [
       "met",
       "partly",
       "not met",
       "not applicable"
      ],
      "description": ""
     },
     "check": {
      "type": "string",
      "format": "text",
      "description": "the pack's own check"
     },
     "evidence": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/EvidenceRef"
      },
      "description": ""
     }
    },
    "required": [
     "condition",
     "status",
     "check",
     "evidence"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "12 §2.4"
   },
   "PlatformSignal": {
    "title": "PlatformSignal",
    "description": "a signal kind the platform's things, relations or measures feed, with what on the platform means it",
    "type": "object",
    "properties": {
     "signal": {
      "type": "string",
      "description": "",
      "x-register": "KindOfSignal"
     },
     "from_thing": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "from_relation": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "from_measure": {
      "type": "string",
      "description": "",
      "x-register": "KindOfMeasure"
     },
     "meaning": {
      "type": "string",
      "format": "text",
      "description": ""
     }
    },
    "required": [
     "signal",
     "meaning"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "24 §2.1; 06 §2.1"
   },
   "ScrapeRun": {
    "title": "ScrapeRun",
    "description": "one run of an extraction template or of an inline scope: pages walked and denied, rows made, bytes, cost and time, with partial results at block boundaries; a whole site's crawl from its sitemap is one run",
    "type": "object",
    "properties": {
     "template": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "template_version": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "scope_hash": {
      "type": "string",
      "format": "hash",
      "description": ""
     },
     "pages_walked": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "pages_refused": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "rows_made": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "bytes": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "cost": {
      "$ref": "#/components/schemas/Cost",
      "description": ""
     },
     "failure": {
      "$ref": "#/components/schemas/FailureClass",
      "description": ""
     },
     "hops": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/HopStamp"
      },
      "description": ""
     },
     "request": {
      "$ref": "#/components/schemas/ScrapeRequest",
      "description": "the request the run carries out; the beat runs it from this field alone"
     },
     "pages_found": {
      "type": "integer",
      "format": "count",
      "description": "the pages the sitemaps and the seeds gave the frontier"
     },
     "gaps": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/CoverageGap"
      },
      "description": "one gap per page that could not be read, with its reason, and one for the pages past the budget"
     }
    },
    "required": [
     "template",
     "template_version",
     "scope_hash",
     "pages_walked",
     "pages_refused",
     "rows_made",
     "bytes",
     "cost",
     "hops",
     "request",
     "pages_found",
     "gaps"
    ],
    "additionalProperties": false,
    "x-kind": "work",
    "x-scope": "follows",
    "x-store": "postgres",
    "x-key": "the template's version and the scope's hash",
    "x-places": [
     "queued",
     "running",
     "done",
     "failed",
     "parked"
    ],
    "x-from": "18 §2.23"
   },
   "CostCeiling": {
    "title": "CostCeiling",
    "description": "money a month by kind, and the share at which an alarm is raised",
    "type": "object",
    "properties": {
     "kind": {
      "type": "string",
      "enum": [
       "model calls",
       "the store",
       "rented machines",
       "sources"
      ],
      "description": ""
     },
     "ceiling": {
      "type": "number",
      "format": "money",
      "description": ""
     },
     "alarm_share": {
      "type": "number",
      "format": "share",
      "description": ""
     },
     "read": {
      "type": "number",
      "format": "money",
      "description": "from metered calls and the providers' bills"
     }
    },
    "required": [
     "kind",
     "ceiling",
     "alarm_share"
    ],
    "additionalProperties": false,
    "x-kind": "parameter",
    "x-scope": "platform",
    "x-store": "postgres",
    "x-key": "the kind",
    "x-places": [],
    "x-from": "19 §2.1"
   },
   "Method": {
    "title": "Method",
    "description": "one research method of the library: the question it settles, when it applies and when not, its inputs, the deciding number and its bar, the control, its steps, its validity threats with the answer to each, and what it leaves on the record",
    "type": "object",
    "properties": {
     "name": {
      "type": "string",
      "format": "text",
      "description": "the field's name for the method"
     },
     "question": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "applies_when": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "not_when": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "inputs": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "text"
      },
      "description": "owning types"
     },
     "deciding_number": {
      "type": "string",
      "format": "text",
      "description": "and its bar"
     },
     "control": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "steps": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "text"
      },
      "description": "each a step of the named procedure"
     },
     "threats": {
      "type": "array",
      "items": {},
      "description": "threat, answer"
     },
     "leaves": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "text"
      },
      "description": "with the basis of each"
     },
     "state": {
      "$ref": "#/components/schemas/Readiness",
      "description": "not ready without a deciding number, a control or an answered threat"
     },
     "version": {
      "type": "integer",
      "format": "count",
      "description": ""
     }
    },
    "required": [
     "name",
     "question",
     "applies_when",
     "not_when",
     "inputs",
     "deciding_number",
     "control",
     "steps",
     "threats",
     "leaves",
     "state",
     "version"
    ],
    "additionalProperties": false,
    "x-kind": "row",
    "x-scope": "platform",
    "x-store": "postgres",
    "x-key": "its name and version",
    "x-places": [],
    "x-from": "14 §2.4"
   },
   "ModelsInput": {
    "title": "ModelsInput",
    "description": "the vertical, the segment or the buyer profile whose business models are asked for; all three absent asks for every model",
    "type": "object",
    "properties": {
     "vertical": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "segment": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "kind_of_buyer": {
      "type": "string",
      "format": "text",
      "description": "the buyer profile's name"
     }
    },
    "required": [],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "one ask for the business models",
    "x-places": [],
    "x-from": "25 §3"
   },
   "Task": {
    "title": "Task",
    "description": "a run a caller started through a tool: its progress, what it asks, and how it ended",
    "type": "object",
    "properties": {
     "run": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "progress": {
      "$ref": "#/components/schemas/Progress",
      "description": ""
     },
     "asks": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/TaskQuestion"
      },
      "description": ""
     },
     "ended": {
      "type": "string",
      "enum": [
       "running",
       "waiting",
       "ended",
       "failed",
       "stopped"
      ],
      "description": ""
     },
     "result": {
      "$ref": "#/components/schemas/Card",
      "description": ""
     }
    },
    "required": [
     "run",
     "progress",
     "asks",
     "ended"
    ],
    "additionalProperties": false,
    "x-kind": "view",
    "x-scope": "none",
    "x-store": "derived",
    "x-key": "the run, as one caller sees it",
    "x-places": [],
    "x-from": "09 §2; 10 §2"
   },
   "BoardInput": {
    "title": "BoardInput",
    "description": "a board to write, with its tiles",
    "type": "object",
    "properties": {
     "name": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "audience": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "tiles": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/Tile"
      },
      "description": ""
     },
     "period": {
      "$ref": "#/components/schemas/Window",
      "description": ""
     }
    },
    "required": [
     "name",
     "audience",
     "tiles",
     "period"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "11 §3"
   },
   "SignInProvider": {
    "title": "SignInProvider",
    "description": "who signs people in and issues tokens, registered by one address",
    "type": "object",
    "properties": {
     "address": {
      "type": "string",
      "format": "address",
      "description": ""
     },
     "description": {
      "description": "read from what it publishes: its issuer identity, where its keys are, what it offers"
     },
     "proof_method": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "state": {
      "$ref": "#/components/schemas/Readiness",
      "description": "declined if the description cannot be fetched"
     },
     "owner": {
      "type": "string",
      "enum": [
       "the platform",
       "a tenant"
      ],
      "description": "a company's own directory is one more row"
     }
    },
    "required": [
     "address",
     "description",
     "proof_method",
     "state",
     "owner"
    ],
    "additionalProperties": false,
    "x-kind": "row",
    "x-scope": "platform",
    "x-store": "postgres",
    "x-key": "its address",
    "x-places": [],
    "x-from": "03 §2.2; D-46"
   },
   "MapBrandInput": {
    "title": "MapBrandInput",
    "description": "a web address, and the tenant it is mapped for",
    "type": "object",
    "properties": {
     "website": {
      "type": "string",
      "format": "address",
      "description": ""
     },
     "name": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "tenant": {
      "type": "string",
      "format": "id",
      "description": ""
     }
    },
    "required": [
     "website",
     "tenant"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "12 §3"
   },
   "Proxy": {
    "title": "Proxy",
    "description": "an observable the record can read standing for a thing it cannot",
    "type": "object",
    "properties": {
     "name": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "facet_kind": {
      "type": "string",
      "description": "",
      "x-register": "FacetKind"
     },
     "observable": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "stands_for": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "engine": {
      "type": "string",
      "enum": [
       "membership",
       "utterance",
       "position"
      ],
      "description": ""
     },
     "rule": {
      "$ref": "#/components/schemas/Predicate",
      "description": ""
     },
     "scope": {
      "$ref": "#/components/schemas/Scope",
      "description": ""
     },
     "verdict": {
      "type": "string",
      "enum": [
       "measured",
       "inferred"
      ],
      "description": ""
     },
     "strength": {
      "$ref": "#/components/schemas/ProxyStrength",
      "description": ""
     },
     "universal_controls": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/ControlResult"
      },
      "description": "the room separation and the split-half persistence"
     },
     "named_controls": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/ControlResult"
      },
      "description": ""
     },
     "calibration": {
      "$ref": "#/components/schemas/Calibration",
      "description": ""
     },
     "aggregate_only": {
      "type": "boolean",
      "format": "bool",
      "description": "the flag at the write path"
     },
     "rights": {
      "$ref": "#/components/schemas/Rights",
      "description": ""
     },
     "state": {
      "$ref": "#/components/schemas/Readiness",
      "description": "not ready until its controls have run"
     },
     "counterexample": {
      "type": "string",
      "format": "text",
      "description": "the case that looks like the referent and is not"
     },
     "customer_decision": {
      "type": "string",
      "format": "text",
      "description": "the decision it serves"
     }
    },
    "required": [
     "name",
     "facet_kind",
     "observable",
     "stands_for",
     "engine",
     "rule",
     "scope",
     "verdict",
     "universal_controls",
     "named_controls",
     "aggregate_only",
     "rights",
     "state"
    ],
    "additionalProperties": false,
    "x-kind": "definition",
    "x-scope": "follows",
    "x-store": "postgres",
    "x-key": "its name and version",
    "x-places": [],
    "x-from": "06 §2.1; MODELS/proxies"
   },
   "Concept": {
    "title": "Concept",
    "description": "a named meaning a predicate may name; never a phrase",
    "type": "object",
    "properties": {
     "name": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "definition": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "labelled_examples": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "id"
      },
      "description": ""
     },
     "vectors": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/Vector"
      },
      "description": "under each ready model"
     },
     "floor": {
      "type": "number",
      "format": "share",
      "description": ""
     },
     "review_band": {
      "$ref": "#/components/schemas/Interval",
      "description": ""
     }
    },
    "required": [
     "name",
     "definition",
     "labelled_examples",
     "vectors",
     "floor",
     "review_band"
    ],
    "additionalProperties": false,
    "x-kind": "definition",
    "x-scope": "follows",
    "x-store": "postgres",
    "x-key": "its name and its owner",
    "x-places": [],
    "x-from": "04 §2.2"
   },
   "MarketStage": {
    "title": "MarketStage",
    "description": "one of the four stages of a market",
    "type": "object",
    "properties": {
     "name": {
      "type": "string",
      "enum": [
       "aware",
       "evaluating",
       "trialling",
       "buying"
      ],
      "description": ""
     },
     "count": {
      "$ref": "#/components/schemas/Summary",
      "description": ""
     },
     "value": {
      "$ref": "#/components/schemas/Summary",
      "description": ""
     },
     "note": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "mode": {
      "type": "string",
      "enum": [
       "present",
       "to be cultivated",
       "unknown"
      ],
      "description": "read from the counts against the bar of the intend family, never set"
     }
    },
    "required": [
     "name",
     "count"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "12 §2.1"
   },
   "ChannelCoverage": {
    "title": "ChannelCoverage",
    "description": "one channel's coverage in an answer",
    "type": "object",
    "properties": {
     "channel": {
      "type": "string",
      "description": "",
      "x-register": "Source"
     },
     "state": {
      "type": "string",
      "enum": [
       "matched",
       "empty after a real scan",
       "never measured"
      ],
      "description": ""
     },
     "scanned": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "matched": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "reason": {
      "type": "string",
      "enum": [
       "never acquired",
       "not acquired in this window",
       "the bound ran out"
      ],
      "description": ""
     },
     "repair": {
      "type": "string",
      "format": "text",
      "description": ""
     }
    },
    "required": [
     "channel",
     "state"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "06 §2.3"
   },
   "KeepBasketInput": {
    "title": "KeepBasketInput",
    "description": "a basket to keep",
    "type": "object",
    "properties": {
     "basket": {
      "$ref": "#/components/schemas/ProxyBasket",
      "description": ""
     }
    },
    "required": [
     "basket"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "06 §3"
   },
   "Permission": {
    "title": "Permission",
    "description": "the smallest thing that can be allowed: one verb on one kind of thing; generated, never written by hand",
    "type": "object",
    "properties": {
     "name": {
      "type": "string",
      "format": "text",
      "description": "the reading's or the kind of action's own name, which a grant and an access scope name"
     },
     "verb": {
      "type": "string",
      "format": "text",
      "description": "the family of the call: read, ask, act, work, session, files"
     },
     "kind": {
      "type": "string",
      "description": "the kind the call gives",
      "x-register": "Kind"
     },
     "from_row": {
      "type": "string",
      "format": "text",
      "description": "the reading or the kind of action that brought it"
     }
    },
    "required": [
     "name",
     "verb",
     "kind",
     "from_row"
    ],
    "additionalProperties": false,
    "x-kind": "row",
    "x-scope": "platform",
    "x-store": "postgres",
    "x-key": "the verb and the kind",
    "x-places": [],
    "x-from": "03 §2.2"
   },
   "PageContact": {
    "title": "PageContact",
    "description": "one contact a page showed, by a contact kind: the value as shown, the value as identity compares it, and where it came from",
    "type": "object",
    "properties": {
     "kind": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "namespace": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "value": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "normalised": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "basis": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "trust_rank": {
      "type": "integer",
      "format": "count",
      "description": ""
     }
    },
    "required": [
     "kind",
     "namespace",
     "value",
     "normalised",
     "basis",
     "trust_rank"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "24 §2.1"
   },
   "BillingAccount": {
    "title": "BillingAccount",
    "description": "the tenant's account with the payment provider: the provider's customer id, the currency, the address, the payment state, the period",
    "type": "object",
    "properties": {
     "provider": {
      "type": "string",
      "format": "text",
      "description": "the connector package"
     },
     "customer_id": {
      "type": "string",
      "format": "text",
      "description": "the provider's"
     },
     "currency": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "address": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "payment_state": {
      "type": "string",
      "enum": [
       "none",
       "on file",
       "failing"
      ],
      "description": ""
     },
     "period": {
      "type": "string",
      "enum": [
       "monthly",
       "yearly"
      ],
      "description": ""
     }
    },
    "required": [
     "provider",
     "customer_id",
     "currency",
     "payment_state",
     "period"
    ],
    "additionalProperties": false,
    "x-kind": "row",
    "x-scope": "tenant",
    "x-store": "postgres",
    "x-key": "the tenant",
    "x-places": [],
    "x-from": "19 §2.4"
   },
   "Refusal": {
    "title": "Refusal",
    "description": "the one typed shape of every not-allowed and every error",
    "type": "object",
    "properties": {
     "what_happened": {
      "type": "string",
      "format": "text",
      "description": "in plain words a customer could act on"
     },
     "input": {
      "type": "string",
      "format": "text",
      "description": "which input it was about"
     },
     "rule": {
      "type": "string",
      "description": "the rule, and why it exists",
      "x-register": "Law"
     },
     "why": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "way_out": {
      "type": "string",
      "format": "text",
      "description": "the call or the route that fixes it"
     },
     "shape_of_the_fix": {
      "description": ""
     },
     "retry_can_help": {
      "type": "boolean",
      "format": "bool",
      "description": ""
     }
    },
    "required": [
     "what_happened",
     "rule",
     "why",
     "way_out",
     "retry_can_help"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "01 SR-0127; 10 §2"
   },
   "BrandFace": {
    "title": "BrandFace",
    "description": "one type face of a brand's site by its role",
    "type": "object",
    "properties": {
     "role": {
      "type": "string",
      "enum": [
       "body",
       "heading",
       "mono"
      ],
      "description": ""
     },
     "family": {
      "type": "string",
      "format": "text",
      "description": "the font-family value as declared"
     },
     "weights": {
      "type": "array",
      "items": {
       "type": "integer",
       "format": "count"
      },
      "description": "the weights declared for it"
     },
     "basis": {
      "$ref": "#/components/schemas/Basis",
      "description": ""
     },
     "from": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "hash"
      },
      "description": ""
     }
    },
    "required": [
     "role",
     "family",
     "weights",
     "basis",
     "from"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "DESIGN/the-brand-graph-from-a-domain §5"
   },
   "SourceProcedureInput": {
    "title": "SourceProcedureInput",
    "description": "the source whose procedure to read",
    "type": "object",
    "properties": {
     "source": {
      "type": "string",
      "format": "id",
      "description": ""
     }
    },
    "required": [
     "source"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "18 §3"
   },
   "KindOfOffering": {
    "title": "KindOfOffering",
    "description": "one of the shapes an offering is sold in, so a tactic and a systems model can say which kinds they apply to",
    "type": "object",
    "properties": {
     "name": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "what": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "sold_as": {
      "type": "string",
      "enum": [
       "subscription",
       "retainer",
       "project",
       "goods",
       "usage",
       "licence",
       "marketplace take",
       "placement"
      ],
      "description": "how money moves for this kind"
     },
     "unit_of_sale": {
      "type": "string",
      "format": "text",
      "description": "the unit a price attaches to"
     },
     "examples": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "text"
      },
      "description": ""
     }
    },
    "required": [
     "name",
     "what",
     "sold_as",
     "unit_of_sale",
     "examples"
    ],
    "additionalProperties": false,
    "x-kind": "row",
    "x-scope": "platform",
    "x-store": "postgres",
    "x-key": "its name",
    "x-places": [],
    "x-from": "26 §2.1"
   },
   "EgressRelay": {
    "title": "EgressRelay",
    "description": "the outbound relay every connector's traffic leaves through, with bytes accounted per connector against a limit",
    "type": "object",
    "properties": {
     "address": {
      "type": "string",
      "format": "address",
      "description": ""
     },
     "bytes_limit_per_connector_per_day": {
      "type": "integer",
      "format": "bytes",
      "description": "a parameter of the machinery family"
     },
     "accounting": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/EgressReading"
      },
      "description": ""
     }
    },
    "required": [
     "address",
     "bytes_limit_per_connector_per_day",
     "accounting"
    ],
    "additionalProperties": false,
    "x-kind": "definition",
    "x-scope": "platform",
    "x-store": "postgres",
    "x-key": "its name",
    "x-places": [],
    "x-from": "21 §2.4; WA-73"
   },
   "Impact": {
    "title": "Impact",
    "description": "a kind of signal: the effect, the play, the tactic, the brand; it changes what happens next",
    "type": "object",
    "properties": {
     "effect": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "play": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "tactic": {
      "type": "string",
      "description": "",
      "x-register": "Tactic"
     },
     "brand": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "signal": {
      "type": "string",
      "format": "id",
      "description": ""
     }
    },
    "required": [
     "effect",
     "play",
     "tactic",
     "brand",
     "signal"
    ],
    "additionalProperties": false,
    "x-kind": "fact",
    "x-scope": "strategy",
    "x-store": "postgres",
    "x-key": "the effect",
    "x-places": [],
    "x-from": "13 §2.1"
   },
   "StrategyReadInput": {
    "title": "StrategyReadInput",
    "description": "a strategy to read, as of a date",
    "type": "object",
    "properties": {
     "strategy": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "as_of": {
      "type": "string",
      "format": "date",
      "description": ""
     }
    },
    "required": [
     "strategy"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "13 §3; MODELS/the-strategy-system-as-a-formal-model §13"
   },
   "EvidenceRef": {
    "title": "EvidenceRef",
    "description": "one piece of evidence: a unit of any kind, with its basis and its weight",
    "type": "object",
    "properties": {
     "unit": {
      "type": "string",
      "format": "id",
      "description": "a fact, an observation, a preview or a reading"
     },
     "basis": {
      "$ref": "#/components/schemas/Basis",
      "description": "measured or inferred"
     },
     "weight": {
      "type": "number",
      "format": "share",
      "description": ""
     },
     "note": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "partition": {
      "type": "string",
      "format": "id",
      "description": "the catalogue entry of the partition that holds the unit, written at accept; required when the unit is a fact of the lakehouse"
     }
    },
    "required": [
     "unit",
     "basis"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "01 §2.9; D-07"
   },
   "Rung": {
    "title": "Rung",
    "description": "one rung: a predicate with its own coverage, mapped to one of the seven stages",
    "type": "object",
    "properties": {
     "name": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "predicate": {
      "type": "string",
      "format": "hash",
      "description": ""
     },
     "stage": {
      "type": "string",
      "description": "",
      "x-register": "Stage"
     },
     "good_for": {
      "type": "string",
      "format": "duration",
      "description": "how long evidence at this rung stays fresh"
     },
     "rate_to_next": {
      "$ref": "#/components/schemas/NumberInPosition",
      "description": "the share that reaches the rung above, measured, estimated or stipulated"
     }
    },
    "required": [
     "name",
     "predicate",
     "stage",
     "good_for"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "06 §2.2"
   },
   "PriceLadder": {
    "title": "PriceLadder",
    "description": "the tenant's tiers in order with the study that set them; extends the price list, whose version in force the metering reads; a change is a new version",
    "type": "object",
    "properties": {
     "version": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "from": {
      "type": "string",
      "format": "date",
      "description": "the date it is in force from"
     },
     "tiers": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/PriceTier"
      },
      "description": ""
     },
     "price_list": {
      "type": "string",
      "format": "id",
      "description": "the price list version the tiers price their metered usage from"
     },
     "study": {
      "type": "string",
      "format": "id",
      "description": "the pricing study that set it"
     },
     "state": {
      "$ref": "#/components/schemas/Readiness",
      "description": "not ready when a tier has no offering or no allowance, or the study is absent"
     }
    },
    "required": [
     "version",
     "from",
     "tiers",
     "price_list",
     "study",
     "state"
    ],
    "additionalProperties": false,
    "x-kind": "row",
    "x-scope": "platform",
    "x-store": "postgres",
    "x-key": "its version",
    "x-places": [],
    "x-from": "25 §2.1; 19 §2.4"
   },
   "RateLimit": {
    "title": "RateLimit",
    "description": "requests allowed per window for one token, and per client address for the sign-in routes; over it the answer is 429 with Retry-After",
    "type": "object",
    "properties": {
     "subject": {
      "type": "string",
      "enum": [
       "token",
       "client-address"
      ],
      "description": ""
     },
     "requests": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "window": {
      "type": "string",
      "format": "duration",
      "description": ""
     },
     "burst": {
      "type": "integer",
      "format": "count",
      "description": ""
     }
    },
    "required": [
     "subject",
     "requests",
     "window"
    ],
    "additionalProperties": false,
    "x-kind": "parameter",
    "x-scope": "platform",
    "x-store": "postgres",
    "x-key": "the token or the client address",
    "x-places": [],
    "x-from": "21 §2.5; 10 §3"
   },
   "SettleInput": {
    "title": "SettleInput",
    "description": "a claim under test, settled",
    "type": "object",
    "properties": {
     "hypothesis": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "standing": {
      "type": "string",
      "enum": [
       "supported",
       "refuted",
       "cannot tell",
       "under test"
      ],
      "description": ""
     },
     "on": {
      "type": "string",
      "format": "text",
      "description": "what it was settled on"
     }
    },
    "required": [
     "hypothesis",
     "standing",
     "on"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "01 §3"
   },
   "ErasureReceipt": {
    "title": "ErasureReceipt",
    "description": "the receipt of an erasure: who asked, who verified, when it ran, what it covered in counts, its hash; never what was erased",
    "type": "object",
    "properties": {
     "tenant": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "subject": {
      "type": "string",
      "format": "id",
      "description": "a person, for a person's erasure"
     },
     "asked_by": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "verified_by": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "ran_at": {
      "type": "string",
      "format": "time",
      "description": ""
     },
     "counts": {
      "description": "by kind of row"
     },
     "hash": {
      "type": "string",
      "format": "hash",
      "description": ""
     }
    },
    "required": [
     "tenant",
     "asked_by",
     "verified_by",
     "ran_at",
     "counts",
     "hash"
    ],
    "additionalProperties": false,
    "x-kind": "fact",
    "x-scope": "platform",
    "x-store": "postgres",
    "x-key": "the tenant and the time",
    "x-places": [],
    "x-from": "03 §2.9"
   },
   "LeadsInput": {
    "title": "LeadsInput",
    "description": "a brand, and a place, a condition or a person; or one lead as its package",
    "type": "object",
    "properties": {
     "brand": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "place": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "condition": {
      "type": "string",
      "description": "",
      "x-register": "LeadCondition"
     },
     "person": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "lead": {
      "type": "string",
      "format": "id",
      "description": "one lead, as its package"
     }
    },
    "required": [
     "brand"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "08 §3"
   },
   "ProposedFact": {
    "title": "ProposedFact",
    "description": "what a hypothesis proposes, exactly one of: a connection, a claim, an identity decision, or a move with the item that did it",
    "type": "object",
    "properties": {
     "connection": {
      "$ref": "#/components/schemas/Connection",
      "description": ""
     },
     "claim": {
      "$ref": "#/components/schemas/Claim",
      "description": ""
     },
     "identity": {
      "$ref": "#/components/schemas/IdentityDecision",
      "description": "a mention resolved to an entity"
     },
     "move": {
      "type": "string",
      "format": "id",
      "description": "the move a captured item carried out"
     },
     "item": {
      "type": "string",
      "format": "id",
      "description": "the content item that did it"
     }
    },
    "required": [],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "01 §2.9; 24 §2.7"
   },
   "KindOfAction": {
    "title": "KindOfAction",
    "description": "one kind of action a connector declares, with its reach and its inverse",
    "type": "object",
    "properties": {
     "connector": {
      "type": "string",
      "description": "",
      "x-register": "Connector"
     },
     "name": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "reach": {
      "type": "string",
      "enum": [
       "reads only",
       "writes to the tenant's own system",
       "speaks as the brand",
       "spends money outside",
       "sends to a person"
      ],
      "description": ""
     },
     "arguments": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/ArgumentDeclaration"
      },
      "description": ""
     },
     "inverse": {
      "type": "string",
      "format": "text",
      "description": "how it is undone, captured first"
     },
     "identity_needed": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "cost": {
      "$ref": "#/components/schemas/Cost",
      "description": ""
     },
     "state": {
      "$ref": "#/components/schemas/Readiness",
      "description": ""
     }
    },
    "required": [
     "connector",
     "name",
     "reach",
     "arguments",
     "identity_needed",
     "state"
    ],
    "additionalProperties": false,
    "x-kind": "row",
    "x-scope": "platform",
    "x-store": "postgres",
    "x-key": "the connector and its name",
    "x-places": [],
    "x-from": "07 §2.1; 13 §2.1"
   },
   "WaitingInput": {
    "title": "WaitingInput",
    "description": "nothing, or a notification to acknowledge",
    "type": "object",
    "properties": {
     "acknowledge": {
      "type": "string",
      "format": "id",
      "description": ""
     }
    },
    "required": [],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "11 §3; 09 §3"
   },
   "Incident": {
    "title": "Incident",
    "description": "what was seen, the reading that found it, what was done, what changed, and the check added",
    "type": "object",
    "properties": {
     "seen": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "found_by": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "done": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "changed": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "check_added": {
      "type": "string",
      "description": "",
      "x-register": "Law"
     }
    },
    "required": [
     "seen",
     "found_by"
    ],
    "additionalProperties": false,
    "x-kind": "work",
    "x-scope": "platform",
    "x-store": "postgres",
    "x-key": "its id",
    "x-places": [
     "open",
     "understood",
     "fixed",
     "learned"
    ],
    "x-from": "19 §2.1"
   },
   "PropensityInput": {
    "title": "PropensityInput",
    "description": "a lead, a move or a play, and which faces to read: actors, content or both",
    "type": "object",
    "properties": {
     "lead": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "move": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "play": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "faces": {
      "type": "array",
      "items": {
       "type": "string",
       "enum": [
        "actor",
        "content"
       ]
      },
      "description": ""
     }
    },
    "required": [
     "lead",
     "faces"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "13 §3; MODELS/the-strategy-system-as-a-formal-model §3.2, §4"
   },
   "SavedViewInput": {
    "title": "SavedViewInput",
    "description": "a view to keep, or a view to read",
    "type": "object",
    "properties": {
     "view": {
      "$ref": "#/components/schemas/SavedView",
      "description": "to keep"
     },
     "read": {
      "type": "string",
      "format": "id",
      "description": "to read its rows"
     },
     "page": {
      "type": "integer",
      "format": "count",
      "description": ""
     }
    },
    "required": [],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "06 §3"
   },
   "BrandRatio": {
    "title": "BrandRatio",
    "description": "the ratio of a modular type scale, with the name the field gives it",
    "type": "object",
    "properties": {
     "ratio": {
      "type": "number",
      "format": "number",
      "description": ""
     },
     "name": {
      "type": "string",
      "format": "text",
      "description": "minor second, major second, minor third, major third, perfect fourth, augmented fourth, perfect fifth, golden, or the ratio itself"
     },
     "basis": {
      "$ref": "#/components/schemas/Basis",
      "description": ""
     },
     "from": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "hash"
      },
      "description": ""
     }
    },
    "required": [
     "ratio",
     "name",
     "basis",
     "from"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "DESIGN/the-brand-graph-from-a-domain §5"
   },
   "GroundingPrior": {
    "title": "GroundingPrior",
    "description": "how often a person supported a kind of suggestion on a platform at a breadth",
    "type": "object",
    "properties": {
     "kind": {
      "type": "string",
      "format": "text",
      "description": "the kind of connection, or the face"
     },
     "platform": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "breadth": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "supported": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "refuted": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "precision": {
      "type": "number",
      "format": "share",
      "description": "supported over settled, absent under ten settled"
     }
    },
    "required": [
     "kind",
     "platform",
     "breadth",
     "supported",
     "refuted"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "24 §3"
   },
   "SettleMatchAnswer": {
    "title": "SettleMatchAnswer",
    "description": "confirmed with the merge, or rejected",
    "type": "object",
    "properties": {
     "match": {
      "$ref": "#/components/schemas/PossibleMatch",
      "description": ""
     },
     "merge": {
      "$ref": "#/components/schemas/Merge",
      "description": ""
     }
    },
    "required": [
     "match"
    ],
    "additionalProperties": false,
    "x-kind": "view",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "05 §3"
   },
   "UsageReport": {
    "title": "UsageReport",
    "description": "quantity and cost by kind, by tenant, by provider and by period, with each provider's reconciliation state",
    "type": "object",
    "properties": {
     "rows": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/MeteredUsage"
      },
      "description": ""
     },
     "totals": {
      "type": "object",
      "additionalProperties": {
       "$ref": "#/components/schemas/Cost"
      },
      "description": "by kind"
     },
     "reconciliations": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/UsageReconciliation"
      },
      "description": ""
     }
    },
    "required": [
     "rows",
     "totals",
     "reconciliations"
    ],
    "additionalProperties": false,
    "x-kind": "view",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "19 §3"
   },
   "AgentMessage": {
    "title": "AgentMessage",
    "description": "the words the agent answers a turn with, from the model row that served",
    "type": "object",
    "properties": {
     "text": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "model": {
      "type": "string",
      "format": "text",
      "description": "the model row that answered, by name; absent when the words are the platform's own"
     }
    },
    "required": [
     "text"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "09 §2.2"
   },
   "DocPage": {
    "title": "DocPage",
    "description": "one page of the documentation site: where it comes from, its claims, its examples and its Markdown twin",
    "type": "object",
    "properties": {
     "address": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "title": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "description": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "section": {
      "type": "string",
      "description": "",
      "x-register": "DocSection"
     },
     "source": {
      "type": "string",
      "enum": [
       "hand-written",
       "from the contract",
       "from a register"
      ],
      "description": ""
     },
     "generated_from": {
      "type": "string",
      "format": "text",
      "description": "the document or the register a generated page is built from"
     },
     "claims": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/DocClaim"
      },
      "description": ""
     },
     "examples": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/DocExample"
      },
      "description": ""
     },
     "twin": {
      "type": "string",
      "format": "text",
      "description": "the address with .md appended"
     },
     "structured_data": {
      "description": "JSON-LD"
     },
     "updated": {
      "type": "string",
      "format": "time",
      "description": ""
     },
     "contract_hash": {
      "type": "string",
      "format": "hash",
      "description": ""
     }
    },
    "required": [
     "address",
     "title",
     "description",
     "section",
     "source",
     "claims",
     "examples",
     "twin",
     "structured_data",
     "updated",
     "contract_hash"
    ],
    "additionalProperties": false,
    "x-kind": "definition",
    "x-scope": "platform",
    "x-store": "postgres",
    "x-key": "its address",
    "x-places": [],
    "x-from": "23 §2.1"
   },
   "PreviewBudgets": {
    "title": "PreviewBudgets",
    "description": "the budget of each speed of the preview, enforced at the preview and nowhere else",
    "type": "object",
    "properties": {
     "instant": {
      "$ref": "#/components/schemas/SpeedBudget",
      "description": ""
     },
     "last_seven_days": {
      "$ref": "#/components/schemas/SpeedBudget",
      "description": ""
     },
     "whole_record": {
      "$ref": "#/components/schemas/SpeedBudget",
      "description": ""
     }
    },
    "required": [
     "instant",
     "last_seven_days",
     "whole_record"
    ],
    "additionalProperties": false,
    "x-kind": "parameter",
    "x-scope": "platform",
    "x-store": "postgres",
    "x-key": "",
    "x-places": [],
    "x-from": "06 §2.4; 06 §2.6"
   },
   "SeedManifest": {
    "title": "SeedManifest",
    "description": "what the seed of a tenant reads and what each file becomes: the files with their hashes, the corpus and the window, the mapping of each file to the objects it makes",
    "type": "object",
    "properties": {
     "tenant": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "version": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "files": {
      "type": "array",
      "items": {},
      "description": "path, hash, becomes"
     },
     "corpus": {
      "type": "string",
      "format": "text",
      "description": "the shared corpus it reads"
     },
     "window_months": {
      "type": "integer",
      "format": "count",
      "description": "the parameter; one at first"
     },
     "window_end": {
      "type": "string",
      "format": "date",
      "description": "the corpus's most recent month"
     }
    },
    "required": [
     "tenant",
     "version",
     "files",
     "corpus",
     "window_months",
     "window_end"
    ],
    "additionalProperties": false,
    "x-kind": "definition",
    "x-scope": "platform",
    "x-store": "postgres",
    "x-key": "the tenant and the version",
    "x-places": [],
    "x-from": "12 §2.4"
   },
   "Trajectory": {
    "title": "Trajectory",
    "description": "plan item to grounded move to outcome, for each move in the window",
    "type": "object",
    "properties": {
     "moves": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/MoveTrajectory"
      },
      "description": ""
     },
     "window": {
      "$ref": "#/components/schemas/Window",
      "description": ""
     }
    },
    "required": [
     "moves",
     "window"
    ],
    "additionalProperties": false,
    "x-kind": "view",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "13 §3"
   },
   "BusinessModel": {
    "title": "BusinessModel",
    "description": "how one buyer profile earns, and the driver tree that turns that into the return one offering gives it; ready only when the tree reaches its four outputs and every dimension follows",
    "type": "object",
    "properties": {
     "name": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "vertical": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "segment": {
      "type": "string",
      "format": "id",
      "description": "the segment of the vertical it describes; absent for a model at the buyer profile's depth"
     },
     "kind_of_buyer": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "revenue_model": {
      "type": "string",
      "format": "text",
      "description": "how the kind earns, in the field's terms: subscription, retainer, project, per seat, usage, transaction take, margin on goods, reimbursement, donations, management fees"
     },
     "shape": {
      "type": "string",
      "description": "the calculation shape the model instantiates",
      "x-register": "CalculationShape"
     },
     "bindings": {
      "type": "object",
      "additionalProperties": {
       "type": "string",
       "format": "text"
      },
      "description": "the shape's role names bound to this model's drivers, by name"
     },
     "tree": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/DriverNode"
      },
      "description": "the shape's tree with the bindings applied: the roots, one per output, each a tree over drivers"
     },
     "outputs": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "text"
      },
      "description": "the four outputs the tree must reach: incremental value, cost, return, payback"
     },
     "assumptions": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/Assumption"
      },
      "description": "each disclosed on every page and frame that reads the model"
     },
     "version": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "content_hash": {
      "type": "string",
      "format": "hash",
      "description": ""
     },
     "state": {
      "$ref": "#/components/schemas/Readiness",
      "description": "not ready with the node named when the tree fails its check"
     },
     "original": {
      "type": "string",
      "format": "id",
      "description": "the platform's row a brand's copy names"
     },
     "depth": {
      "type": "string",
      "enum": [
       "full",
       "lighter"
      ],
      "description": "the depth of the research behind the model"
     },
     "adult_rooms": {
      "type": "string",
      "enum": [
       "left out by default",
       "kept and used"
      ],
      "description": "whether a brand under this model reads the rooms marked adult by default. A vertical that draws real signal from those rooms keeps them, and every other vertical leaves them out unless a call opts in (D-128)."
     },
     "note": {
      "type": "string",
      "format": "text",
      "description": "how the model was placed when the research's table did not list its profile"
     }
    },
    "required": [
     "name",
     "vertical",
     "revenue_model",
     "shape",
     "bindings",
     "tree",
     "outputs",
     "assumptions",
     "version",
     "content_hash",
     "state",
     "depth",
     "adult_rooms"
    ],
    "additionalProperties": false,
    "x-kind": "definition",
    "x-scope": "platform",
    "x-store": "postgres",
    "x-key": "its segment or buyer profile, and its version",
    "x-places": [],
    "x-from": "25 §2.1"
   },
   "Goal": {
    "title": "Goal",
    "description": "a measure, a target, a window, and the version of the measure it was set against",
    "type": "object",
    "properties": {
     "strategy": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "measure": {
      "type": "string",
      "description": "",
      "x-register": "KindOfMeasure"
     },
     "measure_version": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "target": {
      "description": ""
     },
     "window": {
      "type": "string",
      "format": "duration",
      "description": ""
     },
     "reading": {
      "$ref": "#/components/schemas/Measure",
      "description": "the latest, with its basis"
     }
    },
    "required": [
     "strategy",
     "measure",
     "measure_version",
     "target",
     "window"
    ],
    "additionalProperties": false,
    "x-kind": "definition",
    "x-scope": "strategy",
    "x-store": "postgres",
    "x-key": "the strategy and the measure",
    "x-places": [],
    "x-from": "13 §2.1"
   },
   "Assumption": {
    "title": "Assumption",
    "description": "one assumption a business model discloses, and the driver it rests on",
    "type": "object",
    "properties": {
     "text": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "rests_on": {
      "type": "string",
      "description": "",
      "x-register": "KindOfMeasure"
     }
    },
    "required": [
     "text",
     "rests_on"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "one assumption a model discloses",
    "x-places": [],
    "x-from": "25 §2.1"
   },
   "Token": {
    "title": "Token",
    "description": "the claims of an access token; the gateway checks six of them and grants nothing on the token alone",
    "type": "object",
    "properties": {
     "token_use": {
      "type": "string",
      "enum": [
       "access"
      ],
      "description": "it is marked as an access token"
     },
     "subject": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "issuer": {
      "type": "string",
      "format": "address",
      "description": ""
     },
     "client": {
      "type": "string",
      "format": "id",
      "description": "which client it was given to"
     },
     "audience": {
      "type": "string",
      "format": "text",
      "description": "which service it is made out to"
     },
     "expires_at": {
      "type": "string",
      "format": "time",
      "description": ""
     },
     "signed_in_strength": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "signed_in_at": {
      "type": "string",
      "format": "time",
      "description": ""
     },
     "access_scopes": {
      "type": "array",
      "items": {
       "type": "string",
       "description": "the name of a row of AccessScope",
       "x-register": "AccessScope"
      },
      "description": ""
     },
     "acting_for": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "text"
      },
      "description": "outermost first"
     },
     "bound_key": {
      "type": "string",
      "format": "hash",
      "description": "the holder's key it is tied to"
     }
    },
    "required": [
     "token_use",
     "subject",
     "issuer",
     "client",
     "audience",
     "expires_at",
     "access_scopes"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "03 §2.5"
   },
   "ConditionMatch": {
    "title": "ConditionMatch",
    "description": "one condition that admitted a match",
    "type": "object",
    "properties": {
     "condition": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "words_matched": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "text"
      },
      "description": ""
     },
     "confidence": {
      "type": "number",
      "format": "share",
      "description": ""
     }
    },
    "required": [
     "condition",
     "words_matched",
     "confidence"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "",
    "x-places": [],
    "x-from": "06 §2.2"
   },
   "WorkBase": {
    "title": "WorkBase",
    "description": "what every unit of work carries beyond the unit",
    "type": "object",
    "properties": {
     "place": {
      "type": "string",
      "format": "text",
      "description": "exactly one of the kind's places"
     },
     "entered_place_at": {
      "type": "string",
      "format": "time",
      "description": ""
     },
     "due_at": {
      "type": "string",
      "format": "time",
      "description": "its deadline"
     },
     "held_reason": {
      "type": "string",
      "format": "text",
      "description": "required whenever it waits"
     },
     "input_key": {
      "type": "string",
      "format": "text",
      "description": "its idempotency key, so the same input is the same work"
     },
     "attempts": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/Attempt"
      },
      "description": "each with the class of its failure"
     },
     "cost": {
      "$ref": "#/components/schemas/Cost",
      "description": ""
     }
    },
    "required": [
     "place",
     "entered_place_at",
     "input_key",
     "attempts",
     "cost"
    ],
    "additionalProperties": false,
    "x-kind": "value",
    "x-scope": "none",
    "x-store": "none",
    "x-key": "carried by every unit of work",
    "x-places": [],
    "x-from": "01 §2.1"
   },
   "Capacity": {
    "title": "Capacity",
    "description": "how many new leads a user can take in a period, how many they hold, and when it refills",
    "type": "object",
    "properties": {
     "user": {
      "type": "string",
      "format": "id",
      "description": ""
     },
     "per_period": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "period": {
      "type": "string",
      "format": "duration",
      "description": ""
     },
     "held": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "refills_at": {
      "type": "string",
      "format": "time",
      "description": ""
     }
    },
    "required": [
     "user",
     "per_period",
     "period",
     "held",
     "refills_at"
    ],
    "additionalProperties": false,
    "x-kind": "property",
    "x-scope": "user",
    "x-store": "postgres",
    "x-key": "the user",
    "x-places": [],
    "x-from": "08 §2"
   },
   "DocSection": {
    "title": "DocSection",
    "description": "one section of the documentation site: its purpose, its order and its pages",
    "type": "object",
    "properties": {
     "slug": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "title": {
      "type": "string",
      "format": "text",
      "description": ""
     },
     "order": {
      "type": "integer",
      "format": "count",
      "description": ""
     },
     "purpose": {
      "type": "string",
      "enum": [
       "start",
       "install",
       "guides",
       "concepts",
       "reference",
       "for-models",
       "changelog"
      ],
      "description": ""
     },
     "pages": {
      "type": "array",
      "items": {
       "type": "string",
       "format": "id"
      },
      "description": "the pages of the section, by address"
     }
    },
    "required": [
     "slug",
     "title",
     "order",
     "purpose",
     "pages"
    ],
    "additionalProperties": false,
    "x-kind": "definition",
    "x-scope": "platform",
    "x-store": "postgres",
    "x-key": "its slug",
    "x-places": [],
    "x-from": "23 §2.1"
   }
  }
 }
}
