Skip to content

Manifest Schema

The manifest schema is published as JSON Schema at /schema/rep-manifest.schema.json.

version: "0.1.0" # Required — protocol version
variables: { ... } # Required — variable declarations
settings: { ... } # Optional — gateway settings

Each variable is declared under the variables map using its stripped name (e.g., API_URL, not REP_PUBLIC_API_URL):

variables:
API_URL:
tier: public # Required: public, sensitive, or server
type: url # Required: string, url, number, boolean, csv, json, enum
required: true # Optional (default: false)
default: "" # Optional — default value if not provided
description: "..." # Optional — human-readable description
example: "..." # Optional — example value
pattern: "^..." # Optional — regex pattern the value must match
values: [...] # Optional — allowed values (enum type only)
deprecated: false # Optional — mark as deprecated
deprecated_message: "Use NEW_VAR instead" # Optional
FieldTypeRequiredDescription
tierpublic | sensitive | serverYesSecurity classification tier
typesee types tableYesValue type constraint
requiredbooleanNoMust be present at startup (default: false)
defaultstringNoDefault value when variable is absent
descriptionstringNoHuman-readable purpose
examplestringNoExample value for documentation
patternstringNoRegex the value must match
valuesstring[]NoAllowed values (for enum type)
deprecatedbooleanNoMark as deprecated
deprecated_messagestringNoMigration guidance
TypeValidationExample
stringAny string"hello"
urlValid URL (RFC 3986)"https://api.example.com"
numberParses as finite number"42", "3.14"
boolean"true", "false", "1", "0""true"
csvComma-separated string"a,b,c"
jsonValid JSON'{"key":"val"}'
enumMatches values array"production"
settings:
strict_guardrails: true
hot_reload: true
hot_reload_mode: "signal"
hot_reload_poll_interval: "30s"
session_key_ttl: "30s"
session_key_max_rate: 10
allowed_origins:
- "https://app.example.com"
SettingTypeDefaultDescription
strict_guardrailsbooleanfalseFail on guardrail warnings
hot_reloadbooleanfalseEnable hot reload SSE
hot_reload_modestringsignalfile_watch, signal, or poll
hot_reload_poll_intervalstring30sPoll interval (Go duration format)
session_key_ttlstring30sSession key expiry duration
session_key_max_rateinteger10Max session key requests/min/IP
allowed_originsstring[][]CORS origins for session key endpoint

See examples/.rep.yaml for an annotated manifest with all tiers and types.