flexway
FRENParler à un expert

API d'administration : contrat OpenAPI

Les opérations du port d'administration de la passerelle Flexway v1.7.1, lues dans le contrat OpenAPI que la version publie : paramètres, corps, réponses, erreurs et schémas. Page statique, sans bouton d'essai.

Surface d'administration, non exposée au public. Ce port ne doit jamais être joignable depuis l'extérieur : ouvrez-le à l'orchestrateur, au collecteur de métriques et à la console seulement.

Texte du contrat, en anglais

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).

Contrat
OpenAPI 3.1.0, version 0.9.0 · Télécharger admin.openapi.yaml
Serveur
http://localhost:9090 (Admin listener)
Sécurité
Aucun schéma de sécurité déclaré par le contrat
Corps
application/jsonapplication/problem+jsontext/plain
Guide
API d'administration

9 opérations

Opérations

  • 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
GET

/healthz

liveness
Texte du contrat, en anglais

The process is alive - never about its configuration

Paramètres

Aucun.

Réponses
200
application/json LivenessAlive.
Exemple, généré depuis le contrat
curl -s http://localhost:9090/healthz
GET

/readyz

readiness
Texte du contrat, en anglais

A configuration is loaded and served; red first at shutdown

Paramètres

Aucun.

Réponses
200
application/json ReadinessReady.
503
application/json ReadinessNot ready, with the reason - a probe's answer, not an error document.
Exemple, généré depuis le contrat
curl -s http://localhost:9090/readyz
GET

/config

getEffectiveConfig
Texte du contrat, en anglais

The 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.

Paramètres

Aucun.

Réponses
200
application/json EffectiveConfigThe effective configuration.
503
application/problem+json ProblemNo configuration loaded yet (not_ready).
Exemple, généré depuis le contrat
curl -s http://localhost:9090/config
POST

/simulate

simulateRequest
Texte du contrat, en anglais

What 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.

Paramètres

Aucun.

Corps de la requête obligatoire
Réponses
200
application/json SimulationResultThe verdict, and the outbound request when served.
400
application/problem+json ProblemThe description is incomplete (malformed_request).
Exemple, généré depuis le contrat
curl -s http://localhost:9090/simulate \
  -H 'Content-Type: application/json' \
  -d '{"method":"GET","host":"api.example.com","path":"/orders/42?status=open"}'
POST

/simulate/mqtt

simulateMQTTPacket
Texte du contrat, en anglais

What 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).

Paramètres

Aucun.

Corps de la requête obligatoire
Réponses
200
application/json MQTTSimulationResultThe verdict, the operation, and the topic or filter as written toward the broker when served.
400
application/problem+json ProblemThe description is incomplete (malformed_request).
404
application/problem+json Problemlisteners.mqtt is not set (not_found).
Exemple, généré depuis le contrat
curl -s -X POST http://localhost:9090/simulate/mqtt

Le corps n'est pas généré : un champ obligatoire n'a pas d'exemple dans le contrat. Voir le schéma.

GET

/events

listEvents
Texte du contrat, en anglais

What 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).

Paramètres

Aucun.

Réponses
200
application/json EventLogThe journal.
Exemple, généré depuis le contrat
curl -s http://localhost:9090/events
GET

/errors

listErrors
Texte du contrat, en anglais

The 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.

Paramètres

Aucun.

Réponses
200
application/json ErrorLogThe journal.
Exemple, généré depuis le contrat
curl -s http://localhost:9090/errors
GET

/sparkplug/nodes

listSparkplugNodes
Texte du contrat, en anglais

The 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.

Paramètres
tenantrequêtestring
Only this tenant's nodes and host applications.Bornes : longueur ≤ 128
noderequêtestring
Only this edge node, with its devices - given with tenant.Bornes : longueur ≤ 255
Réponses
200
application/json SparkplugNodesThe table.
Exemple, généré depuis le contrat
curl -s http://localhost:9090/sparkplug/nodes
GET

/metrics

getMetrics
Texte du contrat, en anglais

Prometheus exposition of the gateway's metrics

Names and dimensions are a frozen surface.

Paramètres

Aucun.

Réponses
200
text/plain stringPrometheus text exposition.
Exemple, généré depuis le contrat
curl -s http://localhost:9090/metrics

Erreurs

Toute erreur de cette API est un document de problème, application/problem+json. Les codes ci-dessous sont ceux que les réponses du contrat citent.

Problem

object

RFC 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.

typeobligatoirestring
Format : uri
titleobligatoirestring
statusobligatoireinteger
detailstring
instancestring
codeobligatoirestring
Exemple : not_found
request_idstring
trace_idstring
errorslist<FieldError>
invalid_request only - each field that broke the contract, and the rule it broke.

Cité par : GET /configPOST /simulatePOST /simulate/mqtt

Codes cités par les réponses
  • 503 not_ready GET /config
  • 400 malformed_request POST /simulate · POST /simulate/mqtt
  • 404 not_found POST /simulate/mqtt

38 schémas

Schémas

Chaque schéma une fois, avec son ancre : les opérations y renvoient et un schéma qui en cite un autre le lie.

SimulationRequest

object
methodobligatoirestring
Exemple : GET
hostobligatoirestring
Exemple : api.example.com
pathobligatoirestring
With its query, as a client would send it.Exemple : /orders/42?status=open
headersmap<string>

Cité par : POST /simulate

SimulatedIdentity

object

Who the caller is supposed to be - what a valid token would have proved. Nothing is verified.

issuerobligatoirestring
subjectobligatoirestring
tenantstring
scopeslist<string>
roleslist<string>

Cité par : SimulationRequest

MQTTSimulationRequest

object
packetobligatoirestring
will: a CONNECT's will, judged as a PUBLISH.Valeurs : publish subscribe will
topicobligatoirestring
A topic name (publish, will) or a filter (subscribe), $share/<group>/ included.
qosinteger
Bornes : valeur ≥ 0, ≤ 2Défaut : 0
response_topicstring
An MQTT 5 Response Topic
identityobligatoireMQTTSimulatedIdentity

Cité par : POST /simulate/mqtt

MQTTSimulatedIdentity

object

Who the device is supposed to be - nothing is verified. A key or a certificate is found by its id in the configuration in force.

kindobligatoirestring
Valeurs : token api_key certificate
idstring
api_key: the key's id; certificate: the auth.mtls client's id.
issuerstring
subjectstring
tenantstring
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).

Cité par : MQTTSimulationRequest

MQTTSimulationResult

object
verdictobligatoirestring
Valeurs : served refused
reason_codeinteger
The MQTT 5 reason code a refusal answers (0x87 = 135...).
causestring
The refusal's cause - the label of flexway.mqtt.packets.Valeurs : authentication not_authorized binding wildcard payload_invalid quota packet_too_large upstream_unavailable
operationstring
upstreamstring
writtenstring
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.

Cité par : POST /simulate/mqtt

SimulationResult

object
verdictobligatoirestring
Valeurs : served refused
statusobligatoireinteger
codestring
The refusal's problem code.
operationstring
upstreamstring
chainlist<string>
appliedlist<string>
outboundOutbound

Cité par : POST /simulate

Outbound

object

The request the upstream would receive, before the token exchange and the relay; credentials masked.

pathobligatoirestring
querystring
headersobligatoiremap<list<string>>

Cité par : SimulationResult

Liveness

object
statusobligatoirestring
Valeurs : ok
uptime_secobligatoireinteger

Cité par : GET /healthz

Readiness

object
statusobligatoirestring
Valeurs : ready not ready
operationsinteger
Operations served, when ready.
reasonstring
Why not, when not ready.

Cité par : GET /readyz

GRPCStatus

object

upstream_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.

codeobligatoireinteger
Exemple : 5
statusobligatoirestring
The code's name - what a client switches on.Exemple : NOT_FOUND
messagestring
detailslist<object>
The status details in the proto3 JSON mapping; a type the gateway does not know keeps only its "@type".

Cité par : Problem

FieldError

object
fieldobligatoirestring
Exemple : query.limit
ruleobligatoirestring
For a human.
codeobligatoirestring
The JSON Schema keyword broken, or the operator's name for it (errors.field_codes).

Cité par : Problem

KafkaOperation

object

An AsyncAPI operation served to Kafka clients (x-flexway-kafka-proxy).

operationobligatoirestring
identitiesobligatoirelist<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

object
versionobligatoireinteger
The configuration schema's version - not the gateway's, see build.
buildobligatoireBuildInfo
config_versionobligatoirestring
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 validate prints, and what a pipeline or the console expects to see served after a merge.
last_reloadobject
catalogobligatoirelist<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.
chainsobligatoiremap<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.

Cité par : GET /config

EventLog

object
replicaobligatoirestring
The answering process's host name - the pod's name.
capacityobligatoireinteger
Events kept per kind.
eventsobligatoirelist<Event>

Cité par : GET /events

Event

object

One 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.

atobligatoirestring
Format : date-time
kindobligatoirestring
Valeurs : reload breaker shedding delegation
reasonstring
Delegation - why the chain was refused.Valeurs : depth age revoked widened unverifiable
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.Format : int64
max_depthinteger
Delegation - the depth bound in force for the operation.
max_age_secondsinteger
Delegation - the age bound in force for the operation.Format : int64
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.
resultstring
Valeurs : loaded applied rejected unchanged
versionstring
causestring
upstreamstring
fromstring
Valeurs : closed half_open open
tostring
Valeurs : closed half_open open
statestring
Valeurs : started stopped

Cité par : EventLog

SparkplugNodes

object
replicaobligatoirestring
The answering process's host name - the pod's name.
capacityobligatoireinteger
observability.sparkplug.max_nodes.
offline_retention_secondsobligatoireinteger
observability.sparkplug.offline_retention
droppedobligatoireinteger
Nodes and host applications not kept since the start - the table was full of online nodes.Format : int64
nodesobligatoirelist<SparkplugNode>
hostsobligatoirelist<SparkplugHost>

Cité par : GET /sparkplug/nodes

SparkplugNode

object
tenantobligatoirestring
The node's group - the tenant it is bound to.
edge_nodeobligatoirestring
stateobligatoirestring
Valeurs : online offline moved unknown
sinceobligatoirestring
When the node took its state on this replica.Format : date-time
bd_seqinteger
The bdSeq of its last NBIRTH here; absent when none was read.Format : int64
will_bd_seqinteger
The bdSeq of the will (NDEATH) its connection registered; absent when none was read.Format : int64
seq_gapsobligatoireinteger
Messages whose seq was not the next since its birth here.Format : int64
bd_seq_gapsobligatoireinteger
Births whose bdSeq was not their will's.Format : int64
protocol_versionobligatoirestring
5 or 3.1.1; empty for an unknown node.
authobligatoirestring
The mode of identity of its connection - certificate, token, api_key; empty for an unknown node.
devices_onlineobligatoireinteger
Its devices online (DBIRTH without a later DDEATH) since its birth.
devices_totalobligatoireinteger
Its devices kept since its birth.
devicesobligatoirelist<SparkplugDevice>
Its devices (DBIRTH, DDEATH) since its birth, sorted by id - listed only when the node is asked for (node); empty otherwise.Bornes : éléments ≤ 100000
devices_truncatedobligatoireboolean
Past observability.sparkplug.max_devices_per_node
commandsobligatoireSparkplugCommands

Cité par : SparkplugNodes

SparkplugCommands

object

The commands (NCMD, DCMD) to the node that crossed this replica, admitted and refused.

admittedobligatoireinteger
Format : int64
refusedobligatoireinteger
Format : int64

Cité par : SparkplugNode

SparkplugHost

object

A host application, read from its STATE (spBv1.0/STATE/{host_id}, the host id bound to the tenant).

tenantobligatoirestring
host_idobligatoirestring
stateobligatoirestring
Valeurs : online offline
sinceobligatoirestring
Format : date-time

Cité par : SparkplugNodes

ErrorLog

object
replicaobligatoirestring
The answering process's host name - the pod's name.
capacityobligatoireinteger
Errors kept per kind.
write_limitobligatoireinteger
Errors detailed per second and per kind; past it they are counted in dropped.
kindsobligatoirelist<ErrorKindCount>
Each kind's count of the errors it could not detail since the start.
errorsobligatoirelist<GatewayError>

Cité par : GET /errors

ErrorKindCount

object
kindobligatoireErrorKind
droppedobligatoireinteger
Errors past the write limit since the start.Format : int64
last_dropped_atstring
The last of them; absent when none was dropped.Format : date-time

Cité par : ErrorLog

ErrorKind

string

upstream - 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.

Valeurs : upstream refused internal

Cité par : ErrorKindCountGatewayError

GatewayError

object

One error. Its fields are a closed list: no subject, address, received path, request, header, body, nor an upstream's or the network's text.

atobligatoirestring
Format : date-time
kindobligatoireErrorKind
operationobligatoirestring
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>.Bornes : longueur ≤ 128
statusobligatoireinteger
The HTTP status answered - for a refusal answered in gRPC's status, the one its code maps to.
codeobligatoirestring
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.
stageobligatoirestring
Where the error was written, derived from its code.Valeurs : routing identity authorization policies validation protection upstream response internal
causestring
Upstream errors only - why the upstream failed, a closed set; never the network's text.Valeurs : dial_refused dns tls timeout reset circuit_open bulkhead buffer_full rejected status other
duration_msobligatoirenumber
Time from the request's arrival to its answer.Format : double
trace_idstring
The request's trace when it was sampled.Motif : ^[0-9a-f]{32}$

Cité par : ErrorLog

BuildInfo

object

The 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.

versionobligatoirestring
Exemple : v1.0.0
commitobligatoirestring
Short commit; empty when the build did not say.Exemple : 9438ab3

Cité par : EffectiveConfig

CatalogEntry

object
operation_idobligatoirestring
methodobligatoirestring
pathobligatoirestring
The path template, never a concrete URL.
hostsobligatoirelist<string>
"*" stands for every host without contracts of its own.
upstreamobligatoirestring
summarystring
tagslist<string>
deprecatedobligatoireboolean
securityobligatoirelist<list<string>>
The alternatives, each the schemes it combines; an empty one is anonymous access.
rate_classstring
toolstring
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.
builtinobligatoireboolean
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.Valeurs : grpc
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_msobligatoireinteger
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.Format : int64
sunsetstring
The date a deprecated operation is withdrawn (x-flexway-sunset), YYYY-MM-DD.Motif : ^[0-9]{4}-[0-9]{2}-[0-9]{2}$
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.Valeurs : sse websocket grpc
security_detailobligatoirelist<CatalogAlternative>
The alternatives of security, in the same order, with each scheme's kind and what it requires.
effective_rate_classobligatoirestring
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.Valeurs : critical normal sheddable
validationstring
x-flexway-validation when declared; absent - the host's.Valeurs : full params off
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).
paramsobligatoirelist<CatalogParam>
The parameters in short - never a schema nor an example.
bodyobject
The request body in short; absent - none declared.
responsesobligatoirelist<CatalogResponse>
The declared responses in short - status as written ("200", "2XX", "default") and media types.

Cité par : EffectiveConfig

CatalogOwner

object

The team that answers for an operation (x-flexway-owner) - a team's channel, never a person.

teamobligatoirestring
Bornes : longueur ≤ 128
contactstring
Bornes : longueur ≤ 128

Cité par : CatalogEntry

CatalogAlternative

object
anonymousobligatoireboolean
The empty alternative {}: no identity needed.
schemesobligatoirelist<object>
scopeslist<string>
roleslist<string>

Cité par : CatalogEntry

CatalogParam

object
nameobligatoirestring
inobligatoirestring
Valeurs : path query header
requiredobligatoireboolean
typestring
The schema's type; "a|b" for a list of types.
formatstring

Cité par : CatalogEntry

A2AAgent

object
agentobligatoirestring
The agent's name in operation ids (a2a.<agent>.<Method>) and metrics.
cardobligatoirestring
The declared card, as flexway.yaml writes its path.
upstreamobligatoirestring
bindingsobligatoiremap<string>
The bindings served (JSONRPC, HTTP+JSON), each with the gateway's address.
methodsobligatoiremap<string>
The methods served, each with its rate class - free debits nothing.
verifyobligatoirestring
How the upstream's own card is verified - none until card verification is built.Valeurs : none
streamingobligatoireboolean
max_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_pathobligatoirestring
Where the gateway publishes the agent's card.

FederationState

object
statusobligatoireobject
toolsobligatoirelist<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>)".

Cité par : EffectiveConfig

CatalogCache

object
ttl_secondsobligatoireinteger
The longest a response is kept; the upstream's Cache-Control may shorten it.Format : int64
scopeobligatoirestring
public: anonymous callers; subject: keyed by tenant and subject.Valeurs : public subject
policystring
The cache policy it comes from; absent for the contract's x-flexway-cache.
hostsobligatoirelist<string>
The hosts it applies on; "*" alone: every host.

Cité par : CatalogEntry

Attachment

object
levelobligatoirestring
Valeurs : global host route operation
sourcestring
The host, the route motif, x-flexway-policies, or policies.fragments for the enforced head of the chain.

Cité par : ChainDetail

FragmentOrigin

object

The fragment an imported policy comes from; absent for a local definition.

importobligatoirestring
The import name flexway.yaml gives it - the prefix of its definitions.
fragmentobligatoirestring
The fragment's own name.
versionobligatoirestring
The fragment's semantic version - informative; the digest says what runs.
enforcedobligatoireboolean
At the head of every chain: never removed, never replaced.

PolicyFragment

object

One imported policy fragment.

importobligatoirestring
fragmentobligatoirestring
versionobligatoirestring
digestobligatoirestring
sha256:<hex>, the digest pinned - equal to the file's.
pathobligatoirestring
The file
signatureobligatoirestring
How the file was proven beyond its digest: none in this version.Valeurs : none
requires_uncheckedobligatoireboolean
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.
requiresobligatoireobject
definitionsobligatoirelist<string>
The imported names, <import>/<name>.
enforcedobligatoirelist<string>
The enforced definitions
unusedobligatoirelist<string>
The imported definitions no chain names - never an error.

Cité par : EffectiveConfig