{
  "openapi": "3.1.0",
  "info": {
    "title": "Galleon Public Website API",
    "version": "1.0.0",
    "description": "Read-only public website resources for Operator by Galleon. Send Accept: text/markdown on page requests for Markdown or Accept: text/html for HTML. This specification does not expose private portfolio actions, API-key authentication, or an MCP server.",
    "contact": {
      "name": "Galleon",
      "url": "https://www.galleon.io/contact",
      "email": "info@galleon.io"
    }
  },
  "servers": [
    {
      "url": "https://www.galleon.io"
    }
  ],
  "security": [],
  "externalDocs": {
    "description": "Galleon developer resources and authentication guidance",
    "url": "https://www.galleon.io/developers"
  },
  "paths": {
    "/": {
      "get": {
        "summary": "Operator overview",
        "operationId": "getHome",
        "responses": {
          "200": {
            "description": "Public page; negotiate the representation using the HTTP Accept header.",
            "headers": {
              "Vary": {
                "schema": {
                  "type": "string"
                },
                "description": "Includes Accept and Accept-Encoding."
              }
            },
            "content": {
              "text/html": {
                "schema": {
                  "type": "string"
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "404": {
            "description": "Page not found. Markdown requests receive recovery links.",
            "content": {
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "406": {
            "description": "Neither HTML nor Markdown is acceptable."
          },
          "502": {
            "description": "Source content could not be retrieved for Markdown conversion."
          },
          "503": {
            "description": "Markdown content is temporarily unavailable. Retry later."
          }
        }
      }
    },
    "/about": {
      "get": {
        "summary": "About Galleon",
        "operationId": "getAbout",
        "responses": {
          "200": {
            "description": "Public page; negotiate the representation using the HTTP Accept header.",
            "headers": {
              "Vary": {
                "schema": {
                  "type": "string"
                },
                "description": "Includes Accept and Accept-Encoding."
              }
            },
            "content": {
              "text/html": {
                "schema": {
                  "type": "string"
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "404": {
            "description": "Page not found. Markdown requests receive recovery links.",
            "content": {
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "406": {
            "description": "Neither HTML nor Markdown is acceptable."
          },
          "502": {
            "description": "Source content could not be retrieved for Markdown conversion."
          },
          "503": {
            "description": "Markdown content is temporarily unavailable. Retry later."
          }
        }
      }
    },
    "/developers": {
      "get": {
        "summary": "Galleon developer documentation",
        "operationId": "getDevelopers",
        "responses": {
          "200": {
            "description": "Public page; negotiate the representation using the HTTP Accept header.",
            "headers": {
              "Vary": {
                "schema": {
                  "type": "string"
                },
                "description": "Includes Accept and Accept-Encoding."
              }
            },
            "content": {
              "text/html": {
                "schema": {
                  "type": "string"
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "404": {
            "description": "Page not found. Markdown requests receive recovery links.",
            "content": {
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "406": {
            "description": "Neither HTML nor Markdown is acceptable."
          },
          "502": {
            "description": "Source content could not be retrieved for Markdown conversion."
          },
          "503": {
            "description": "Markdown content is temporarily unavailable. Retry later."
          }
        }
      }
    },
    "/contact": {
      "get": {
        "summary": "Contact Galleon",
        "operationId": "getContact",
        "responses": {
          "200": {
            "description": "Public page; negotiate the representation using the HTTP Accept header.",
            "headers": {
              "Vary": {
                "schema": {
                  "type": "string"
                },
                "description": "Includes Accept and Accept-Encoding."
              }
            },
            "content": {
              "text/html": {
                "schema": {
                  "type": "string"
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "404": {
            "description": "Page not found. Markdown requests receive recovery links.",
            "content": {
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "406": {
            "description": "Neither HTML nor Markdown is acceptable."
          },
          "502": {
            "description": "Source content could not be retrieved for Markdown conversion."
          },
          "503": {
            "description": "Markdown content is temporarily unavailable. Retry later."
          }
        }
      }
    },
    "/privacy": {
      "get": {
        "summary": "Galleon privacy policy",
        "operationId": "getPrivacy",
        "responses": {
          "200": {
            "description": "Public page; negotiate the representation using the HTTP Accept header.",
            "headers": {
              "Vary": {
                "schema": {
                  "type": "string"
                },
                "description": "Includes Accept and Accept-Encoding."
              }
            },
            "content": {
              "text/html": {
                "schema": {
                  "type": "string"
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "404": {
            "description": "Page not found. Markdown requests receive recovery links.",
            "content": {
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "406": {
            "description": "Neither HTML nor Markdown is acceptable."
          },
          "502": {
            "description": "Source content could not be retrieved for Markdown conversion."
          },
          "503": {
            "description": "Markdown content is temporarily unavailable. Retry later."
          }
        }
      }
    },
    "/terms": {
      "get": {
        "summary": "Galleon terms",
        "operationId": "getTerms",
        "responses": {
          "200": {
            "description": "Public page; negotiate the representation using the HTTP Accept header.",
            "headers": {
              "Vary": {
                "schema": {
                  "type": "string"
                },
                "description": "Includes Accept and Accept-Encoding."
              }
            },
            "content": {
              "text/html": {
                "schema": {
                  "type": "string"
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "404": {
            "description": "Page not found. Markdown requests receive recovery links.",
            "content": {
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "406": {
            "description": "Neither HTML nor Markdown is acceptable."
          },
          "502": {
            "description": "Source content could not be retrieved for Markdown conversion."
          },
          "503": {
            "description": "Markdown content is temporarily unavailable. Retry later."
          }
        }
      }
    },
    "/faq": {
      "get": {
        "summary": "Operator FAQ",
        "operationId": "getFaq",
        "responses": {
          "200": {
            "description": "Public page; negotiate the representation using the HTTP Accept header.",
            "headers": {
              "Vary": {
                "schema": {
                  "type": "string"
                },
                "description": "Includes Accept and Accept-Encoding."
              }
            },
            "content": {
              "text/html": {
                "schema": {
                  "type": "string"
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "404": {
            "description": "Page not found. Markdown requests receive recovery links.",
            "content": {
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "406": {
            "description": "Neither HTML nor Markdown is acceptable."
          },
          "502": {
            "description": "Source content could not be retrieved for Markdown conversion."
          },
          "503": {
            "description": "Markdown content is temporarily unavailable. Retry later."
          }
        }
      }
    },
    "/pricing": {
      "get": {
        "summary": "Operator pricing",
        "operationId": "getPricing",
        "responses": {
          "200": {
            "description": "Public page; negotiate the representation using the HTTP Accept header.",
            "headers": {
              "Vary": {
                "schema": {
                  "type": "string"
                },
                "description": "Includes Accept and Accept-Encoding."
              }
            },
            "content": {
              "text/html": {
                "schema": {
                  "type": "string"
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "404": {
            "description": "Page not found. Markdown requests receive recovery links.",
            "content": {
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "406": {
            "description": "Neither HTML nor Markdown is acceptable."
          },
          "502": {
            "description": "Source content could not be retrieved for Markdown conversion."
          },
          "503": {
            "description": "Markdown content is temporarily unavailable. Retry later."
          }
        }
      }
    },
    "/rent-monitoring": {
      "get": {
        "summary": "Rent monitoring",
        "operationId": "getRentMonitoring",
        "responses": {
          "200": {
            "description": "Public page; negotiate the representation using the HTTP Accept header.",
            "headers": {
              "Vary": {
                "schema": {
                  "type": "string"
                },
                "description": "Includes Accept and Accept-Encoding."
              }
            },
            "content": {
              "text/html": {
                "schema": {
                  "type": "string"
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "404": {
            "description": "Page not found. Markdown requests receive recovery links.",
            "content": {
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "406": {
            "description": "Neither HTML nor Markdown is acceptable."
          },
          "502": {
            "description": "Source content could not be retrieved for Markdown conversion."
          },
          "503": {
            "description": "Markdown content is temporarily unavailable. Retry later."
          }
        }
      }
    },
    "/buy-box": {
      "get": {
        "summary": "Buy box",
        "operationId": "getBuyBox",
        "responses": {
          "200": {
            "description": "Public page; negotiate the representation using the HTTP Accept header.",
            "headers": {
              "Vary": {
                "schema": {
                  "type": "string"
                },
                "description": "Includes Accept and Accept-Encoding."
              }
            },
            "content": {
              "text/html": {
                "schema": {
                  "type": "string"
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "404": {
            "description": "Page not found. Markdown requests receive recovery links.",
            "content": {
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "406": {
            "description": "Neither HTML nor Markdown is acceptable."
          },
          "502": {
            "description": "Source content could not be retrieved for Markdown conversion."
          },
          "503": {
            "description": "Markdown content is temporarily unavailable. Retry later."
          }
        }
      }
    },
    "/lender-ready": {
      "get": {
        "summary": "Lender-ready reports",
        "operationId": "getLenderReady",
        "responses": {
          "200": {
            "description": "Public page; negotiate the representation using the HTTP Accept header.",
            "headers": {
              "Vary": {
                "schema": {
                  "type": "string"
                },
                "description": "Includes Accept and Accept-Encoding."
              }
            },
            "content": {
              "text/html": {
                "schema": {
                  "type": "string"
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "404": {
            "description": "Page not found. Markdown requests receive recovery links.",
            "content": {
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "406": {
            "description": "Neither HTML nor Markdown is acceptable."
          },
          "502": {
            "description": "Source content could not be retrieved for Markdown conversion."
          },
          "503": {
            "description": "Markdown content is temporarily unavailable. Retry later."
          }
        }
      }
    },
    "/blog": {
      "get": {
        "summary": "Galleon blog",
        "operationId": "getBlog",
        "responses": {
          "200": {
            "description": "Public page; negotiate the representation using the HTTP Accept header.",
            "headers": {
              "Vary": {
                "schema": {
                  "type": "string"
                },
                "description": "Includes Accept and Accept-Encoding."
              }
            },
            "content": {
              "text/html": {
                "schema": {
                  "type": "string"
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "404": {
            "description": "Page not found. Markdown requests receive recovery links.",
            "content": {
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "406": {
            "description": "Neither HTML nor Markdown is acceptable."
          },
          "502": {
            "description": "Source content could not be retrieved for Markdown conversion."
          },
          "503": {
            "description": "Markdown content is temporarily unavailable. Retry later."
          }
        }
      }
    },
    "/blog/{slug}": {
      "get": {
        "summary": "Published Galleon article",
        "operationId": "getBlogSlug",
        "responses": {
          "200": {
            "description": "Public page; negotiate the representation using the HTTP Accept header.",
            "headers": {
              "Vary": {
                "schema": {
                  "type": "string"
                },
                "description": "Includes Accept and Accept-Encoding."
              }
            },
            "content": {
              "text/html": {
                "schema": {
                  "type": "string"
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "404": {
            "description": "Page not found. Markdown requests receive recovery links.",
            "content": {
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "406": {
            "description": "Neither HTML nor Markdown is acceptable."
          },
          "502": {
            "description": "Source content could not be retrieved for Markdown conversion."
          },
          "503": {
            "description": "Markdown content is temporarily unavailable. Retry later."
          }
        },
        "parameters": [
          {
            "name": "slug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "A published article slug discovered in the sitemap."
          }
        ]
      }
    },
    "/llms.txt": {
      "get": {
        "summary": "Galleon agent instructions",
        "operationId": "getAgentInstructions",
        "responses": {
          "200": {
            "description": "Galleon agent instructions",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        }
      }
    },
    "/sitemap.xml": {
      "get": {
        "summary": "Galleon sitemap",
        "operationId": "getSitemap",
        "responses": {
          "200": {
            "description": "Galleon sitemap",
            "content": {
              "application/xml": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        }
      }
    }
  }
}
