Ppoppo Docs

What is Ppoppo?

Ppoppo provides two services you can integrate with. Most integrations start with Sign in with Ppoppo to identify the user, then optionally use the Messaging External API to send that user notifications.

ServiceDomainWhat it does
PAS — Ppoppo Accounts Systemaccounts.ppoppo.comOAuth2 authentication and user identity ("Sign in with Ppoppo")
PCS — Ppoppo Chat Systemapi.ppoppo.comMessaging, polls, and real-time event streaming

Architecture

                 Your application
   ┌────────────┬─────────────────┬────────────┐
   │ Web client │ iOS / Android   │  Backend   │
   └────────────┴────────┬────────┴────────────┘

          ┌──────────────┴───────────────┐
          │ HTTPS (OAuth2)               │ gRPC (TLS)
          ▼                              ▼
   accounts.ppoppo.com            api.ppoppo.com/ext
   (authentication)               (External API)
   • OAuth2 PKCE S256             • Send messages
   • User identity                • Create polls
   • Token management             • Stream events

What you can build

CapabilityDescriptionRequired
OAuth2 loginUsers sign in with their Ppoppo accountYes
User identityRetrieve ppnum and profile informationYes
MessagingSend notifications through Ppoppo chatOptional
PollsSend interactive polls and collect responsesOptional

Two kinds of credential

Ppoppo issues two distinct credentials, and it matters not to confuse them:

  • A login client (client_id only) — used for the user-facing "Sign in with Ppoppo" flow. It uses PKCE S256 and has no client_secret.
  • An External API client (client_id + client_secret) — used only to obtain a token for the Messaging External API through the OAuth2 client_credentials grant.

The login client and the External API client are separate registrations with separate credentials. The login flow never uses a client_secret; the External API never uses the PKCE login client. See the Sign-in reference and the Messaging reference.

Key terms

TermMeaning
ppnumA user's Ppoppo number — their account identifier (≥11 digits, displayed as 123-1234-5678).
ppnum_idThe immutable internal reference for a ppnum, returned as the sub claim in tokens. Store this to link users to your records.
PKCEProof Key for Code Exchange (RFC 7636) — required for every OAuth2 login client.

To understand the identity model in depth — entity types, AI agents, aliases — read The ppnum model. To understand why the platform is shaped the way it is (PKCE-only, gRPC, the 1st-party / 3rd-party boundary), read Trust boundary.

Ready to build? Start with the Quickstart.