{
  "openapi": "3.1.1",
  "info": {
    "title": "TelemetryOS Corporate Website API",
    "version": "1.0.0",
    "description": "Version 1 of the public corporate website API. Catalog operations are anonymous. Demo booking operations are anonymous but use origin checks, bot controls, and a sealed manage-link credential. Breaking changes receive a new major URL version. See the developer portal for the deprecation policy. The product platform API is documented separately.",
    "termsOfService": "https://www.telemetryos.com/legal/terms-of-service"
  },
  "externalDocs": {
    "description": "TelemetryOS Developer Portal and API lifecycle policy",
    "url": "https://www.telemetryos.com/developers"
  },
  "servers": [
    { "url": "https://www.telemetryos.com", "description": "Production corporate website" },
    { "url": "https://qa-www.telemetryos.com", "description": "QA sandbox" }
  ],
  "security": [],
  "x-versioning-policy": {
    "strategy": "URL path major versioning",
    "currentVersion": "v1",
    "minimumDeprecationNoticeMonths": 12,
    "documentation": "https://www.telemetryos.com/developers#versioning-and-deprecation"
  },
  "tags": [
    { "name": "Content", "description": "Published marketing content catalogs." },
    { "name": "Demo booking", "description": "Public demo scheduling through a same-origin proxy." }
  ],
  "paths": {
    "/api/v1/industries": {
      "get": {
        "operationId": "listIndustriesV1",
        "summary": "List published industries",
        "tags": ["Content"],
        "security": [],
        "responses": {
          "200": { "description": "Published industry summaries.", "headers": { "X-TelemetryOS-API-Version": { "$ref": "#/components/headers/ApiVersion" } }, "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/IndustrySummary" } } } } },
          "405": { "$ref": "#/components/responses/MethodNotAllowed" },
          "500": { "$ref": "#/components/responses/ServerError" }
        }
      }
    },
    "/api/v1/usecases": {
      "get": {
        "operationId": "listUseCasesV1",
        "summary": "List published use cases",
        "tags": ["Content"],
        "security": [],
        "responses": {
          "200": { "description": "Published use-case summaries.", "headers": { "X-TelemetryOS-API-Version": { "$ref": "#/components/headers/ApiVersion" } }, "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/UseCaseSummary" } } } } },
          "405": { "$ref": "#/components/responses/MethodNotAllowed" },
          "500": { "$ref": "#/components/responses/ServerError" }
        }
      }
    },
    "/api/v1/comparisons": {
      "get": {
        "operationId": "listComparisonsV1",
        "summary": "List published platform comparisons",
        "tags": ["Content"],
        "security": [],
        "responses": {
          "200": { "description": "Published platform-comparison summaries.", "headers": { "X-TelemetryOS-API-Version": { "$ref": "#/components/headers/ApiVersion" } }, "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/ComparisonSummary" } } } } },
          "405": { "$ref": "#/components/responses/MethodNotAllowed" },
          "500": { "$ref": "#/components/responses/ServerError" }
        }
      }
    },
    "/api/v1/demo/availability": {
      "get": {
        "operationId": "getDemoAvailabilityV1",
        "summary": "Get available demo times",
        "tags": ["Demo booking"],
        "security": [],
        "parameters": [
          { "$ref": "#/components/parameters/From" },
          { "$ref": "#/components/parameters/To" },
          { "$ref": "#/components/parameters/Timezone" },
          { "$ref": "#/components/parameters/OrganizerId" }
        ],
        "responses": {
          "200": { "description": "Available demo slots.", "headers": { "X-TelemetryOS-API-Version": { "$ref": "#/components/headers/ApiVersion" } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Availability" } } } },
          "405": { "$ref": "#/components/responses/MethodNotAllowed" },
          "409": { "$ref": "#/components/responses/DemoError" },
          "500": { "$ref": "#/components/responses/DemoError" },
          "502": { "$ref": "#/components/responses/DemoError" },
          "503": { "$ref": "#/components/responses/DemoError" },
          "504": { "$ref": "#/components/responses/DemoError" },
          "default": { "$ref": "#/components/responses/DemoError" }
        }
      }
    },
    "/api/v1/demo/bookings": {
      "post": {
        "operationId": "createDemoBookingV1",
        "summary": "Create a demo booking",
        "description": "Creates an idempotent booking. The response returns a same-origin manageLink; the underlying credential is never returned directly.",
        "tags": ["Demo booking"],
        "security": [],
        "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateBookingRequest" } } } },
        "responses": {
          "200": { "description": "Existing booking identity for an idempotent replay. The one-time manage link is not reissued.", "headers": { "X-TelemetryOS-API-Version": { "$ref": "#/components/headers/ApiVersion" } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BookingReplay" } } } },
          "201": { "description": "Booking created.", "headers": { "X-TelemetryOS-API-Version": { "$ref": "#/components/headers/ApiVersion" } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Booking" } } } },
          "400": { "$ref": "#/components/responses/DemoError" },
          "403": { "$ref": "#/components/responses/DemoError" },
          "405": { "$ref": "#/components/responses/MethodNotAllowed" },
          "409": { "$ref": "#/components/responses/DemoError" },
          "429": { "$ref": "#/components/responses/DemoError" },
          "502": { "$ref": "#/components/responses/DemoError" },
          "503": { "$ref": "#/components/responses/DemoError" },
          "504": { "$ref": "#/components/responses/DemoError" },
          "default": { "$ref": "#/components/responses/DemoError" }
        }
      }
    },
    "/api/v1/demo/bookings/{bookingId}": {
      "parameters": [
        { "name": "bookingId", "in": "path", "required": true, "description": "Booking identifier from the original confirmation.", "schema": { "type": "string" } },
        { "$ref": "#/components/parameters/ManageLink" }
      ],
      "patch": {
        "operationId": "rescheduleDemoBookingV1",
        "summary": "Reschedule a demo booking",
        "tags": ["Demo booking"],
        "security": [],
        "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RescheduleBookingRequest" } } } },
        "responses": {
          "200": { "description": "Updated booking state.", "headers": { "X-TelemetryOS-API-Version": { "$ref": "#/components/headers/ApiVersion" } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Booking" } } } },
          "400": { "$ref": "#/components/responses/DemoError" },
          "401": { "$ref": "#/components/responses/DemoError" },
          "403": { "$ref": "#/components/responses/DemoError" },
          "405": { "$ref": "#/components/responses/MethodNotAllowed" },
          "409": { "$ref": "#/components/responses/DemoError" },
          "502": { "$ref": "#/components/responses/DemoError" },
          "503": { "$ref": "#/components/responses/DemoError" },
          "504": { "$ref": "#/components/responses/DemoError" },
          "default": { "$ref": "#/components/responses/DemoError" }
        }
      },
      "delete": {
        "operationId": "cancelDemoBookingV1",
        "summary": "Cancel a demo booking",
        "tags": ["Demo booking"],
        "security": [],
        "responses": {
          "200": { "description": "Cancellation state.", "headers": { "X-TelemetryOS-API-Version": { "$ref": "#/components/headers/ApiVersion" } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Cancellation" } } } },
          "401": { "$ref": "#/components/responses/DemoError" },
          "403": { "$ref": "#/components/responses/DemoError" },
          "405": { "$ref": "#/components/responses/MethodNotAllowed" },
          "409": { "$ref": "#/components/responses/DemoError" },
          "502": { "$ref": "#/components/responses/DemoError" },
          "503": { "$ref": "#/components/responses/DemoError" },
          "504": { "$ref": "#/components/responses/DemoError" },
          "default": { "$ref": "#/components/responses/DemoError" }
        }
      }
    }
  },
  "components": {
    "headers": {
      "ApiVersion": { "description": "Major version that handled the request.", "schema": { "type": "string", "const": "1" } }
    },
    "parameters": {
      "From": { "name": "from", "in": "query", "schema": { "type": "string", "format": "date-time" } },
      "To": { "name": "to", "in": "query", "schema": { "type": "string", "format": "date-time" } },
      "Timezone": { "name": "timezone", "in": "query", "schema": { "type": "string" }, "example": "America/Vancouver" },
      "OrganizerId": { "name": "organizerId", "in": "query", "schema": { "type": "string" } },
      "ManageLink": { "name": "X-Demo-Manage-Link", "in": "header", "required": true, "description": "Sealed credential from the fragment of the original same-origin manage link.", "schema": { "type": "string" } }
    },
    "responses": {
      "DemoError": { "description": "Structured demo error. The legacy errors array remains for existing clients.", "headers": { "X-TelemetryOS-API-Version": { "$ref": "#/components/headers/ApiVersion" } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DemoError" } } } },
      "MethodNotAllowed": { "description": "The method is not supported. Inspect the Allow header.", "headers": { "Allow": { "schema": { "type": "string" } }, "X-TelemetryOS-API-Version": { "$ref": "#/components/headers/ApiVersion" } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } },
      "ServerError": { "description": "The requested content could not be loaded.", "headers": { "X-TelemetryOS-API-Version": { "$ref": "#/components/headers/ApiVersion" } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } }
    },
    "schemas": {
      "Error": { "type": "object", "required": ["code", "message", "resolution_hint"], "properties": { "code": { "type": "string" }, "message": { "type": "string" }, "resolution_hint": { "type": "string" } }, "additionalProperties": false },
      "ErrorResponse": { "type": "object", "required": ["error"], "properties": { "error": { "$ref": "#/components/schemas/Error" } }, "additionalProperties": false },
      "DemoError": { "type": "object", "required": ["error", "errors"], "properties": { "error": { "$ref": "#/components/schemas/Error" }, "errors": { "type": "array", "minItems": 1, "items": { "type": "string" } } }, "additionalProperties": false },
      "ContentSummary": {
        "type": "object",
        "required": ["slug", "heading", "meta_description", "priority", "href"],
        "properties": { "slug": { "type": "string" }, "heading": { "type": "string" }, "meta_description": { "type": "string" }, "priority": { "type": "string", "enum": ["P1", "P2", "P3"] }, "href": { "type": "string", "pattern": "^/" } },
        "additionalProperties": false
      },
      "IndustrySummary": { "$ref": "#/components/schemas/ContentSummary" },
      "UseCaseSummary": { "$ref": "#/components/schemas/ContentSummary" },
      "ComparisonSummary": {
        "type": "object",
        "required": ["slug", "title", "meta_description", "competitor", "category", "href"],
        "properties": { "slug": { "type": "string" }, "title": { "type": "string" }, "meta_description": { "type": "string" }, "competitor": { "type": "string" }, "category": { "type": "string" }, "href": { "type": "string", "pattern": "^/" } },
        "additionalProperties": false
      },
      "DemoSlot": { "type": "object", "required": ["start", "end", "organizerId"], "properties": { "start": { "type": "string", "format": "date-time" }, "end": { "type": "string", "format": "date-time" }, "organizerId": { "type": "string" } }, "additionalProperties": false },
      "Availability": { "type": "object", "required": ["timezone", "durationMinutes", "from", "to", "slots"], "properties": { "timezone": { "type": "string" }, "durationMinutes": { "type": "integer", "minimum": 0 }, "from": { "type": "string", "format": "date-time" }, "to": { "type": "string", "format": "date-time" }, "slots": { "type": "array", "items": { "$ref": "#/components/schemas/DemoSlot" } } }, "additionalProperties": false },
      "Attendee": { "type": "object", "required": ["name", "email"], "properties": { "name": { "type": "string" }, "email": { "type": "string", "format": "email" }, "organization": { "type": "string" }, "phone": { "type": "string" }, "notes": { "type": "string" } }, "additionalProperties": false },
      "AcquisitionProfile": { "type": "object", "required": ["industry", "displays", "interested", "role"], "properties": { "industry": { "type": "string", "enum": ["Finance & Banking", "Higher Education", "Point of Care Advertising", "Quick Service Restaurants", "Retail", "Gaming, Casinos & Stadiums", "Other"] }, "displays": { "type": "string", "enum": ["1-9", "10-19", "20-49", "50-99", "100-499", "500+"] }, "interested": { "type": "string", "enum": ["Very Interested", "Just Looking"] }, "role": { "type": "string", "enum": ["Executive", "VP/Director", "Manager/Coordinator"] }, "heardAboutUs": { "type": "string" } }, "additionalProperties": false },
      "CreateBookingRequest": { "type": "object", "required": ["bookingId", "slotStart", "timezone", "attendee", "acquisitionProfile"], "properties": { "bookingId": { "type": "string" }, "slotStart": { "type": "string", "format": "date-time" }, "timezone": { "type": "string" }, "organizerId": { "type": "string" }, "attendee": { "$ref": "#/components/schemas/Attendee" }, "acquisitionProfile": { "$ref": "#/components/schemas/AcquisitionProfile" } }, "additionalProperties": false },
      "RescheduleBookingRequest": { "type": "object", "required": ["slotStart"], "properties": { "slotStart": { "type": "string", "format": "date-time" }, "timezone": { "type": "string" }, "organizerId": { "type": "string" } }, "additionalProperties": false },
      "Booking": { "type": "object", "required": ["bookingId", "state", "slotStart", "slotEnd", "timezone", "organizerId", "meetingUrl", "rescheduleSeq", "createdAt"], "properties": { "bookingId": { "type": "string" }, "state": { "type": "string", "enum": ["scheduled", "cancelled", "awaitingOutcome", "undispositioned", "held", "noShow"] }, "slotStart": { "type": "string", "format": "date-time" }, "slotEnd": { "type": "string", "format": "date-time" }, "timezone": { "type": "string" }, "organizerId": { "type": "string" }, "meetingUrl": { "type": "string", "format": "uri" }, "manageLink": { "type": "string", "description": "Same-origin path; the credential is kept in its URL fragment." }, "rescheduleSeq": { "type": "integer" }, "createdAt": { "type": "string", "format": "date-time" } }, "additionalProperties": false },
      "BookingReplay": { "type": "object", "required": ["bookingId"], "properties": { "bookingId": { "type": "string" }, "state": { "type": "string", "enum": ["scheduled", "cancelled", "awaitingOutcome", "undispositioned", "held", "noShow"] }, "slotStart": { "type": "string", "format": "date-time" }, "slotEnd": { "type": "string", "format": "date-time" }, "timezone": { "type": "string" }, "organizerId": { "type": "string" }, "meetingUrl": { "type": "string", "format": "uri" }, "rescheduleSeq": { "type": "integer" }, "createdAt": { "type": "string", "format": "date-time" } }, "additionalProperties": false },
      "Cancellation": { "type": "object", "required": ["bookingId", "state", "cancelSource", "cancelledAt"], "properties": { "bookingId": { "type": "string" }, "state": { "type": "string", "const": "cancelled" }, "cancelSource": { "type": "string", "enum": ["prospect", "cs", "provider"] }, "cancelledAt": { "type": "string", "format": "date-time" } }, "additionalProperties": false }
    }
  }
}
