# Models: H

> API models starting with H.

## `HealthResult`

- `ok: Literal[True]`

## `HoldOut`

- `baseline: float | None`
- `candidate: float | None`
- `delta: float | None`
- `spread: float | None` (optional)

## `Host`

- `root: str`

## `HttpAuthSpec1`

- `kind: Literal['bearer']`
- `secret_ref: kindgi.client.ToolSecretRef` (`secretRef` on the wire)

## `HttpAuthSpec2`

- `kind: Literal['header']`
- `header_name: str` (`headerName` on the wire)
- `secret_ref: kindgi.client.ToolSecretRef` (`secretRef` on the wire)

## `HttpHeaderSpec`

- `name: str`
- `value: str`

## `HttpRequestBodySpec1`

- `kind: Literal['json-input']`

## `HttpRequestBodySpec2`

- `kind: Literal['input-passthrough']`

## `HttpRequestBodySpec3`

- `kind: Literal['text']`
- `template: str`

## `HttpToolSpec`

Declarative HTTP-invocation spec. Attached to `ToolManifest.spec` under the discriminant `kind: 'http'`. The runtime `Tool.handler` is synthesized by the 'http' spec synthesizer to perform URL-template substitution, secret-ref resolution via `ToolContext.resolveSecret`, and the outbound fetch. All fields serialize cleanly to JSON.

- `kind: Literal['http']`
- `method: Literal['GET', 'POST', 'PUT', 'PATCH', 'DELETE']`
- `url_template: str` (`urlTemplate` on the wire)
- `headers: list[kindgi.client.HttpHeaderSpec] | None` (optional)
- `authorization: kindgi.client.HttpAuthSpec1 | kindgi.client.HttpAuthSpec2 | None` (optional)
- `request_body: kindgi.client.HttpRequestBodySpec1 | kindgi.client.HttpRequestBodySpec2 | kindgi.client.HttpRequestBodySpec3 | None` (`requestBody` on the wire) (optional)
- `timeout_ms: int | None` (`timeoutMs` on the wire) (optional)
- `parse_json: bool | None` (`parseJson` on the wire) (optional)
- `success_status: kindgi.client.SuccessStatus | None` (`successStatus` on the wire) (optional)
