Properties
| Name | Type | Description |
|---|---|---|
| hostname | string | |
| host_binding_id | stringnull | |
| binding_status | stringnull | |
| project_id | stringnull | |
| channel | stringnull | |
| release_id | stringnull | |
| release_generation | integernull | |
| route_manifest_sha256 | stringnull | |
| static_manifest_sha256 | stringnull | |
| static_manifest_metadata | object | |
| normalized_path | stringnull | |
| static_continuity | object | |
| current_host_release_id | stringnull | |
| current_host_release_generation | integernull | |
| match | string | |
| static_sha256 | stringnull | |
| asset_path | stringnull | Private release static asset path backing the matched public path. Present only on authenticated diagnostics. |
| reachability_authority | stringnull | |
| direct | booleannull | |
| content_type | stringnull | |
| cache_class | stringnull | |
| cache_policy | stringnull | |
| authorized | boolean | |
| authorization_result | stringnull | Static CAS authorization/health result when a static object was matched, or the reason no static object is authorized. |
| cas_object | objectnull | CAS object health for matched static objects. Never exposes internal storage URLs. |
| response_variant | objectnull | Present for transformed/static HTML responses whose public response identity can vary by hostname. |
| fallback_state | string | |
| error_code | stringnull | |
| legacy_immutable_risk | array | |
| embedding | object | The framing opt-in of the release this host serves, as catalog keys, or null (deny). |
| noindex | boolean | Whether the release this host serves declared `site.noindex` (every response carries `X-Robots-Tag: noindex, nofollow, nosnippet`). |
| emergency_fallback | object | |
| edge_propagation | object | Binding propagation diagnosis for hosts served through eventually consistent edge stores. Fresh bindings can report propagating or sync_pending to explain an expected public URL edge miss. |
| allow | arraynull | |
| route_pattern | stringnull | |
| target_type | stringnull | |
| target_name | stringnull | |
| target_file | stringnull | |
| host_kind | stringnull | `deployment` when the host is a deployment host (`dpl-*.sites.run402.com`); absent for stable hosts. |
| deployment_id | stringnull | Deployment hosts: the `dpl_` deployment the host serves. |
| deployment_status | stringnull | Deployment hosts: `live` while the active release or a subdomain serves the deployment, `retained` once replaced (serving until `origin_available_until`), `retired` after that deadline (every request |
| origin_available_until | stringnull | Deployment hosts: when a replaced deployment stops (or stopped) serving; null while live. |
| origin_retention_seconds | integernull | Deployment hosts: how long a replaced deployment keeps serving (3600). |
| path_evaluated | boolean | Deployment hosts: `true` when the path was resolved against the deployment's release (its static manifest and public paths); `false` for a retired host or a deployment no release names, reported per h |
| route_gates | array | Function routes: what stands before the function's response (`require_auth`, `require_role`, `priced`); empty when anyone reaches it. `authorized: true` on a function route means the host dispatches t |
| routes_active | boolean | Deployment hosts: `false` once the deployment was replaced; its routes no longer run there and a matched route reports result 404. |
| result | integer |
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://artifacts.apis.io/run402-com/json-schema/run402-com-stable-host-resolve-response-schema.json",
"title": "StableHostResolveResponse",
"x-generated": "2026-10-29",
"x-method": "derived",
"x-generator": "derive-json-schema.py",
"x-source": "openapi/run402-com-openapi.json#/components/schemas/StableHostResolveResponse",
"type": "object",
"required": [
"hostname",
"result",
"match",
"authorized",
"fallback_state"
],
"properties": {
"hostname": {
"type": "string"
},
"host_binding_id": {
"type": [
"string",
"null"
]
},
"binding_status": {
"type": [
"string",
"null"
]
},
"project_id": {
"type": [
"string",
"null"
]
},
"channel": {
"type": [
"string",
"null"
]
},
"release_id": {
"type": [
"string",
"null"
]
},
"release_generation": {
"type": [
"integer",
"null"
]
},
"route_manifest_sha256": {
"type": [
"string",
"null"
]
},
"static_manifest_sha256": {
"type": [
"string",
"null"
]
},
"static_manifest_metadata": {
"allOf": [
{
"$ref": "#/$defs/StaticManifestMetadata"
}
],
"nullable": true
},
"normalized_path": {
"type": [
"string",
"null"
]
},
"static_continuity": {
"$ref": "#/$defs/StaticContinuity"
},
"current_host_release_id": {
"type": [
"string",
"null"
]
},
"current_host_release_generation": {
"type": [
"integer",
"null"
]
},
"match": {
"type": "string",
"enum": [
"host_missing",
"manifest_missing",
"active_release_missing",
"unsupported_manifest_version",
"path_error",
"none",
"route_function",
"route_static_alias",
"route_method_miss",
"static_exact",
"static_index",
"spa_fallback",
"retained_public_path",
"spa_fallback_missing",
"deployment_host",
"deployment_retired"
]
},
"static_sha256": {
"type": [
"string",
"null"
]
},
"asset_path": {
"type": [
"string",
"null"
],
"description": "Private release static asset path backing the matched public path. Present only on authenticated diagnostics."
},
"reachability_authority": {
"type": [
"string",
"null"
],
"enum": [
"implicit_file_path",
"explicit_public_path",
"route_static_alias",
null
]
},
"direct": {
"type": [
"boolean",
"null"
]
},
"content_type": {
"type": [
"string",
"null"
]
},
"cache_class": {
"type": [
"string",
"null"
],
"enum": [
"html",
"immutable_versioned",
"revalidating_asset",
null
]
},
"cache_policy": {
"type": [
"string",
"null"
]
},
"authorized": {
"type": "boolean"
},
"authorization_result": {
"type": [
"string",
"null"
],
"enum": [
"authorized",
"not_public",
"not_applicable",
"manifest_missing",
"target_missing",
"active_release_missing",
"unsupported_manifest_version",
"path_error",
"missing_cas_object",
"unfinalized_or_deleting_cas_object",
"size_mismatch",
"unauthorized_cas_object",
"route_inactive",
null
],
"description": "Static CAS authorization/health result when a static object was matched, or the reason no static object is authorized."
},
"cas_object": {
"type": [
"object",
"null"
],
"description": "CAS object health for matched static objects. Never exposes internal storage URLs.",
"properties": {
"sha256": {
"type": "string"
},
"exists": {
"type": "boolean"
},
"expected_size": {
"type": "integer"
},
"actual_size": {
"type": [
"integer",
"null"
]
}
},
"additionalProperties": true
},
"response_variant": {
"type": [
"object",
"null"
],
"description": "Present for transformed/static HTML responses whose public response identity can vary by hostname.",
"properties": {
"kind": {
"type": "string",
"enum": [
"hostname_static_html"
]
},
"varies_by": {
"type": "array",
"items": {
"type": "string"
}
},
"hostname": {
"type": "string"
},
"release_id": {
"type": [
"string",
"null"
]
},
"release_generation": {
"type": [
"integer",
"null"
]
},
"path": {
"type": "string"
},
"raw_static_sha256": {
"type": "string"
},
"variant_inputs_hash": {
"type": "string"
}
},
"additionalProperties": true
},
"fallback_state": {
"type": "string",
"enum": [
"unavailable",
"active_release_missing",
"unsupported_manifest_version",
"negative_cache_hit",
"path_error",
"method_not_static",
"not_used",
"target_missing",
"used",
"not_configured",
"not_eligible"
]
},
"error_code": {
"type": [
"string",
"null"
]
},
"legacy_immutable_risk": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": true
}
},
"embedding": {
"description": "The framing opt-in of the release this host serves, as catalog keys, or null (deny).",
"nullable": true,
"allOf": [
{
"$ref": "#/$defs/SiteEmbeddingSpec"
}
]
},
"noindex": {
"type": "boolean",
"description": "Whether the release this host serves declared `site.noindex` (every response carries `X-Robots-Tag: noindex, nofollow, nosnippet`)."
},
"emergency_fallback": {
"type": "object",
"additionalProperties": true
},
"edge_propagation": {
"allOf": [
{
"$ref": "#/$defs/EdgePropagationDiagnostics"
}
],
"nullable": true,
"description": "Binding propagation diagnosis for hosts served through eventually consistent edge stores. Fresh bindings can report propagating or sync_pending to explain an expected public URL edge miss."
},
"allow": {
"type": [
"array",
"null"
],
"items": {
"type": "string"
}
},
"route_pattern": {
"type": [
"string",
"null"
]
},
"target_type": {
"type": [
"string",
"null"
],
"enum": [
"function",
"static",
null
]
},
"target_name": {
"type": [
"string",
"null"
]
},
"target_file": {
"type": [
"string",
"null"
]
},
"host_kind": {
"type": [
"string",
"null"
],
"description": "`deployment` when the host is a deployment host (`dpl-*.sites.run402.com`); absent for stable hosts."
},
"deployment_id": {
"type": [
"string",
"null"
],
"description": "Deployment hosts: the `dpl_` deployment the host serves."
},
"deployment_status": {
"type": [
"string",
"null"
],
"enum": [
"live",
"retained",
"retired"
],
"description": "Deployment hosts: `live` while the active release or a subdomain serves the deployment, `retained` once replaced (serving until `origin_available_until`), `retired` after that deadline (every request answers 404)."
},
"origin_available_until": {
"type": [
"string",
"null"
],
"format": "date-time",
"description": "Deployment hosts: when a replaced deployment stops (or stopped) serving; null while live."
},
"origin_retention_seconds": {
"type": [
"integer",
"null"
],
"description": "Deployment hosts: how long a replaced deployment keeps serving (3600)."
},
"path_evaluated": {
"type": "boolean",
"description": "Deployment hosts: `true` when the path was resolved against the deployment's release (its static manifest and public paths); `false` for a retired host or a deployment no release names, reported per host."
},
"route_gates": {
"type": "array",
"items": {
"type": "string"
},
"description": "Function routes: what stands before the function's response (`require_auth`, `require_role`, `priced`); empty when anyone reaches it. `authorized: true` on a function route means the host dispatches the request to the function."
},
"routes_active": {
"type": "boolean",
"description": "Deployment hosts: `false` once the deployment was replaced; its routes no longer run there and a matched route reports result 404."
},
"result": {
"type": "integer"
}
},
"$defs": {
"EdgePropagationDiagnostics": {
"type": "object",
"required": [
"binding",
"claimed_at",
"kvs_synced_at",
"kvs_source",
"status",
"expected_visible_by",
"hint"
],
"properties": {
"binding": {
"type": "string"
},
"claimed_at": {
"type": "string",
"format": "date-time"
},
"kvs_synced_at": {
"type": [
"string",
"null"
],
"format": "date-time"
},
"kvs_source": {
"type": "string",
"enum": [
"present",
"missing",
"unknown"
]
},
"status": {
"type": "string",
"enum": [
"settled",
"propagating",
"sync_pending"
]
},
"expected_visible_by": {
"type": [
"string",
"null"
],
"format": "date-time"
},
"hint": {
"type": "string"
}
}
},
"SiteEmbeddingSpec": {
"type": "object",
"description": "Framing opt-in for the site (tenant-site-embedding). `frame_ancestors` lists platform embedding catalog KEYS, never raw origins; the gateway expands them into the `Content-Security-Policy: frame-ancestors` the host sends and drops `X-Frame-Options`. Catalog: `localhost` (http://localhost:* and http://127.0.0.1:*). Omitted on a later apply = carry the base release's declaration forward; `null` = clear back to the default deny. Unknown keys, duplicates, an empty array, or any other member fail with INVALID_SPEC naming the valid keys.",
"required": [
"frame_ancestors"
],
"properties": {
"frame_ancestors": {
"type": "array",
"minItems": 1,
"uniqueItems": true,
"items": {
"type": "string",
"enum": [
"localhost"
]
}
}
},
"additionalProperties": false
},
"StaticContinuity": {
"type": "object",
"description": "Automatic one-hour origin availability for previously direct-public non-HTML paths absent from the active release. Cached copies may outlive the deadline. Plans omit the deadline until supersession.",
"required": [
"mode",
"origin_retention_seconds",
"scope",
"source_release_id",
"source_release_generation",
"retained_path_count"
],
"properties": {
"mode": {
"type": "string",
"enum": [
"absent_public_paths"
]
},
"origin_retention_seconds": {
"type": "integer",
"enum": [
3600
]
},
"scope": {
"type": "string",
"enum": [
"previously_public_non_html"
]
},
"source_release_id": {
"type": [
"string",
"null"
]
},
"source_release_generation": {
"type": [
"integer",
"null"
]
},
"retained_path_count": {
"type": "integer",
"minimum": 0
},
"origin_available_until": {
"type": [
"string",
"null"
],
"format": "date-time",
"description": "Omitted for candidate supersessions; null for an active release."
}
}
},
"StaticManifestMetadata": {
"type": "object",
"required": [
"file_count",
"total_bytes",
"cache_classes",
"cache_class_sources",
"spa_fallback"
],
"properties": {
"file_count": {
"type": "integer",
"minimum": 0
},
"total_bytes": {
"type": "integer",
"minimum": 0
},
"cache_classes": {
"type": "object",
"additionalProperties": {
"type": "integer",
"minimum": 0
}
},
"cache_class_sources": {
"type": "object",
"additionalProperties": {
"type": "integer",
"minimum": 0
}
},
"spa_fallback": {
"type": [
"string",
"null"
]
}
}
}
}
}
Work with this as data
Every JSON Schema here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for schemas
4 MCP tools reach this
find_json_schemasBrowse and filter every JSON Schema in the catalog.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.
Call it yourself
curl for this page
This JSON Schema
curl "https://apis.io/api/v1/json-schemas/run402-com-stable-host-resolve-response"
All schemas
curl "https://apis.io/api/v1/json-schemas?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.