Skip to content

feat(server): add Engine RPC API key methods#13

Merged
jgpruitt merged 1 commit into
mainfrom
feature/server-engine-apikey
Apr 7, 2026
Merged

feat(server): add Engine RPC API key methods#13
jgpruitt merged 1 commit into
mainfrom
feature/server-engine-apikey

Conversation

@jgpruitt

@jgpruitt jgpruitt commented Apr 7, 2026

Copy link
Copy Markdown
Collaborator

Summary

Implements API key management methods for the Engine RPC endpoint (/api/v1/engine/rpc).

Methods Added

Method Description
apiKey.create Create a new API key (returns raw key once - store securely!)
apiKey.get Get API key metadata by ID
apiKey.list List API keys for a user
apiKey.revoke Revoke an API key (soft delete, sets revokedAt)
apiKey.delete Permanently delete an API key

New Files

  • rpc/engine/api-key.ts - API key method handlers

Changes

  • rpc/engine/schemas.ts - Added API key schemas with expiration timestamp support
  • rpc/engine/schemas.test.ts - Added 8 new tests
  • rpc/engine/index.ts - Merged apiKeyMethods registry

Security Notes

  • rawKey is only returned from apiKey.create - it cannot be retrieved again
  • Keys are hashed with bcrypt before storage
  • apiKey.revoke soft-deletes (preserves audit trail)
  • apiKey.delete permanently removes the key

Testing

  • 156 tests passing (8 new schema tests)
  • All checks pass (format, lint, typecheck)

Part of

Server implementation chunk 5/9

This completes the Engine RPC methods. Chunks 6-9 cover Accounts RPC and OAuth.

Implements API key management for the Engine RPC endpoint:
- apiKey.create: Create a new API key (returns raw key once)
- apiKey.get: Get API key metadata by ID
- apiKey.list: List API keys for a user
- apiKey.revoke: Revoke an API key (soft delete)
- apiKey.delete: Permanently delete an API key

Adds 8 new schema tests (156 total tests passing).
@jgpruitt jgpruitt merged commit a487bc4 into main Apr 7, 2026
2 checks passed
@jgpruitt jgpruitt deleted the feature/server-engine-apikey branch April 7, 2026 20:07
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