2026-08-24 00:04:37 -03:00
{
"$schema" : "https://json-schema.org/draft/2020-12/schema" ,
"$id" : "https://hermes.bstein.dev/contracts/hux/v1/identity.schema.json" ,
"title" : "HUX identity, capability negotiation and data manifest" ,
"description" : "HUX-11 foundation records. capabilities is the first call every client makes: it learns the contract version, which cards are on for this tenant (a card is on only when its whole dependency chain is on), and the server build. manifest is stored on the tenant PVC and tells a rolled-back reader whether it can read the data." ,
"$defs" : {
"capabilities" : {
"type" : "object" ,
"additionalProperties" : false ,
"required" : [
"schema" ,
"contract_version" ,
"identity" ,
"cards" ,
"server"
] ,
"properties" : {
"schema" : {
"const" : "hux.capabilities.v1"
} ,
"contract_version" : {
"$ref" : "common.schema.json#/$defs/contract_version"
} ,
"identity" : {
"$ref" : "common.schema.json#/$defs/identity"
} ,
"cards" : {
"type" : "array" ,
"items" : {
"type" : "object" ,
"additionalProperties" : false ,
"required" : [
"card" ,
"flag" ,
"enabled" ,
"routes"
] ,
"properties" : {
"card" : {
"type" : "string" ,
"pattern" : "^HUX-[0-9]{2}$"
} ,
"flag" : {
"type" : "string" ,
"pattern" : "^hux\\.[a-z_]+$"
} ,
"enabled" : {
"type" : "boolean"
} ,
"routes" : {
"type" : "array" ,
"items" : {
"type" : "string" ,
"pattern" : "^/hux/v1/"
}
}
}
}
} ,
"server" : {
"$ref" : "common.schema.json#/$defs/build"
}
}
} ,
"manifest" : {
"type" : "object" ,
"additionalProperties" : false ,
"required" : [
"schema" ,
"contract_version" ,
"data_layout_version" ,
"min_reader_contract_version" ,
"created_at" ,
"updated_at"
] ,
"properties" : {
"schema" : {
"const" : "hux.manifest.v1"
} ,
"contract_version" : {
"$ref" : "common.schema.json#/$defs/contract_version"
} ,
"data_layout_version" : {
"type" : "integer" ,
"minimum" : 1
} ,
"min_reader_contract_version" : {
"$ref" : "common.schema.json#/$defs/contract_version"
} ,
"created_at" : {
"$ref" : "common.schema.json#/$defs/timestamp"
} ,
"updated_at" : {
"$ref" : "common.schema.json#/$defs/timestamp"
}
}
} ,
2026-08-24 02:24:12 -03:00
"context_bootstrap" : {
"type" : "object" ,
"additionalProperties" : false ,
"required" : [
"schema" ,
"contract_version" ,
"identity" ,
"session_id" ,
"conversation_id" ,
"project_id" ,
"created" ,
"revisions"
] ,
"properties" : {
"schema" : {
"const" : "hux.context_bootstrap.v1"
} ,
"contract_version" : {
"$ref" : "common.schema.json#/$defs/contract_version"
} ,
"identity" : {
"$ref" : "common.schema.json#/$defs/identity"
} ,
"session_id" : {
"$ref" : "common.schema.json#/$defs/id"
} ,
"conversation_id" : {
"$ref" : "common.schema.json#/$defs/id"
} ,
"project_id" : {
"$ref" : "common.schema.json#/$defs/id"
} ,
"created" : {
"type" : "object" ,
"additionalProperties" : false ,
"required" : [ "project" , "conversation" ] ,
"properties" : {
"project" : { "type" : "boolean" } ,
"conversation" : { "type" : "boolean" }
}
} ,
"revisions" : {
"type" : "object" ,
"additionalProperties" : false ,
"required" : [ "project" , "conversation" ] ,
"properties" : {
"project" : { "$ref" : "common.schema.json#/$defs/revision" } ,
"conversation" : { "$ref" : "common.schema.json#/$defs/revision" }
}
}
}
} ,
2026-08-24 00:04:37 -03:00
"error" : {
"type" : "object" ,
"additionalProperties" : false ,
"required" : [
"schema" ,
"status" ,
"code" ,
"message"
] ,
"properties" : {
"schema" : {
"const" : "hux.error.v1"
} ,
"status" : {
"type" : "integer" ,
"minimum" : 400 ,
"maximum" : 599
} ,
"code" : {
"type" : "string" ,
"enum" : [
"unauthorized" ,
"forbidden" ,
"not_found" ,
"conflict" ,
"flag_off" ,
"invalid" ,
"too_large" ,
"rate_limited" ,
"approval_required" ,
2026-08-24 00:27:38 -03:00
"budget_exhausted" ,
"unprocessable"
2026-08-24 00:04:37 -03:00
]
} ,
"message" : {
"type" : "string" ,
"maxLength" : 280
} ,
"details" : {
"type" : "array" ,
"maxItems" : 32 ,
"items" : {
"type" : "string" ,
"maxLength" : 280
}
}
}
}
} ,
"oneOf" : [
{
"$ref" : "#/$defs/capabilities"
} ,
{
"$ref" : "#/$defs/manifest"
} ,
2026-08-24 02:24:12 -03:00
{
"$ref" : "#/$defs/context_bootstrap"
} ,
2026-08-24 00:04:37 -03:00
{
"$ref" : "#/$defs/error"
}
]
}