{
  "openapi": "3.1.0",
  "info": {
    "title": "Wild Manual public API",
    "version": "0.1.0",
    "description": "Read-only public records plus one inquiry submission route. No payment, project acceptance, or privileged action is exposed.",
    "contact": {
      "name": "Kiren Srinivasan",
      "email": "kiren@fantasymetals.com",
      "url": "https://wildmanual.com/contact/"
    }
  },
  "servers": [
    {
      "url": "https://wildmanual.com"
    }
  ],
  "tags": [
    {
      "name": "Public records",
      "description": "Read-only public information."
    },
    {
      "name": "Inquiry",
      "description": "Human-reviewed project inquiry."
    },
    {
      "name": "Operations",
      "description": "Runtime health only."
    }
  ],
  "paths": {
    "/health": {
      "get": {
        "tags": [
          "Operations"
        ],
        "operationId": "getHealth",
        "summary": "Check runtime health",
        "responses": {
          "200": {
            "description": "Runtime is ready to receive requests.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Health"
                }
              }
            }
          }
        }
      }
    },
    "/offers.json": {
      "get": {
        "tags": [
          "Public records"
        ],
        "operationId": "listOffers",
        "summary": "List current public offers",
        "responses": {
          "200": {
            "description": "Prices, scope, checks, and exclusions from the public content model.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          }
        }
      }
    },
    "/proof.json": {
      "get": {
        "tags": [
          "Public records"
        ],
        "operationId": "listProof",
        "summary": "List public proof records and known limits",
        "responses": {
          "200": {
            "description": "Public repository proof records.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          }
        }
      }
    },
    "/api/inquiries": {
      "post": {
        "tags": [
          "Inquiry"
        ],
        "operationId": "submitInquiry",
        "summary": "Submit a project inquiry for human review",
        "description": "Requires explicit confirmation and an idempotency key. Submission does not accept a project, authorize access, or authorize payment.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Inquiry"
              }
            }
          }
        },
        "responses": {
          "202": {
            "description": "Inquiry received for human review.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InquiryReceipt"
                }
              }
            }
          },
          "400": {
            "description": "Confirmation, JSON, or field validation failed."
          },
          "413": {
            "description": "Request body exceeds 32,768 bytes."
          },
          "415": {
            "description": "Content type must be application/json."
          },
          "429": {
            "description": "Rate limit reached. Retry-After is returned."
          },
          "503": {
            "description": "Delivery is not configured or is temporarily unavailable."
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "Health": {
        "type": "object",
        "required": [
          "ok",
          "service",
          "version"
        ],
        "properties": {
          "ok": {
            "type": "boolean",
            "const": true
          },
          "service": {
            "type": "string",
            "const": "wild-manual"
          },
          "version": {
            "type": "string"
          }
        }
      },
      "Inquiry": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "email",
          "stuck",
          "finished",
          "confirm",
          "idempotency_key"
        ],
        "properties": {
          "email": {
            "type": "string",
            "format": "email",
            "maxLength": 254
          },
          "stuck": {
            "type": "string",
            "minLength": 20,
            "maxLength": 2000
          },
          "finished": {
            "type": "string",
            "minLength": 20,
            "maxLength": 2000
          },
          "current_state": {
            "type": "string",
            "format": "uri",
            "maxLength": 500
          },
          "budget": {
            "type": "string",
            "enum": [
              "Not sure yet",
              "$1,500 to $2,500",
              "$2,500 to $5,000",
              "$5,000 to $12,500",
              "$12,500 or more"
            ]
          },
          "target_date": {
            "type": "string",
            "maxLength": 100
          },
          "confirm": {
            "type": "boolean",
            "const": true,
            "description": "Explicitly confirms submission of an inquiry only."
          },
          "idempotency_key": {
            "type": "string",
            "minLength": 16,
            "maxLength": 100,
            "pattern": "^[A-Za-z0-9_-]+$"
          }
        }
      },
      "InquiryReceipt": {
        "type": "object",
        "required": [
          "status",
          "message"
        ],
        "properties": {
          "status": {
            "type": "string",
            "const": "received"
          },
          "message": {
            "type": "string"
          }
        }
      }
    }
  },
  "x-human-fallback": {
    "form": "https://wildmanual.com/contact/",
    "email": "mailto:kiren@fantasymetals.com"
  },
  "x-payment-info": null
}