Admin API: OpenAPI contract
The operations of the admin port of the Flexway v1.7.1 gateway, read from the OpenAPI contract the release publishes: parameters, bodies, responses, errors and schemas. A static page, with no try-it button.
Admin surface, not exposed to the public. This port must never be reachable from outside: open it to the orchestrator, the metrics scraper and the console only.
The operational surface of a Flexway gateway, served on its admin port (9090 by default, moved by FLEXWAY_ADMIN_ADDR): the liveness and readiness probes, the configuration in force with its secrets masked, a request simulated without its upstream, the journals of events and errors of the replica that answers, and the Prometheus metrics.
This port is never routable from outside: /config lists the issuers and the upstreams. Expose it to the orchestrator, the metrics scraper and the console only. Every error of this surface is an RFC 9457 problem document (application/problem+json).
- Contract
- OpenAPI 3.1.0, version 0.9.0 · Download admin.openapi.yaml
- Server
http://localhost:9090(Admin listener)- Security
- No security scheme declared by the contract
- Bodies
application/jsonapplication/problem+jsontext/plain- Guide
- Admin API
9 operations
Operations
- GET
/healthzThe process is alive - never about its configuration200 - GET
/readyzA configuration is loaded and served; red first at shutdown200503 - GET
/configThe configuration in force, secrets masked, and what it composes to200503 - POST
/simulateWhat the gateway would do with a described request, without calling the upstream200400 - POST
/simulate/mqttWhat the MQTT device listener would do with a described packet, without the broker200400404 - GET
/eventsWhat happened on this replica - reloads, circuit breaker transitions, shedding200 - GET
/errorsThe recent errors of this replica - upstream failures, refusals, internal errors200 - GET
/sparkplug/nodesThe Sparkplug B edge nodes and host applications that cross this replica200 - GET
/metricsPrometheus exposition of the gateway's metrics200
/healthz
livenessThe process is alive - never about its configuration
Parameters
None.
Responses
- 200
- Alive.
Example, generated from the contract
curl -s http://localhost:9090/healthz/readyz
readinessA configuration is loaded and served; red first at shutdown
Parameters
None.
Responses
- 200
- Ready.
- 503
- Not ready, with the reason - a probe's answer, not an error document.
Example, generated from the contract
curl -s http://localhost:9090/readyz/config
getEffectiveConfigThe configuration in force, secrets masked, and what it composes to
Every key of flexway.yaml as loaded, secret-looking values redacted, plus what the gateway derives from it: the catalogue of served operations and each operation's chain with its provenance, the configuration version and the last reload's outcome.
Parameters
None.
Responses
- 200
- The effective configuration.
- 503
- No configuration loaded yet (not_ready).
Example, generated from the contract
curl -s http://localhost:9090/config/simulate
simulateRequestWhat the gateway would do with a described request, without calling the upstream
The described request goes through the same decision as traffic - routing, origin, authorization against the described identity (no token is verified), whitelist, validation, policy chain - and stops before the upstream: no token exchanged, no bucket nor quota spent, nothing counted.
Parameters
None.
Request body required
application/jsonSimulationRequest
Responses
- 200
- The verdict, and the outbound request when served.
- 400
- The description is incomplete (malformed_request).
Example, generated from the contract
curl -s http://localhost:9090/simulate \
-H 'Content-Type: application/json' \
-d '{"method":"GET","host":"api.example.com","path":"/orders/42?status=open"}'/simulate/mqtt
simulateMQTTPacketWhat the MQTT device listener would do with a described packet, without the broker
A described PUBLISH, SUBSCRIBE or will (a CONNECT's) of a described device goes through the listener's decision - the operations its identity satisfies, its channels with the bound values written, wildcards contained, $share/ groups, QoS, Response Topic - and stops before the broker: nothing dialled, no rate nor quota spent, nothing counted. Absent without listeners.mqtt (404).
Parameters
None.
Request body required
application/jsonMQTTSimulationRequest
Responses
- 200
- The verdict, the operation, and the topic or filter as written toward the broker when served.
- 400
- The description is incomplete (malformed_request).
- 404
- listeners.mqtt is not set (not_found).
Example, generated from the contract
curl -s -X POST http://localhost:9090/simulate/mqttThe body is not generated: a required field has no example in the contract. See the schema.
/events
listEventsWhat happened on this replica - reloads, circuit breaker transitions, shedding
A journal in memory: the last 128 events of each kind, newest first, lost at a restart - per replica, the one that answers. Never a tenant nor anything a caller sent: upstream names come from the configuration, versions and causes from the reloader (the text of /config's last_reload).
Parameters
None.
Responses
- 200
- The journal.
Example, generated from the contract
curl -s http://localhost:9090/events/errors
listErrorsThe recent errors of this replica - upstream failures, refusals, internal errors
A journal in memory: three rings of 256 (upstream, refused, internal), newest first, lost at a restart - per replica, the one that answers. Written on the error path only, without an allocation, at most 20 per second and per kind: past it, an error is counted in its kind's dropped and not detailed. Every field is a name from the configuration, the verified tenant, or a member of a closed set; never a subject, an address, the path received, the request, its headers or body, nor an upstream's or the network's text. A 4xx an upstream answered is its business, not an error of the gateway.
Parameters
None.
Responses
- 200
- The journal.
Example, generated from the contract
curl -s http://localhost:9090/errors/sparkplug/nodes
listSparkplugNodesThe Sparkplug B edge nodes and host applications that cross this replica
The table each replica keeps: an edge node is online from its NBIRTH on this replica, offline from its NDEATH or the end of its connection with its will, moved when this replica handed its connection over to another (a tombstone, never offline), unknown when only its admitted commands crossed here. Bounded by observability.sparkplug (max_nodes, max_nodes_per_tenant, offline_retention, max_devices_per_node); lost at a restart. The listing carries each node's device counts, never its devices: an answer is at most max_nodes entries of bounded fields (an id is 255 bytes at most). With node (and tenant), the one node with its devices. The console reads it on every replica and keeps, per node, the entry with the latest birth. Names are the ones the topics carry - the tenant's group, the node's and its devices' ids; never a metric value, a payload, an address or a certificate. Absent (404) when the gateway has no MQTT listener.
Parameters
tenantquerystring- Only this tenant's nodes and host applications.
nodequerystring- Only this edge node, with its devices - given with tenant.
Responses
- 200
- The table.
Example, generated from the contract
curl -s http://localhost:9090/sparkplug/nodes/metrics
getMetricsPrometheus exposition of the gateway's metrics
Names and dimensions are a frozen surface.
Parameters
None.
Responses
- 200
- Prometheus text exposition.
Example, generated from the contract
curl -s http://localhost:9090/metricsErrors
Every error of this API is a problem document, application/problem+json. The codes below are the ones the contract's responses cite.
Problem
objectRFC 9457 problem details - every error of the admin surface (the inference surface answers in OpenAI's envelope, ErrorResponse). code is what a client switches on.
typerequiredstringtitlerequiredstringstatusrequiredintegerdetailstringinstancestringcoderequiredstringrequest_idstringtrace_idstringerrorslist<FieldError>- invalid_request only - each field that broke the contract, and the rule it broke.
grpcGRPCStatus
Cited by : GET /configPOST /simulatePOST /simulate/mqtt
Codes cited by the responses
- 503
not_readyGET /config - 400
malformed_requestPOST /simulate · POST /simulate/mqtt - 404
not_foundPOST /simulate/mqtt
38 schemas
Schemas
Each schema once, with its anchor: the operations link to it, and a schema that cites another links it.
SimulationRequest
objectmethodrequiredstringhostrequiredstringpathrequiredstring- With its query, as a client would send it.
headersmap<string>identitySimulatedIdentity
Cited by : POST /simulate
SimulatedIdentity
objectWho the caller is supposed to be - what a valid token would have proved. Nothing is verified.
issuerrequiredstringsubjectrequiredstringtenantstringscopeslist<string>roleslist<string>
Cited by : SimulationRequest
MQTTSimulationRequest
objectpacketrequiredstring- will: a CONNECT's will, judged as a PUBLISH.
topicrequiredstring- A topic name (publish, will) or a filter (subscribe), $share/<group>/ included.
qosintegerresponse_topicstring- An MQTT 5 Response Topic
identityrequiredMQTTSimulatedIdentity
Cited by : POST /simulate/mqtt
MQTTSimulatedIdentity
objectWho the device is supposed to be - nothing is verified. A key or a certificate is found by its id in the configuration in force.
kindrequiredstringidstring- api_key: the key's id; certificate: the auth.mtls client's id.
issuerstringsubjectstringtenantstring- token: its tenant claim; a key's or a certificate's is the configuration's.
scopeslist<string>claimsmap<string>- token: the claims a claim:<name> binding reads.
certificateobject- certificate: the fields a cert:<field> binding reads - cn, serial, fingerprint, ou, o, san.dns, san.uri, san.ip, san.email (lists for the multi-valued ones).
Cited by : MQTTSimulationRequest
MQTTSimulationResult
objectverdictrequiredstringreason_codeinteger- The MQTT 5 reason code a refusal answers (0x87 = 135...).
causestring- The refusal's cause - the label of flexway.mqtt.packets.
operationstringupstreamstringwrittenstring- The topic or filter as written toward the broker - a $share/ group in the tenant's name.
qosinteger- The QoS the broker sees - a subscription's granted at the operation's qos_max at most.
client_idstring- The client id the broker sees for this identity.
Cited by : POST /simulate/mqtt
SimulationResult
objectverdictrequiredstringstatusrequiredintegercodestring- The refusal's problem code.
operationstringupstreamstringchainlist<string>appliedlist<string>outboundOutbound
Cited by : POST /simulate
Outbound
objectThe request the upstream would receive, before the token exchange and the relay; credentials masked.
pathrequiredstringquerystringheadersrequiredmap<list<string>>
Cited by : SimulationResult
Liveness
objectstatusrequiredstringuptime_secrequiredinteger
Cited by : GET /healthz
Readiness
objectstatusrequiredstringoperationsinteger- Operations served, when ready.
reasonstring- Why not, when not ready.
Cited by : GET /readyz
GRPCStatus
objectupstream_status only - the google.rpc.Status a gRPC upstream answered to a call translated from REST (1.1.0): the upstream's own answer, as it gave it. The HTTP status is the one google.rpc.Code maps the code to.
coderequiredintegerstatusrequiredstring- The code's name - what a client switches on.
messagestringdetailslist<object>- The status details in the proto3 JSON mapping; a type the gateway does not know keeps only its "@type".
Cited by : Problem
FieldError
objectfieldrequiredstringrulerequiredstring- For a human.
coderequiredstring- The JSON Schema keyword broken, or the operator's name for it (errors.field_codes).
Cited by : Problem
KafkaOperation
objectAn AsyncAPI operation served to Kafka clients (x-flexway-kafka-proxy).
operationrequiredstringidentitiesrequiredlist<object>- The alternatives of its security - token (with its scopes), apikey, certificate.
transactionsboolean- A send operation that opens the transactional producer.
admin_scopestring- The scope a token carries to administer the topic.
decrypt_scopestring- A receive operation's scope a token carries to read the topic's encrypted fields in clear.
EffectiveConfig
objectversionrequiredinteger- The configuration schema's version - not the gateway's, see build.
buildrequiredBuildInfoconfig_versionrequiredstring- Short digest of the bytes served.
config_digeststring- Short semantic digest of the configuration served: the decoded flexway.yaml in a canonical form and each contract under the path flexway.yaml writes, the API key store excluded. The same whatever the mount path or the chart's rendering - what
flexway validateprints, and what a pipeline or the console expects to see served after a merge. last_reloadobjectcatalogrequiredlist<CatalogEntry>fragmentslist<PolicyFragment>- The policy fragments imported, in the order policies.fragments writes them; empty without one. Their definitions are also under policies.definitions, as <import>/<name>.
agentsobject- The agents section as loaded, when one is configured: mcp (path, resources, servers and clients) and delegation (max_depth, max_age, introspection).
kafkaobject- The Kafka listener's virtual clusters (1.6.0), read from the AsyncAPI contract in force; absent without listeners.kafka. Its bounds and quotas are under listeners.kafka, its signals' settings under observability.kafka. Never a key, a certificate, a tenant's name.
devicesobject- The MQTT device listener's operations (1.7.0), read from the AsyncAPI contract in force; absent without listeners.mqtt. Its bounds are under listeners.mqtt, its signals' settings under observability.mqtt. Never a key, a certificate, a tenant's name.
kmsobject- The KMS of field-level encryption on the Kafka listener (1.6.0), as loaded: its kind, host and key name - per_tenant_key when the name holds {tenant} -, the previous keys records may still name (previous_keys, read only), timeout, rotation, cache and tenant_calls bounds, and its kind's section with references (${VAR}, file:/path) and mounted file paths - never a secret, never a key. The epochs in use and the keys cached are runtime state, in the metrics flexway.kafka.dek.epoch and flexway.kafka.dek.cached.
listenersobject- The listeners beside HTTP, as loaded: kafka - its addresses, bounds (max_connections, max_connections_per_tenant, max_tenant_in_flight_bytes, on_tenant_budget_exceeded...) and, when declared, quotas (client and tenant producer_byte_rate, consumer_byte_rate, request_rate; window, max_throttle, quota) - what the console shows as the bounds in force; mqtt - its address, TLS files, websocket, advertised_address, every bound (max_connections, max_connections_per_ip, max_connection_rate_per_tenant, topic_alias_maximum...), device and tenant rates, the tenant's quota policy, failover (mode, reason, server_reference, redirect_above, handover_timeout, drain_spread).
mcp_federationmap<FederationState>- Live, not the configuration: each federated MCP server's last discovery, by server name - read at each GET /config, since discovery moves on its own.
a2aobject- The governed A2A agents (1.2.0): what each serves and how - from the configuration in force, read at each GET /config. Absent when no agent is declared. Never a key, never a token.
chainsrequiredmap<map<ChainDetail>>- By host ("*" for every host without contracts of its own), then by operationId.
effective_chainsmap<list<string>>- The chain's policy names alone, by operationId, on hosts not configured otherwise.
policiesobject- The policies section as loaded - definitions and chains, secret-looking values masked.
aiobject- The ai section as loaded, when one is configured: budget (monthly_tokens, daily_tokens, monthly_eur, soft), overrides (match, backend, caps) and backends - the quotas the console compares a tenant's consumption with.
Cited by : GET /config
EventLog
objectreplicarequiredstring- The answering process's host name - the pod's name.
capacityrequiredinteger- Events kept per kind.
eventsrequiredlist<Event>
Cited by : GET /events
Event
objectOne event. reload - result, version, and cause when rejected; breaker - upstream, from and to; shedding - state, and cause (latency of the shedder, in_flight_limit of the adaptive in-flight limit); delegation - a refused chain of agents: reason, client, tenant, actors, depth and age against the bounds in force, operation or tool, the token's declared scopes. Never a subject, never a token; a tenant on the kind delegation only.
atrequiredstringkindrequiredstringreasonstring- Delegation - why the chain was refused.
clientstring- Delegation - the agent's client: a declared client_id, _undeclared, none or _other.
tenantstring- Delegation - the tenant, bounded as on the metrics.
actorslist<string>- Delegation - the agents of act, the current one first; at most max_depth + 1, 256 characters each.
depthinteger- Delegation - the chain's measured depth.
age_secondsinteger- Delegation - the chain's measured age; -1 when the token carries no time it started.
max_depthinteger- Delegation - the depth bound in force for the operation.
max_age_secondsinteger- Delegation - the age bound in force for the operation.
operationstring- Delegation - the operation (REST or a tool's replay); absent at the MCP connection.
toolstring- Delegation - the tool; absent for a REST request and at the MCP connection.
scopeslist<string>- Delegation - the presented token's scopes that a contract or a federated server declares.
resultstringversionstringcausestringupstreamstringfromstringtostringstatestring
Cited by : EventLog
SparkplugNodes
objectreplicarequiredstring- The answering process's host name - the pod's name.
capacityrequiredinteger- observability.sparkplug.max_nodes.
offline_retention_secondsrequiredinteger- observability.sparkplug.offline_retention
droppedrequiredinteger- Nodes and host applications not kept since the start - the table was full of online nodes.
nodesrequiredlist<SparkplugNode>hostsrequiredlist<SparkplugHost>
Cited by : GET /sparkplug/nodes
SparkplugNode
objecttenantrequiredstring- The node's group - the tenant it is bound to.
edge_noderequiredstringstaterequiredstringsincerequiredstring- When the node took its state on this replica.
bd_seqinteger- The bdSeq of its last NBIRTH here; absent when none was read.
will_bd_seqinteger- The bdSeq of the will (NDEATH) its connection registered; absent when none was read.
seq_gapsrequiredinteger- Messages whose seq was not the next since its birth here.
bd_seq_gapsrequiredinteger- Births whose bdSeq was not their will's.
protocol_versionrequiredstring- 5 or 3.1.1; empty for an unknown node.
authrequiredstring- The mode of identity of its connection - certificate, token, api_key; empty for an unknown node.
devices_onlinerequiredinteger- Its devices online (DBIRTH without a later DDEATH) since its birth.
devices_totalrequiredinteger- Its devices kept since its birth.
devicesrequiredlist<SparkplugDevice>- Its devices (DBIRTH, DDEATH) since its birth, sorted by id - listed only when the node is asked for (node); empty otherwise.
devices_truncatedrequiredboolean- Past observability.sparkplug.max_devices_per_node
commandsrequiredSparkplugCommands
Cited by : SparkplugNodes
SparkplugDevice
objectdevicerequiredstringstaterequiredstring
Cited by : SparkplugNode
SparkplugCommands
objectThe commands (NCMD, DCMD) to the node that crossed this replica, admitted and refused.
admittedrequiredintegerrefusedrequiredinteger
Cited by : SparkplugNode
SparkplugHost
objectA host application, read from its STATE (spBv1.0/STATE/{host_id}, the host id bound to the tenant).
tenantrequiredstringhost_idrequiredstringstaterequiredstringsincerequiredstring
Cited by : SparkplugNodes
ErrorLog
objectreplicarequiredstring- The answering process's host name - the pod's name.
capacityrequiredinteger- Errors kept per kind.
write_limitrequiredinteger- Errors detailed per second and per kind; past it they are counted in dropped.
kindsrequiredlist<ErrorKindCount>- Each kind's count of the errors it could not detail since the start.
errorsrequiredlist<GatewayError>
Cited by : GET /errors
ErrorKindCount
objectkindrequiredErrorKinddroppedrequiredinteger- Errors past the write limit since the start.
last_dropped_atstring- The last of them; absent when none was dropped.
Cited by : ErrorLog
ErrorKind
stringupstream - an answer written for an upstream that failed (502, 503, 504), or an upstream's 5xx relayed; refused - a refusal the gateway wrote (a 4xx, or the 503 of its shedding); internal - the gateway failing.
Cited by : ErrorKindCountGatewayError
GatewayError
objectOne error. Its fields are a closed list: no subject, address, received path, request, header, body, nor an upstream's or the network's text.
atrequiredstringkindrequiredErrorKindoperationrequiredstring- The operationId; _unmatched when no route matched.
upstreamstring- The upstream's name in the configuration; absent when the request never reached one.
tenantstring- The verified identity's tenant; absent for an anonymous caller. A tenant longer than 128 characters is never truncated: it is written sha256:<hex digest of the whole tenant>.
statusrequiredinteger- The HTTP status answered - for a refusal answered in gRPC's status, the one its code maps to.
coderequiredstring- The problem code the gateway wrote; upstream_status for an upstream's 5xx relayed as is - never a code or a text of the upstream.
stagerequiredstring- Where the error was written, derived from its code.
causestring- Upstream errors only - why the upstream failed, a closed set; never the network's text.
duration_msrequirednumber- Time from the request's arrival to its answer.
trace_idstring- The request's trace when it was sampled.
Cited by : ErrorLog
BuildInfo
objectThe binary serving, written at build time: the release tag for a release ("v1.0.0"), "dev" for any other build, and the commit it was built from.
versionrequiredstringcommitrequiredstring- Short commit; empty when the build did not say.
Cited by : EffectiveConfig
CatalogEntry
objectoperation_idrequiredstringmethodrequiredstringpathrequiredstring- The path template, never a concrete URL.
hostsrequiredlist<string>- "*" stands for every host without contracts of its own.
upstreamrequiredstringsummarystringtagslist<string>deprecatedrequiredbooleansecurityrequiredlist<list<string>>- The alternatives, each the schemes it combines; an empty one is anonymous access.
rate_classstringtoolstring- The tool name when offered to agents (x-flexway-tool).
tool_unattendedboolean- Present only with tool: false when the tool is kept for agents a person supervises (x-flexway-tool with unattended false), true otherwise.
builtinrequiredboolean- An operation the gateway declares itself (ai.*).
protocolstring- grpc for a method of a Protobuf service (1.1.0): path is its gRPC path. Absent: HTTP.
restlist<CatalogRoute>- The REST routes of a gRPC method (google.api.http), the same operation translated.
cachelist<CatalogCache>- The operation's response cache (1.2.0), one entry per distinct rule - from its x-flexway-cache, or a cache policy attached around it. Absent: nothing of it is cached.
timeout_msrequiredinteger- The operation's total budget in milliseconds: its x-flexway-timeout, otherwise its upstream's timeout. An external-call of the request phase consumes it; the upstream gets what is left.
ownerCatalogOwnersunsetstring- The date a deprecated operation is withdrawn (x-flexway-sunset), YYYY-MM-DD.
streamstring- How the operation answers when it is not one response - a text/event-stream, a protocol switch (101), a streaming gRPC method. The vocabulary of flexway.streams.open. Absent: one response.
security_detailrequiredlist<CatalogAlternative>- The alternatives of security, in the same order, with each scheme's kind and what it requires.
effective_rate_classrequiredstring- The rate-limit class the operation counts against: rate_class when declared, read for a gRPC method without side effects, otherwise by method.
contractstring- The contract file that declares it, as flexway.yaml writes the path; absent for the gateway's own operations.
prioritystring- x-flexway-priority when declared.
validationstring- x-flexway-validation when declared; absent - the host's.
delegationobject- x-flexway-delegation when declared; a bound absent is the configuration's.
added_scopeslist<string>- The scopes x-flexway-scopes adds to every token alternative (already in security_detail).
paramsrequiredlist<CatalogParam>- The parameters in short - never a schema nor an example.
bodyobject- The request body in short; absent - none declared.
responsesrequiredlist<CatalogResponse>- The declared responses in short - status as written ("200", "2XX", "default") and media types.
Cited by : EffectiveConfig
CatalogOwner
objectThe team that answers for an operation (x-flexway-owner) - a team's channel, never a person.
teamrequiredstringcontactstring
Cited by : CatalogEntry
CatalogAlternative
objectanonymousrequiredboolean- The empty alternative {}: no identity needed.
schemesrequiredlist<object>scopeslist<string>roleslist<string>
Cited by : CatalogEntry
CatalogParam
objectnamerequiredstringinrequiredstringrequiredrequiredbooleantypestring- The schema's type; "a|b" for a list of types.
formatstring
Cited by : CatalogEntry
CatalogResponse
objectstatusrequiredstringmediarequiredlist<string>
Cited by : CatalogEntry
A2AAgent
objectagentrequiredstring- The agent's name in operation ids (a2a.<agent>.<Method>) and metrics.
cardrequiredstring- The declared card, as flexway.yaml writes its path.
upstreamrequiredstringbindingsrequiredmap<string>- The bindings served (JSONRPC, HTTP+JSON), each with the gateway's address.
methodsrequiredmap<string>- The methods served, each with its rate class - free debits nothing.
verifyrequiredstring- How the upstream's own card is verified - none until card verification is built.
streamingrequiredbooleanmax_streamsinteger- The streams one caller may hold open to the agent, per replica.
max_task_durationstring- The longest a stream of the agent runs, as a Go duration.
card_pathrequiredstring- Where the gateway publishes the agent's card.
FederationState
objectstatusrequiredobjecttoolsrequiredlist<string>- The tools discovered, under their names on the surface.
descriptionsmap<string>- What each tool says of itself, by name, 512 characters at most - a third party's text.
not_servedlist<string>- Tools announced and not served, their name taken: "<name> (taken by <who>)".
Cited by : EffectiveConfig
CatalogCache
objectttl_secondsrequiredinteger- The longest a response is kept; the upstream's Cache-Control may shorten it.
scoperequiredstring- public: anonymous callers; subject: keyed by tenant and subject.
policystring- The cache policy it comes from; absent for the contract's x-flexway-cache.
hostsrequiredlist<string>- The hosts it applies on; "*" alone: every host.
Cited by : CatalogEntry
CatalogRoute
objectmethodrequiredstringpathrequiredstring
Cited by : CatalogEntry
ChainDetail
objectstepsrequiredlist<object>removedlist<Attachment & object>replacedlist<object>
Cited by : EffectiveConfig
Attachment
objectlevelrequiredstringsourcestring- The host, the route motif, x-flexway-policies, or policies.fragments for the enforced head of the chain.
Cited by : ChainDetail
FragmentOrigin
objectThe fragment an imported policy comes from; absent for a local definition.
importrequiredstring- The import name flexway.yaml gives it - the prefix of its definitions.
fragmentrequiredstring- The fragment's own name.
versionrequiredstring- The fragment's semantic version - informative; the digest says what runs.
enforcedrequiredboolean- At the head of every chain: never removed, never replaced.
PolicyFragment
objectOne imported policy fragment.
importrequiredstringfragmentrequiredstringversionrequiredstringdigestrequiredstring- sha256:<hex>, the digest pinned - equal to the file's.
pathrequiredstring- The file
signaturerequiredstring- How the file was proven beyond its digest: none in this version.
requires_uncheckedrequiredboolean- true when the fragment requires a gateway version and a development build (dev) loaded it without comparing - said here and in the log, never refused.
requiresrequiredobjectdefinitionsrequiredlist<string>- The imported names, <import>/<name>.
enforcedrequiredlist<string>- The enforced definitions
unusedrequiredlist<string>- The imported definitions no chain names - never an error.
Cited by : EffectiveConfig