Skip to content

feat(server): add Accounts RPC methods#14

Merged
jgpruitt merged 1 commit into
mainfrom
feature/server-accounts-rpc
Apr 7, 2026
Merged

feat(server): add Accounts RPC methods#14
jgpruitt merged 1 commit into
mainfrom
feature/server-accounts-rpc

Conversation

@jgpruitt

@jgpruitt jgpruitt commented Apr 7, 2026

Copy link
Copy Markdown
Collaborator

Summary

Implements JSON-RPC methods for the Accounts API (Chunk 6 of server implementation).

Changes

New Files

  • packages/server/rpc/accounts/types.ts - AccountsRpcContext type and guards
  • packages/server/rpc/accounts/schemas.ts - Zod schemas for all 18 methods
  • packages/server/rpc/accounts/schemas.test.ts - 49 schema validation tests
  • packages/server/rpc/accounts/me.ts - Identity methods (me.get)
  • packages/server/rpc/accounts/org.ts - Organization methods (create, list, get, update, delete)
  • packages/server/rpc/accounts/org-member.ts - Member methods (list, add, remove, updateRole)
  • packages/server/rpc/accounts/engine.ts - Engine methods (create, list, get, update)
  • packages/server/rpc/accounts/invitation.ts - Invitation methods (create, list, revoke, accept)

Methods Implemented (18 total)

Method Description
me.get Get current authenticated identity
org.create Create organization (caller becomes owner)
org.list List organizations for identity
org.get Get organization by ID
org.update Update organization name/slug
org.delete Delete organization
org.member.list List organization members
org.member.add Add member to organization
org.member.remove Remove member from organization
org.member.updateRole Update member's role
engine.create Create engine for organization
engine.list List engines for organization
engine.get Get engine by ID
engine.update Update engine name/status
invitation.create Create invitation to join org
invitation.list List pending invitations
invitation.revoke Revoke pending invitation
invitation.accept Accept invitation (join org)

Authorization

All methods enforce proper authorization:

  • Membership checks for read operations
  • Admin/Owner role required for management operations
  • Owner-only for sensitive operations (delete org, add owners)
  • Handles ORG_MUST_HAVE_OWNER constraint properly

Test Results

205 pass (all server tests)
49 accounts schema tests

Implements JSON-RPC methods for the Accounts API:

Identity methods:
- me.get: Get the current authenticated identity

Organization methods:
- org.create: Create a new organization (caller becomes owner)
- org.list: List organizations for the current identity
- org.get: Get organization by ID
- org.update: Update organization name/slug
- org.delete: Delete an organization

Organization member methods:
- org.member.list: List members of an organization
- org.member.add: Add a member to an organization
- org.member.remove: Remove a member from an organization
- org.member.updateRole: Update a member's role

Engine methods:
- engine.create: Create a new engine for an organization
- engine.list: List engines for an organization
- engine.get: Get engine by ID
- engine.update: Update engine name/status

Invitation methods:
- invitation.create: Create an invitation to join an organization
- invitation.list: List pending invitations for an organization
- invitation.revoke: Revoke a pending invitation
- invitation.accept: Accept an invitation (adds caller to org)

All methods enforce proper authorization:
- Membership checks for read operations
- Role-based access for admin operations
- Owner-only for sensitive operations

Includes 49 schema tests for validation.
@jgpruitt jgpruitt merged commit c7e5ef6 into main Apr 7, 2026
3 checks passed
@jgpruitt jgpruitt deleted the feature/server-accounts-rpc branch April 7, 2026 20:18
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant