{"openapi":"3.1.0","info":{"title":"Bisquit.Host public API","version":"1.0.0","summary":"Public plan, pricing and documentation data for bisquit.host.","description":"Read-only endpoints backing the bisquit.host site. No authentication is required and no rate limit is enforced; plan data is cached server-side for one hour. Errors are returned as JSON with a stable `code`, a `message` and a `hint`.","contact":{"name":"Bisquit.Host support","url":"https://my.bisquit.host/submitticket.php"}},"servers":[{"url":"https://bisquit.host","description":"Production"}],"externalDocs":{"description":"Developer portal","url":"https://bisquit.host/developers"},"security":[],"tags":[{"name":"plans","description":"Hosting plans, locations and prices."},{"name":"documentation","description":"Wiki articles and full-text search."},{"name":"meta","description":"Machine-readable descriptions of the site itself."}],"paths":{"/api/game":{"get":{"operationId":"getGamePlans","summary":"Game server plans","description":"Public game server plans with pricing, hardware limits and stock. Cached for one hour.","tags":["plans"],"parameters":[{"name":"nocache","in":"query","description":"Set to `true` to bypass the one-hour server-side cache.","required":false,"schema":{"type":"string","enum":["true"]}}],"responses":{"200":{"description":"Game server plans.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GameData"}}}},"405":{"description":"The path does not accept this HTTP method.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"The upstream billing API is unreachable or returned an error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/cloud":{"get":{"operationId":"getCloudPlans","summary":"VDS plans","description":"Public vds plans with pricing, hardware limits and stock. Cached for one hour.","tags":["plans"],"parameters":[{"name":"nocache","in":"query","description":"Set to `true` to bypass the one-hour server-side cache.","required":false,"schema":{"type":"string","enum":["true"]}}],"responses":{"200":{"description":"VDS plans.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloudData"}}}},"405":{"description":"The path does not accept this HTTP method.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"The upstream billing API is unreachable or returned an error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/bot":{"get":{"operationId":"getBotPlans","summary":"Bot hosting plans","description":"Public bot hosting plans with pricing, hardware limits and stock. Cached for one hour.","tags":["plans"],"parameters":[{"name":"nocache","in":"query","description":"Set to `true` to bypass the one-hour server-side cache.","required":false,"schema":{"type":"string","enum":["true"]}}],"responses":{"200":{"description":"Bot hosting plans.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BotData"}}}},"405":{"description":"The path does not accept this HTTP method.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"The upstream billing API is unreachable or returned an error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/web":{"get":{"operationId":"getWebPlans","summary":"Web hosting plans","description":"Public web hosting plans with pricing, hardware limits and stock. Cached for one hour.","tags":["plans"],"parameters":[{"name":"nocache","in":"query","description":"Set to `true` to bypass the one-hour server-side cache.","required":false,"schema":{"type":"string","enum":["true"]}}],"responses":{"200":{"description":"Web hosting plans.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebData"}}}},"405":{"description":"The path does not accept this HTTP method.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"The upstream billing API is unreachable or returned an error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/wiki":{"get":{"operationId":"listWikiArticles","summary":"List documentation articles","description":"Every documentation article with its slug, title, section and absolute URL, sorted by slug.","tags":["documentation"],"responses":{"200":{"description":"The article index.","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/WikiArticleSummary"}}}}},"405":{"description":"The path does not accept this HTTP method.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/wiki/{slug}":{"get":{"operationId":"getWikiArticle","summary":"Get one article as markdown","description":"Raw markdown of an article with frontmatter stripped and page links made absolute. Image and video references are left untouched: they resolve through the build pipeline and have no stable URL of their own.","tags":["documentation"],"parameters":[{"name":"slug","in":"path","description":"Article slug, may contain slashes, e.g. `services/faq`.","required":true,"schema":{"type":"string","examples":["services/faq"]}}],"responses":{"200":{"description":"The article.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WikiArticleContent"}}}},"404":{"description":"The requested resource does not exist.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"405":{"description":"The path does not accept this HTTP method.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/wiki/search":{"post":{"operationId":"searchWiki","summary":"Full-text search over the documentation","description":"Russian and English full-text search. An empty or too-short query returns zero results rather than an error. At most eight results are returned.","tags":["documentation"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"query":{"type":"string","description":"Search query, truncated to 120 characters."}},"required":["query"]}}}},"responses":{"200":{"description":"Ranked results.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WikiSearchResponse"}}}},"400":{"description":"The request body was not a JSON object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"405":{"description":"The path does not accept this HTTP method.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/openapi.json":{"get":{"operationId":"getOpenApiDocument","summary":"This document","description":"The OpenAPI description of the public API. Also served at `/api/openapi.json`.","tags":["meta"],"responses":{"200":{"description":"An OpenAPI 3.1 document.","content":{"application/json":{"schema":{"type":"object"}}}},"405":{"description":"The path does not accept this HTTP method.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}},"components":{"schemas":{"Price":{"type":"object","description":"A price in one currency, in minor units (`22900` = 229.00 RUB).","properties":{"price":{"type":"integer","description":"Amount in minor units."},"currency":{"type":"string","description":"ISO 4217 currency code.","examples":["RUB","EUR"]}},"required":["price","currency"]},"Error":{"type":"object","description":"Error body returned by every endpoint and by any non-HTML 4xx/5xx response.","properties":{"error":{"type":"string","description":"Same text as `message`, kept for backwards compatibility."},"code":{"type":"string","description":"Stable machine-readable error code.","enum":["bad_request","not_found","method_not_allowed","not_acceptable","upstream_unavailable","internal_error"]},"message":{"type":"string","description":"Human-readable description of the failure."},"status":{"type":"integer","description":"HTTP status code, repeated in the body."},"hint":{"type":"string","description":"What the caller can do about it."},"documentation_url":{"type":"string","format":"uri","description":"Link to this document."}},"required":["error","code","message","status","hint","documentation_url"]},"GameLocation":{"type":"object","properties":{"id":{"type":"integer","description":"Location identifier referenced by `locationId`."},"name":{"type":"string","description":"Human-readable location name."},"flagUrl":{"type":["string","null"],"format":"uri","description":"Country flag image."},"remarks":{"type":"array","description":"Notes shown next to the location.","items":{"type":"string"}}},"required":["id","name","flagUrl","remarks"]},"CloudLocation":{"type":"object","properties":{"id":{"type":"integer","description":"Location identifier referenced by `locationId`."},"name":{"type":"string","description":"Human-readable location name."},"flagUrl":{"type":["string","null"],"format":"uri","description":"Country flag image."},"remarks":{"type":"array","description":"Notes shown next to the location.","items":{"type":"string"}}},"required":["id","name","flagUrl","remarks"]},"BotLocation":{"type":"object","properties":{"id":{"type":"integer","description":"Location identifier referenced by `locationId`."},"name":{"type":"string","description":"Human-readable location name."},"locations":{"type":"array","description":"Node identifiers behind this location.","items":{"type":"string"}},"portRange":{"type":"array","description":"Port ranges available to bots, e.g. `25566-25800`.","items":{"type":"string"}},"remarks":{"type":"array","description":"Notes shown next to the location.","items":{"type":"string"}},"flagUrl":{"type":["string","null"],"format":"uri","description":"Country flag image."}},"required":["id","name","locations","portRange","remarks","flagUrl"]},"GamePackage":{"type":"object","properties":{"id":{"type":"integer","description":"Plan identifier."},"name":{"type":"string","description":"Plan name."},"locationId":{"type":"integer","description":"Identifier of the location this plan runs in."},"price":{"type":"array","description":"One entry per supported currency.","items":{"$ref":"#/components/schemas/Price"}},"cpu":{"type":"integer","description":"Allocated CPU cores."},"cpuName":{"type":["string","null"],"description":"Model of the host CPU."},"memory":{"type":"integer","description":"Memory in MiB."},"disk":{"type":"integer","description":"Disk in MiB."},"diskType":{"type":["string","null"],"description":"Disk technology, e.g. `NVMe`."},"bonusBalanceAllowed":{"type":"boolean","description":"Whether bonus balance can pay for this plan."},"inStock":{"type":"boolean","description":"Whether the plan can be ordered right now."},"whmcsLink":{"type":["string","null"],"description":"Direct order URL in the client area, when available."},"memoryType":{"type":"string","description":"Memory technology, e.g. `DDR5`."},"network":{"type":"integer","description":"Network throughput."},"networkType":{"type":["string","null"],"description":"Unit of `network`, e.g. `MBit/s`."},"nests":{"type":"array","description":"Pterodactyl nest identifiers this plan can run.","items":{"type":"integer"}},"allocations":{"type":"integer","description":"Included port allocations."},"databases":{"type":"integer","description":"Included databases."},"backups":{"type":"integer","description":"Included backup slots."}},"required":["id","name","locationId","price","cpu","memory","disk","inStock"]},"CloudPackage":{"type":"object","properties":{"id":{"type":"integer","description":"Plan identifier."},"name":{"type":"string","description":"Plan name."},"locationId":{"type":"integer","description":"Identifier of the location this plan runs in."},"price":{"type":"array","description":"One entry per supported currency.","items":{"$ref":"#/components/schemas/Price"}},"cpu":{"type":"integer","description":"Allocated CPU cores."},"cpuName":{"type":["string","null"],"description":"Model of the host CPU."},"memory":{"type":"integer","description":"Memory in MiB."},"disk":{"type":"integer","description":"Disk in MiB."},"diskType":{"type":["string","null"],"description":"Disk technology, e.g. `NVMe`."},"bonusBalanceAllowed":{"type":"boolean","description":"Whether bonus balance can pay for this plan."},"inStock":{"type":"boolean","description":"Whether the plan can be ordered right now."},"whmcsLink":{"type":["string","null"],"description":"Direct order URL in the client area, when available."},"network":{"type":"integer","description":"Network throughput."},"networkType":{"type":["string","null"],"description":"Unit of `network`, e.g. `MBit/s`."},"windowsAllowed":{"type":"boolean","description":"Whether Windows can be installed."},"antiSpoofing":{"type":"boolean","description":"Whether anti-spoofing filtering is applied."}},"required":["id","name","locationId","price","cpu","memory","disk","inStock"]},"BotPackage":{"type":"object","properties":{"id":{"type":"integer","description":"Plan identifier."},"name":{"type":"string","description":"Plan name."},"locationId":{"type":"integer","description":"Identifier of the location this plan runs in."},"price":{"type":"array","description":"One entry per supported currency.","items":{"$ref":"#/components/schemas/Price"}},"cpu":{"type":"integer","description":"Allocated CPU cores."},"cpuName":{"type":["string","null"],"description":"Model of the host CPU."},"memory":{"type":"integer","description":"Memory in MiB."},"disk":{"type":"integer","description":"Disk in MiB."},"diskType":{"type":["string","null"],"description":"Disk technology, e.g. `NVMe`."},"bonusBalanceAllowed":{"type":"boolean","description":"Whether bonus balance can pay for this plan."},"inStock":{"type":"boolean","description":"Whether the plan can be ordered right now."},"whmcsLink":{"type":["string","null"],"description":"Direct order URL in the client area, when available."},"memoryType":{"type":"string","description":"Memory technology, e.g. `DDR5`."},"nests":{"type":"array","description":"Pterodactyl nest identifiers this plan can run.","items":{"type":"integer"}},"allocations":{"type":"integer","description":"Included port allocations."},"databases":{"type":"integer","description":"Included databases."},"backups":{"type":"integer","description":"Included backup slots."}},"required":["id","name","locationId","price","cpu","memory","disk","inStock"]},"WebPackage":{"type":"object","properties":{"id":{"type":"integer","description":"Plan identifier."},"name":{"type":"string","description":"Plan name."},"price":{"type":"array","description":"One entry per supported currency.","items":{"$ref":"#/components/schemas/Price"}},"site":{"type":"integer","description":"Number of sites included."},"databases":{"type":"integer","description":"Included databases."},"disk":{"type":"integer","description":"Disk in MiB."},"diskType":{"type":["string","null"],"description":"Disk technology, e.g. `NVMe`."},"whmcsLink":{"type":["string","null"],"description":"Direct order URL in the client area, when available."}},"required":["id","name","price","site","databases","disk"]},"GameData":{"type":"object","properties":{"packages":{"type":"array","items":{"$ref":"#/components/schemas/GamePackage"}},"locations":{"type":"array","items":{"$ref":"#/components/schemas/GameLocation"}}},"required":["packages","locations"]},"CloudData":{"type":"object","properties":{"packages":{"type":"array","items":{"$ref":"#/components/schemas/CloudPackage"}},"locations":{"type":"array","items":{"$ref":"#/components/schemas/CloudLocation"}}},"required":["packages","locations"]},"BotData":{"type":"object","properties":{"packages":{"type":"array","items":{"$ref":"#/components/schemas/BotPackage"}},"locations":{"type":"array","items":{"$ref":"#/components/schemas/BotLocation"}}},"required":["packages","locations"]},"WebData":{"type":"object","properties":{"packages":{"type":"array","items":{"$ref":"#/components/schemas/WebPackage"}}},"required":["packages"]},"WikiArticleSummary":{"type":"object","properties":{"slug":{"type":"string","description":"Article slug, e.g. `services/faq`."},"title":{"type":"string","description":"Article title."},"section":{"type":["string","null"],"description":"Navigation section, `null` when the article is not in the sidebar."},"url":{"type":"string","format":"uri","description":"Absolute URL of the rendered page."}},"required":["slug","title","section","url"]},"WikiArticleContent":{"type":"object","properties":{"slug":{"type":"string","description":"Article slug."},"title":{"type":"string","description":"Article title."},"url":{"type":"string","format":"uri","description":"Absolute URL of the rendered page."},"markdown":{"type":"string","description":"Article body as markdown, frontmatter stripped."}},"required":["slug","title","url","markdown"]},"WikiSearchResponse":{"type":"object","properties":{"query":{"type":"string","description":"The normalised query that was executed."},"results":{"type":"array","items":{"$ref":"#/components/schemas/WikiSearchResult"}},"total":{"type":"integer","description":"Number of matches before the eight-result cut-off."}},"required":["query","results","total"]},"WikiSearchResult":{"type":"object","properties":{"slug":{"type":"string","description":"Article slug."},"title":{"type":"string","description":"Article title."},"section":{"type":"string","description":"Navigation section."},"href":{"type":"string","description":"Site-relative link to the article."},"excerpt":{"type":"array","description":"Excerpt split into runs, each flagged as matching the query or not.","items":{"$ref":"#/components/schemas/WikiSearchExcerptPart"}},"score":{"type":"number","description":"Relevance score, higher is better."}},"required":["slug","title","section","href","excerpt","score"]},"WikiSearchExcerptPart":{"type":"object","properties":{"text":{"type":"string","description":"Excerpt fragment."},"match":{"type":"boolean","description":"Whether the fragment matched the query."}},"required":["text","match"]}}}}