Data model

The Keystone lists grouped by area, with lifecycles.

features/keystone/models/index.ts registers the lists. The repository's docs/schema-map.md has every field.

AreaLists
Firm and peopleFirm, Office, User, FirmMembership, Role
Machine accessApiKey, OAuthClient, OAuthConsent, OAuthToken, AgentPrincipal, AgentCredential, AgentGrant, AgentAction, AgentActionEvent
ContactsContact, Address, ContactMethod
IntakeIntake, IntakeParticipant, IntakeSubmission, Consultation
ConflictsConflictCheck, ConflictSearchTerm, ConflictMatch, ConflictDisposition
MattersPracticeArea, Matter, MatterParty, MatterTeamMember, EthicalWall, EthicalWallMember, MatterStatusEvent
CalendarCourt, Docket, DocketEntry, Deadline, LegalTask
CommunicationsCommunicationThread, CommunicationParticipant, CommunicationMessage, CommunicationDelivery
DocumentsDocument, DocumentVersion, SignatureRequest, DocumentSigner, SignatureEvent
BillingRateCard, RateRule, TimeEntry, Expense, RetainerAgreement, Invoice, InvoiceLine
PaymentsPayment, PaymentAllocation, Refund, PaymentProvider
TrustTrustAccount, TrustLedgerAccount, TrustTransaction, TrustLedgerEntry, TrustBalanceSnapshot, TrustReconciliation
PortalPortalAccount, PortalMatterAccess, PortalShare, PortalSession, PortalDiscoveryPolicy, PortalGrantIntent
Public sitePublicSitePolicy, AttorneyProfile
IntegrationsIntegrationConnection, ExternalRecordLink, WebhookSubscription, WebhookDelivery, WebhookDeliveryAttempt
GovernanceRetentionPolicy, RetentionHold, RetentionAction, AuditEvent

Tenancy

Every firm-owned list has a firm relationship. Shared hooks assign the active firm on create and reject links to another firm's records.

Append-only

Document versions, trust entries, matter status events, signature events, audit events, and agent action events are append-only.

Lifecycles

RecordPath
Intakenew → screening → conflict_review → consultation → decision → converted, declined, withdrawn
Conflict checkrequested → running → review_required → cleared, conflict_found
Matterproposed → pending_conflict → open, on_hold, closing, closed; declined
Consultationrequested → scheduled → completed, cancelled, no_show
Invoicedraft → approved → issued → partially_paid → paid; overdue, void
Refundrequested → approved → processing → succeeded, failed

On this page