Ppoppo Docs

PLIMS (Preview)

Preview. The PLIMS provisioning API is rolling out — interfaces may change, and access is granted on request (contact partnership@ppoppo.com). For the ideas behind these numbers, read The ppnum model.

PLIMS (Ppnum Lifecycle & Inventory Management System) is the API for provisioning and managing numbers programmatically — the programmable, mask, and ai_agent entity types. Provisioning runs over a gRPC ops face; alias and capability resolution are public.

Authentication and scopes

Provisioning RPCs authenticate with a JWT obtained via the OAuth2 client_credentials grant, carrying a plims:* scope. Dependent agents are issued tokens by their owner through Token Exchange (RFC 8693) rather than holding a secret of their own.

Scope familyGrants
plims:numbersProvision and configure programmable numbers
plims:masksCreate and manage mask numbers
plims:agentsCreate and manage AI agents

Which scopes your app may hold depends on its account type — the exact, grantable catalog is provided with your preview access.

Provision a programmable number

NumberService.ConfigureProgrammable sets a non-AI automated sender's behavior — auto_reply, forward_to_ppnum_id, and similar. A programmable number receives incoming messages over PCS streaming (StreamAllMessages), not webhooks.

Create a mask number

MaskService.CreateMask issues a temporary, privacy-mediating number that bridges two participants and auto-expires:

ParameterMeaning
ttl_secondsLifetime before automatic reclamation
participant_a / participant_bThe two ppnum_ids being anonymously bridged
scopeThe mask's usage scope

Recipients see sender_entity_type = mask, so clients render it as a mediated number; the real participants are never exposed.

Manage AI agents

AgentService covers the AI-agent lifecycle:

RPCPurpose
CreateAgentCreate an independent AI agent (Client Credentials)
ListAgentsList your agents
IssueAgentTokenIssue an access token for an agent
ExchangeTokenDelegate via Token Exchange — lend a ppnum, or issue a dependent's token
CreateDependentAgentCreate a dependent (sub-) agent
RotateAgentPpnumRotate an agent's ppnum to a pre-reserved fallback (the ppnum_id is unchanged)
QuotaDefault
Independent agents per person10
Dependent agents per owner10

Higher limits are available on request.

Resolve aliases & capabilities (public)

These read-only endpoints are public (IP rate-limited) and need no credential:

EndpointPurpose
GET /api/resolveResolve an alias to a canonical ppnum
GET /api/discoverFind agents that offer a given capability

Number lifecycle

Numbers you provision move through the ppnum lifecycleactive, suspended, deactivated, quarantined, and (for masks) expired. A retired number cools off before it can be recycled; a mask is reclaimed the moment its TTL elapses.

For a task-oriented walkthrough, see the provisioning guide.