Team & account
Invite teammates, manage members, mint and revoke API keys, and read the audit log of who did what.
Everything on this page is on the account plane and takes a pts_ session token. In the app it lives under Account.
Members and roles
GET /v1/tenants/{tid}/members lists members with their role. Roles are owner, admin and member; see Concepts for what each can do.
DELETE /v1/tenants/{tid}/members/{aid} removes one and revokes their API keys. Removing the last owner is refused. Removing someone an on-call schedule, escalation ladder or override still names is refused with the list.
Invites
POST /v1/tenants/{tid}/invites with {"email": "…", "role": "member"} mints an invite token, valid seven days. Owner or admin only, and never above your own role. GET lists pending ones; DELETE /v1/tenants/{tid}/invites/{id} revokes one.
The invitee signs up or in, then POST /v1/invites/{token}/redeem. In the app the tenant picker has a Join field for the token.
A self-hosted tenant refuses invites on pingtower.com, because its membership lives on the box. Use pairing seats instead.
API keys
POST /v1/tenants/{tid}/keys mints a ptk_ key, shown once. GET lists key ids and creation times, never secrets. DELETE /v1/tenants/{tid}/keys/{kid} revokes. Keys have ids, not names, so note which id went where.
Your account
- GET
/v1/mereturns the account and every membership, which is where “I’m in three companies” becomes visible. - POST
/v1/account/emailand/v1/account/passwordchange them; both re-prove the current password. - POST
/v1/logoutends the session. - POST
/v1/account/deletewith your email and password deletes the account. Refused while you are the last owner of any tenant; hand it over or delete the tenant first. In the app: Account → Delete account.
Forgotten password
The service sends no email. On the hosted service, write to [email protected] from the account’s address. On your own box, POST /v1/account/password/reset-request writes a reset token to the daemon’s log for you to relay, and POST /v1/account/password/reset redeems it.
Tenant lifecycle
POST /v1/tenants/{tid}/rename is owner or admin. POST /v1/tenants/{tid}/delete is owner only and removes every project, alert and log line the tenant holds. GET /v1/tenants/{tid}/plan reads plan and usage.
Audit log
GET /v1/tenants/{tid}/audit returns entries of actor, action, detail, created_at, newest first. Every write on both planes is recorded: tenant.create, tenant.rename, invite.create, invite.redeem, invite.revoke, member.remove, apikey.issue, apikey.revoke, project.*, source.* including source.rotate_token, rule.*, integration.*, action.* including action.fire, oncall.*, report.*, pair.issue, pair.redeem, relay.configure, plan.change, account.delete, and every alert.ack and alert.resolve. The app shows it under Account → Audit log.