Grants a participant access to the Network.
The participant must exist and be a Person or Group; an AI agent is a member/peer and yields `400 Bad Request`. Idempotent: re-granting an existing participant re-applies its relationship and §17.8 policy and re-activates a revoked grant. Applies immediately.
Authorization
Bearer JWT Authorization header using the Bearer scheme. Enter 'Bearer' [space] and then your token.
In: header
Path Parameters
The owning Network id.
uuidThe tenant identifier
The participant to grant plus relationship and per-customer policy.
The Fruxon.Model.Participants.Participant to grant access to (a Person or Group).
uuidIn what capacity a Fruxon.Model.Participants.Participant may interact in a
Fruxon.Model.AgentNetwork.Network — the coarse Layer-1 authorization verb (design
network-scoped-agent-platform.md §5.2, §17.7). This is per-(Participant, Network); the
fine per-member response behaviour lives on Fruxon.Model.AgentNetwork.NetworkMemberParticipantRelation instead.
Note the invariant (§5.2): Audience = External never self-authorizes — a served relationship is
always an explicit grant, never derived from the participant's audience alone.
"UNSPECIFIED" | "SERVED" | "OBSERVER" | "ADVISOR"Per-customer agent switch (design §17.8 NetworkCustomerPolicy.AgentMode): whether the network's
AI agents may answer this served participant, or whether the customer is handled by humans only. Lives
on the Layer-1 Fruxon.Model.AgentNetwork.NetworkParticipantAccess relationship so an operator can turn the agent off
for one customer without touching the customer's human/escalation path or the agent's other customers.
"UNSPECIFIED" | "ON" | "OFF_HUMAN_ONLY"Response Body
curl -X POST "https://api.fruxon.com/v1/tenants/string/networks/497f6eca-6276-4993-bfeb-53cbbbba6f08/participants" \ -H "Content-Type: application/json" \ -d '{}'{
"id": "00000000-0000-0000-0000-000000000000",
"networkId": "00000000-0000-0000-0000-000000000000",
"participantId": "00000000-0000-0000-0000-000000000000",
"relationshipKey": "SERVED",
"status": "ACTIVE",
"source": "MANUAL",
"agentMode": "ON",
"escalationOverride": {
"tiers": [
{
"operatorParticipantIds": [],
"strategy": "UNSPECIFIED"
}
],
"mode": "PREFERRED",
"allOperatorParticipantIds": []
},
"createdAt": 0,
"modifiedAt": 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
}Partially updates a served-participant grant's relationship, status, and/or §17.8 policy.
Set the status to `REVOKED` to withdraw access (soft — the row and its audit survive), retag the relationship, or flip the per-customer agent-mode policy. Omitted fields stay unchanged; no field may carry the UNSPECIFIED sentinel. Applies immediately.
Projects the Network's people with their composable role badges and provenance.
Returns every participant that holds any live relationship in the Network — an active access grant, an active operator membership, or a consult-allowed member edge — with their additive role badges. Each badge exposes the source relationship (access grant / operator membership / member relation) that granted it, so the UI can render "why" and offer a narrow, badge-scoped revoke. Pass badge to filter to one composable view (`CUSTOMER`, `INTERNAL`, `OBSERVER`, `OPERATOR`, `ADVISOR`, or `CHANNEL`); the returned counts always reflect the full projection so every tab shows its total.