{
  "openapi": "3.1.0",
  "info": {
    "title": "konstant.cloud site API",
    "version": "1.0.0",
    "description": "The public API surface of the konstant.cloud marketing site. It is deliberately small: one endpoint that requests a conversation with the Konstant team. The real developer surface for building on Konstant is the Boombox developer kit, installed from npm as @konstantdotcloud/boombox; its guide lives at https://boombox.konstant.cloud/docs and its local MCP servers are emitted by `project init`. Agents looking to build products should start there, not here.",
    "contact": {
      "name": "Konstant",
      "email": "pilot@konstant.cloud",
      "url": "https://konstant.cloud/contact"
    }
  },
  "servers": [
    {
      "url": "https://konstant.cloud"
    }
  ],
  "externalDocs": {
    "description": "Building on Boombox, the Konstant developer kit",
    "url": "https://boombox.konstant.cloud/docs"
  },
  "paths": {
    "/api/waitlist": {
      "post": {
        "operationId": "requestConversation",
        "summary": "Request a conversation with the Konstant team",
        "description": "Sends the visitor's email to the Konstant team, who reply directly. No database is written and no account is created; the only effect is one notification email. There is no authentication; the endpoint is rate-limited at the platform layer.",
        "tags": [
          "contact"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ConversationRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The request was sent to the team.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConversationAccepted"
                }
              }
            }
          },
          "400": {
            "description": "The request body was missing or the email address did not look valid.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "405": {
            "description": "A method other than POST was used.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "The notification service was unavailable; the request was not sent and should be retried later or emailed to pilot@konstant.cloud.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "502": {
            "description": "The notification service rejected the send; the request was not sent.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string",
              "maxLength": 255
            },
            "description": "Optional client-generated key. A retry carrying the same key within 24 hours is answered from the first result instead of sending a second notification. Dedupe is best-effort (in-memory on warm instances); the worst case of a missed dedupe is one duplicate internal email, never a duplicate charge or record."
          }
        ]
      }
    }
  },
  "components": {
    "schemas": {
      "ConversationRequest": {
        "type": "object",
        "required": [
          "email"
        ],
        "properties": {
          "email": {
            "type": "string",
            "format": "email",
            "description": "The address the Konstant team should reply to."
          },
          "source": {
            "type": "string",
            "description": "Optional label for the page or context the request came from."
          }
        }
      },
      "ConversationAccepted": {
        "type": "object",
        "required": [
          "success"
        ],
        "properties": {
          "success": {
            "type": "boolean",
            "const": true
          }
        }
      },
      "Error": {
        "type": "object",
        "required": [
          "error"
        ],
        "properties": {
          "error": {
            "type": "string",
            "description": "A human-readable reason the request was not accepted."
          }
        }
      }
    }
  }
}