{
  "components": {
    "schemas": {
      "Author": {
        "properties": {
          "name": {
            "type": "string"
          },
          "role": {
            "description": "Why this person is the signatory for this piece.",
            "type": "string"
          }
        },
        "required": [
          "name",
          "role"
        ],
        "type": "object"
      },
      "Company": {
        "properties": {
          "contact": {
            "properties": {
              "email": {
                "format": "email",
                "type": "string"
              },
              "phone": {
                "type": "string"
              }
            },
            "type": "object"
          },
          "entity": {
            "description": "The registered company behind the site.",
            "properties": {
              "companyNumber": {
                "type": "string"
              },
              "country": {
                "type": "string"
              },
              "disambiguation": {
                "description": "Which HIVO this is: the registered entity, and the similarly named companies it is not affiliated with.",
                "type": "string"
              },
              "founded": {
                "format": "date",
                "type": "string"
              },
              "incorporated": {
                "format": "date",
                "type": "string"
              },
              "legalName": {
                "type": "string"
              }
            },
            "type": "object"
          },
          "founders": {
            "items": {
              "$ref": "#/components/schemas/Founder"
            },
            "type": "array"
          },
          "intro": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "language": {
            "description": "The language of this response, as an hreflang tag. Always `en`: the API serves the English edition of the website.",
            "type": "string"
          },
          "sections": {
            "items": {
              "$ref": "#/components/schemas/Section"
            },
            "type": "array"
          },
          "title": {
            "type": "string"
          },
          "translations": {
            "description": "The same page published on the website in other languages, each with its absolute URL. Empty when the page has no translation.",
            "items": {
              "$ref": "#/components/schemas/Translation"
            },
            "type": "array"
          },
          "url": {
            "format": "uri",
            "type": "string"
          }
        },
        "required": [
          "url",
          "title",
          "founders",
          "entity"
        ],
        "type": "object"
      },
      "Endpoint": {
        "properties": {
          "description": {
            "type": "string"
          },
          "path": {
            "type": "string"
          },
          "returns": {
            "type": "string"
          }
        },
        "required": [
          "path",
          "description",
          "returns"
        ],
        "type": "object"
      },
      "Error": {
        "properties": {
          "error": {
            "type": "string"
          },
          "message": {
            "type": "string"
          }
        },
        "required": [
          "error"
        ],
        "type": "object"
      },
      "Founder": {
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "paragraphs": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "role": {
            "type": "string"
          }
        },
        "required": [
          "id",
          "name",
          "role"
        ],
        "type": "object"
      },
      "HowWeWork": {
        "properties": {
          "language": {
            "description": "The language of this response, as an hreflang tag. Always `en`: the API serves the English edition of the website.",
            "type": "string"
          },
          "sections": {
            "items": {
              "$ref": "#/components/schemas/Section"
            },
            "type": "array"
          },
          "stages": {
            "deprecated": true,
            "description": "Deprecated: always an empty array. The page's content is in sections; its principles are sections[id=principles].items.",
            "items": {
              "$ref": "#/components/schemas/Stage"
            },
            "type": "array"
          },
          "title": {
            "type": "string"
          },
          "translations": {
            "description": "The same page published on the website in other languages, each with its absolute URL. Empty when the page has no translation.",
            "items": {
              "$ref": "#/components/schemas/Translation"
            },
            "type": "array"
          },
          "url": {
            "format": "uri",
            "type": "string"
          }
        },
        "required": [
          "url",
          "title",
          "stages"
        ],
        "type": "object"
      },
      "Industry": {
        "properties": {
          "intro": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "language": {
            "description": "The language of this response, as an hreflang tag. Always `en`: the API serves the English edition of the website.",
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "sections": {
            "items": {
              "$ref": "#/components/schemas/Section"
            },
            "type": "array"
          },
          "slug": {
            "type": "string"
          },
          "title": {
            "type": "string"
          },
          "translations": {
            "description": "The same page published on the website in other languages, each with its absolute URL. Empty when the page has no translation.",
            "items": {
              "$ref": "#/components/schemas/Translation"
            },
            "type": "array"
          },
          "url": {
            "format": "uri",
            "type": "string"
          }
        },
        "required": [
          "slug",
          "name",
          "url"
        ],
        "type": "object"
      },
      "IndustryList": {
        "properties": {
          "count": {
            "type": "integer"
          },
          "language": {
            "description": "The language of this response, as an hreflang tag. Always `en`: the API serves the English edition of the website.",
            "type": "string"
          },
          "sectors": {
            "items": {
              "$ref": "#/components/schemas/IndustrySummary"
            },
            "type": "array"
          },
          "translations": {
            "description": "The same page published on the website in other languages, each with its absolute URL. Empty when the page has no translation.",
            "items": {
              "$ref": "#/components/schemas/Translation"
            },
            "type": "array"
          }
        },
        "required": [
          "count",
          "sectors"
        ],
        "type": "object"
      },
      "IndustrySummary": {
        "properties": {
          "api": {
            "format": "uri",
            "type": "string"
          },
          "indexDescription": {
            "type": "string"
          },
          "indexTitle": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "slug": {
            "type": "string"
          },
          "url": {
            "format": "uri",
            "type": "string"
          }
        },
        "required": [
          "slug",
          "name",
          "url",
          "api"
        ],
        "type": "object"
      },
      "Insight": {
        "allOf": [
          {
            "$ref": "#/components/schemas/InsightSummary"
          },
          {
            "properties": {
              "body": {
                "description": "The article body as authored blocks, not flattened prose. Each block carries a `type`: h2, h3, p, stat, list, table, claim or note. A `stat` block carries its own source, which is why the body is not collapsed to a string.",
                "items": {
                  "type": "object"
                },
                "type": "array"
              },
              "faq": {
                "items": {
                  "$ref": "#/components/schemas/Question"
                },
                "type": "array"
              },
              "image": {
                "properties": {
                  "alt": {
                    "type": "string"
                  },
                  "src": {
                    "format": "uri",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "related": {
                "items": {
                  "$ref": "#/components/schemas/RelatedArticle"
                },
                "type": "array"
              },
              "sources": {
                "items": {
                  "$ref": "#/components/schemas/Source"
                },
                "type": "array"
              },
              "text_format": {
                "description": "The markup convention used inside every prose string in this response. `inline-markdown` means `[label](href)` links and `**bold**` appear literally and should be parsed, not printed.",
                "enum": [
                  "inline-markdown"
                ],
                "type": "string"
              }
            },
            "required": [
              "body",
              "text_format",
              "sources"
            ],
            "type": "object"
          }
        ]
      },
      "InsightList": {
        "properties": {
          "articles": {
            "items": {
              "$ref": "#/components/schemas/InsightSummary"
            },
            "type": "array"
          },
          "count": {
            "type": "integer"
          }
        },
        "required": [
          "count",
          "articles"
        ],
        "type": "object"
      },
      "InsightSummary": {
        "properties": {
          "answer": {
            "description": "A self-contained passage of 40 to 60 words that answers `question` without the rest of the page. It is included in the list response so a client can answer without a second request.",
            "type": "string"
          },
          "api": {
            "format": "uri",
            "type": "string"
          },
          "author": {
            "$ref": "#/components/schemas/Author"
          },
          "category": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "publishedAt": {
            "format": "date",
            "type": "string"
          },
          "question": {
            "type": "string"
          },
          "slug": {
            "type": "string"
          },
          "title": {
            "type": "string"
          },
          "updatedAt": {
            "format": "date",
            "type": "string"
          },
          "url": {
            "format": "uri",
            "type": "string"
          }
        },
        "required": [
          "slug",
          "title",
          "question",
          "answer",
          "url"
        ],
        "type": "object"
      },
      "Manifest": {
        "properties": {
          "contact": {
            "format": "email",
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "documentation": {
            "format": "uri",
            "type": "string"
          },
          "endpoints": {
            "items": {
              "$ref": "#/components/schemas/Endpoint"
            },
            "type": "array"
          },
          "languages": {
            "description": "Every language the website is published in, as hreflang tags. The API itself responds in English; a page resource with a version in another language names it in `translations`.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "name": {
            "type": "string"
          },
          "notes": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "site": {
            "format": "uri",
            "type": "string"
          },
          "version": {
            "type": "string"
          }
        },
        "required": [
          "name",
          "version",
          "site",
          "endpoints"
        ],
        "type": "object"
      },
      "Model": {
        "properties": {
          "intro": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "language": {
            "description": "The language of this response, as an hreflang tag. Always `en`: the API serves the English edition of the website.",
            "type": "string"
          },
          "sections": {
            "items": {
              "$ref": "#/components/schemas/Section"
            },
            "type": "array"
          },
          "title": {
            "type": "string"
          },
          "translations": {
            "description": "The same page published on the website in other languages, each with its absolute URL. Empty when the page has no translation.",
            "items": {
              "$ref": "#/components/schemas/Translation"
            },
            "type": "array"
          },
          "url": {
            "format": "uri",
            "type": "string"
          }
        },
        "required": [
          "url",
          "title",
          "sections"
        ],
        "type": "object"
      },
      "Question": {
        "properties": {
          "answer": {
            "type": "string"
          },
          "question": {
            "type": "string"
          }
        },
        "required": [
          "question",
          "answer"
        ],
        "type": "object"
      },
      "RelatedArticle": {
        "properties": {
          "slug": {
            "type": "string"
          },
          "title": {
            "type": "string"
          },
          "url": {
            "format": "uri",
            "type": "string"
          }
        },
        "required": [
          "slug",
          "title",
          "url"
        ],
        "type": "object"
      },
      "SectionItem": {
        "properties": {
          "id": {
            "type": "string"
          },
          "label": {
            "type": "string"
          },
          "line": {
            "description": "The single line that says what this item actually means.",
            "type": "string"
          }
        },
        "required": [
          "id",
          "label"
        ],
        "type": "object"
      },
      "Section": {
        "properties": {
          "groups": {
            "items": {
              "type": "object"
            },
            "type": "array"
          },
          "id": {
            "description": "The stable role this section plays on the page.",
            "type": "string"
          },
          "items": {
            "items": {
              "$ref": "#/components/schemas/SectionItem"
            },
            "type": "array"
          },
          "paragraphs": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "title": {
            "type": "string"
          }
        },
        "required": [
          "id",
          "title"
        ],
        "type": "object"
      },
      "Source": {
        "properties": {
          "date": {
            "type": "string"
          },
          "href": {
            "format": "uri",
            "type": "string"
          },
          "label": {
            "type": "string"
          },
          "publisher": {
            "type": "string"
          }
        },
        "required": [
          "label",
          "publisher",
          "href"
        ],
        "type": "object"
      },
      "Stage": {
        "deprecated": true,
        "description": "Deprecated; not used.",
        "properties": {
          "id": {
            "type": "string"
          },
          "label": {
            "type": "string"
          },
          "line": {
            "type": "string"
          },
          "number": {
            "type": "string"
          }
        },
        "required": [
          "id",
          "number",
          "label"
        ],
        "type": "object"
      },
      "Translation": {
        "description": "A version of the same page on the website, in another language.",
        "properties": {
          "language": {
            "description": "The language, as an hreflang tag.",
            "type": "string"
          },
          "url": {
            "format": "uri",
            "type": "string"
          }
        },
        "required": [
          "language",
          "url"
        ],
        "type": "object"
      }
    }
  },
  "externalDocs": {
    "description": "Developer and agent documentation",
    "url": "https://www.hi-vo.io/docs"
  },
  "info": {
    "contact": {
      "email": "office@hi-vo.io",
      "name": "HIVO",
      "url": "https://www.hi-vo.io/contact"
    },
    "description": "The public read-only API for the HIVO website. It serves the same authored content the\npages render, as JSON.\n\nRead-only: every operation is a GET and nothing here changes anything. No authentication\nis required. CORS is open to any origin.\n\nNo rate limit is enforced and none is advertised. Every response is prerendered at build\ntime and served from a CDN, revalidated every 10 minutes, so there is no per-client\nbudget to report and no `RateLimit` header to honour.\n\nEvery page of the website is also available as markdown: send `Accept: text/markdown` to\nany URL on this host.\n\nLANGUAGES. The website is published in English and in Hebrew; this API serves the English\nedition and is not translated. The manifest lists the languages in `languages`, and a page\nresource whose page also exists in Hebrew names that version, with its URL, in\n`translations`.\n\nVERSIONING AND DEPRECATION. The version is in the path: `/agent/v1`. A change that would\nbreak a client - a field removed, a type changed, a path retired - arrives as a new\nversion alongside this one, never as an edit to it. Fields may be ADDED to a response\nwithout a version change, so parse permissively and ignore what you do not recognise.\n\nWhen a version is retired it is announced before it stops answering, not after: every\nresponse from the retiring version carries `Deprecation` and `Sunset` headers (RFC 8594)\nfrom the announcement until the sunset date, and that date is at least 180 days out. A\nclient that reads those two headers has half a year of warning and never has to poll\nthis document to find out.",
    "license": {
      "name": "Content is published by HIVO IO Technologies Ltd",
      "url": "https://www.hi-vo.io/terms"
    },
    "title": "HIVO public API",
    "version": "1"
  },
  "openapi": "3.1.0",
  "paths": {
    "/agent/v1": {
      "get": {
        "description": "Start here. Lists every endpoint on this API, the site it describes, and how the responses are cached.",
        "operationId": "getManifest",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Manifest"
                }
              }
            },
            "description": "The API manifest."
          }
        },
        "summary": "The manifest: name, version, site, contact, the endpoint list, and caching notes.",
        "tags": [
          "HIVO"
        ]
      }
    },
    "/agent/v1/company": {
      "get": {
        "description": "Who HIVO is, who runs it, and the registered entity behind it, with the public contact address.",
        "operationId": "getCompany",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Company"
                }
              }
            },
            "description": "The company page."
          }
        },
        "summary": "The company page, the founders as a first-class list, the registered entity, and the contact details.",
        "tags": [
          "HIVO"
        ]
      }
    },
    "/agent/v1/how-we-work": {
      "get": {
        "description": "What working with HIVO is like, and how the work moves department by department.",
        "operationId": "getHowWeWork",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HowWeWork"
                }
              }
            },
            "description": "What working with HIVO is like: the principles and the page."
          }
        },
        "summary": "The page: its principles (sections[id=principles].items) and its other sections. The deprecated stages field is an empty array.",
        "tags": [
          "HIVO"
        ]
      }
    },
    "/agent/v1/industries": {
      "get": {
        "description": "Every sector HIVO is built for, with the central operating object each one is built around. This is where a sector slug comes from.",
        "operationId": "listIndustries",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/IndustryList"
                }
              }
            },
            "description": "Every sector HIVO is built for."
          }
        },
        "summary": "One entry per sector: slug, name, its central object, and links to the page and to its own endpoint.",
        "tags": [
          "HIVO"
        ]
      }
    },
    "/agent/v1/industries/{sector}": {
      "get": {
        "description": "One sector in full. The sector value is a slug from the industries list; any other value returns 404.",
        "operationId": "getIndustry",
        "parameters": [
          {
            "description": "A sector slug, as returned by listIndustries, e.g. logistics.",
            "in": "path",
            "name": "sector",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Industry"
                }
              }
            },
            "description": "One sector."
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "No such slug. The index endpoint lists every value this segment accepts."
          }
        },
        "summary": "The sector page: name, title, intro, and its sections.",
        "tags": [
          "HIVO"
        ]
      }
    },
    "/agent/v1/insights": {
      "get": {
        "description": "Every published article. Each entry carries the self-contained answer to the question the article was written for, so a question can be answered without a second request.",
        "operationId": "listInsights",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InsightList"
                }
              }
            },
            "description": "Every published article."
          }
        },
        "summary": "One entry per article: the extractable answer, the author, the dates, and the links.",
        "tags": [
          "HIVO"
        ]
      }
    },
    "/agent/v1/insights/{slug}": {
      "get": {
        "description": "One article in full, with the body as structured blocks rather than as a wall of text. The slug comes from the insights list; any other value returns 404.",
        "operationId": "getInsight",
        "parameters": [
          {
            "description": "An article slug, as returned by listInsights.",
            "in": "path",
            "name": "slug",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Insight"
                }
              }
            },
            "description": "One article in full."
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "No such slug. The index endpoint lists every value this segment accepts."
          }
        },
        "summary": "The full article: body blocks, questions and answers, cited sources, related articles, and the image.",
        "tags": [
          "HIVO"
        ]
      }
    },
    "/agent/v1/model": {
      "get": {
        "description": "How HIVO structures an organization around the object it earns from: the operational model, the Workspace people and agents work from, the decisions that stay with people, and how the record stays true as the organization changes.",
        "operationId": "getModel",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Model"
                }
              }
            },
            "description": "The operating model."
          }
        },
        "summary": "The model page: title, intro, and every section with its id and title, plus its paragraphs, items or groups depending on the section.",
        "tags": [
          "HIVO"
        ]
      }
    }
  },
  "servers": [
    {
      "description": "Production",
      "url": "https://www.hi-vo.io"
    }
  ],
  "tags": [
    {
      "description": "Everything this API serves is content published on the HIVO website.",
      "name": "HIVO"
    }
  ]
}
