Creates or replaces the Application's automatic-enrollment policy.
Full replace. The fallback must be `REQUEST_ACCESS` or `REJECT`, the environment rule must be specified, and the hourly cap at least 1 — anything else is a 400. Applies immediately: senders admitted under `PROVISION` are matched against this policy from the next message on. Save this before flipping an admission select to `PROVISION`; the Network PATCH refuses the enum with no policy in place.
Authorization
Bearer JWT Authorization header using the Bearer scheme. Enter 'Bearer' [space] and then your token.
In: header
Path Parameters
The owning Application id.
uuidThe tenant identifier
The matcher to set.
How a Fruxon.Model.AgentNetwork.NetworkProvisioningPolicy decides whether a sender's environment admits them to
just-in-time provisioning (design jit-provisioning.md §6). The environment being matched is the
sender's directory environment for provider-vouched channels (attributes never come from the
message body), or the host-asserted one for a signed embed identity.
A hard rule regardless of value: only Fruxon.Model.AgentNetwork.ProvisioningEnvironmentRule.Any may provision a participant with no
environment. The other two always land with EnvironmentId set, so the NULL-environment dead
zone the enrollment sweep skips cannot be reproduced through this front door.
"UNSPECIFIED" | "MATCH_LIST" | "ANY" | "REQUIRE_ASSERTED"What an Application does with a sender it has no grant for (design inbound-admission-policy.md §4).
Deliberately not the same type as Fruxon.Model.AgentNetwork.InboundAdmissionAction. That enum is the full space of runtime outcomes, most of which are correctness rather than policy — a revoked keep-out silences, a resolver fault defers, and neither is an Application's choice. This is only the part an operator gets to decide: what happens to someone we do not know.
"UNSPECIFIED" | "REQUEST_ACCESS" | "REJECT" | "PROVISION"int32Response Body
curl -X PUT "https://api.fruxon.com/v1/tenants/string/networks/497f6eca-6276-4993-bfeb-53cbbbba6f08/provisioningPolicy" \ -H "Content-Type: application/json" \ -d '{}'{
"networkId": "00000000-0000-0000-0000-000000000000",
"configured": false,
"environmentRule": "MATCH_LIST",
"environmentIds": [
"00000000-0000-0000-0000-000000000000"
],
"unmatchedFallback": "REQUEST_ACCESS",
"maxProvisionsPerHour": 0
}{
"type": "string",
"title": "string",
"status": 0,
"detail": "string",
"instance": "string",
"property1": null,
"property2": null
}{
"type": "string",
"title": "string",
"status": 0,
"detail": "string",
"instance": "string",
"property1": null,
"property2": null
}Removes the Application's automatic-enrollment policy.
Refused (400) while either admission policy on the Network is still `PROVISION` — flip the admission setting first, so the behaviour change is the one the operator asked for rather than a silently degraded setting.
Projects the Network's roster roles with holders and referencing agent contacts.
Inverts the People surface: instead of listing participants and the roles each one carries, this lists every roster role in the Network and, for each, who holds it and which agent contacts defer to it. A holder is reported with every tier that grants the role — `EXPERTISE` for a tenant-level expertise tag that applies everywhere, `EDGE_ROLE` for a tag on a member edge in this Network — and an edge-granted holder names the agents whose edge grants it, since that is the only place the tag can be removed. `consultable` reports whether a consult-allowed member edge exists: a holder without one is still reachable for delivery through a role-bound contact but is refused for `consult_for_role`. A role with references and no holders is the actionable gap this surface exists to expose — deliveries and consults to it refuse at runtime. Roles group case-insensitively and are reported using the tenant capability catalog's casing; `inCatalog` distinguishes a catalog role from one that exists only as an ad-hoc tag. Read-only and fully derived from existing expertise, member-edge, and contact-slot state — it adds no storage of its own, so nothing here can drift from the People surface. The whole role vocabulary is projected in memory before paging — it is tens of names, not thousands (participants are paged on the People surface, not here) — so a page is a slice of the complete, fully ordered result and omitting `pageSize` returns everything.