Skip to content

Managing Apps

GET /api/v1/apps

Returns all apps registered by the authenticated user.

PUT /api/v1/apps/:appId
{ "name": "Updated Name", "domain": "new.example.com" }

At least one field (name or domain) must be provided.

Generate a new key and invalidate the old one:

POST /api/v1/apps/:appId/rotate-key
→ { "apiKey": "osc_newkey...", "message": "Store the new api_key securely." }
DELETE /api/v1/apps/:appId
→ { "success": true, "message": "App deactivated" }

Deactivation is soft — the app record remains but the API key no longer works.

Register webhooks to receive real-time notifications:

POST /api/v1/webhooks
Headers: X-Api-Key: your-key
{
"url": "https://example.com/webhook",
"events": ["member.joined", "record.created"],
"communityDid": "did:plc:community123"
}
EventTrigger
member.joinedUser joins a community
member.leftUser leaves a community
member.approvedAdmin approves a join request
member.rejectedAdmin rejects a join request
member.removedAdmin removes a member
record.createdRecord created in community repo
record.updatedRecord updated
record.deletedRecord deleted

Each webhook has a secret. Payloads include an X-Webhook-Signature header containing an HMAC-SHA256 signature:

X-Webhook-Signature: sha256=<hex-encoded-hmac>

Verify by computing HMAC-SHA256 of the request body using the webhook secret.

GET /api/v1/webhooks # List webhooks
PUT /api/v1/webhooks/:id # Update URL, events, or active status
DELETE /api/v1/webhooks/:id # Remove webhook