Directory Models
This document describes the public GraphQL API for the "Directory" concepts. The directory is a lightweight CRM system used in conjunction with other tools to simplify management of investors, entities, and people, for a given GP.
Overview
The Directory API is designed to help organizations manage structured information about investors, legal entities, and people, along with custom fields and schema-driven validation. All directory objects are associated with an Organization
, and access is scoped to the authenticated user's organization context.
Core Concepts
Organization
-
Fields:
id
(UUID): Unique identifier.name
(String): Organization name.handle
(String): Unique handle.createdAt
(DateTime): Creation timestamp.directoryInvestors
([DirectoryInvestor]): Investors associated with the organization.directoryPeople
([DirectoryPerson]): People associated with the organization.directoryEntities
([DirectoryEntity]): Legal entities associated with the organization.directorySchemas
([DirectorySchema]): Schemas available to the organization.
-
Query:
organization(id: UUID!): Organization
- Fetches an organization by ID (must match the authenticated user's org).
DirectoryInvestor
Represents an investor in the directory.
-
Fields:
id
(UUID)email
(String, nullable)name
(String)attribution
(String)notes
(String)tags
([String])createdAt
(DateTime)updatedAt
(DateTime)events
([DirectoryInvestorEvent])senderOrganization
(Organization)customFields
(JSON)directorySchema
(DirectorySchema, nullable)directoryEntities
([DirectoryEntity]): Linked entities.directoryPeople
([DirectoryPerson]): Linked people.
-
Mutations:
createDirectoryInvestor(investor: InvestorCreateInput!): DirectoryInvestor
updateDirectoryInvestor(investor: InvestorUpdateInput!): DirectoryInvestor
associateEntityToInvestor(investorId: UUID!, entityId: UUID!): DirectoryInvestor
associatePersonToInvestor(directoryInvestorId: UUID!, directoryPersonId: UUID!): DirectoryInvestor
disassociateEntityFromInvestor(directoryInvestorId: UUID!, directoryEntityId: UUID!): DirectoryInvestor
dissassociatePersonFromInvestor(directoryInvestorId: UUID!, directoryPersonId: UUID!): DirectoryInvestor
-
Input Types:
InvestorCreateInput
name
(String, required)email
(String, optional)tags
([String], optional)notes
(String, optional)customFields
(JSON, optional)directorySchemaId
(UUID, optional)
InvestorUpdateInput
id
(UUID, required)name
(String, required)email
(String, optional)tags
([String], optional)notes
(String, optional)customFields
(JSON, optional)directorySchemaId
(UUID, optional)
DirectoryEntity
Represents a legal entity (e.g., company, trust) in the directory.
-
Fields:
id
(UUID)createdAt
(DateTime)externalReferences
([String])name
(String)shortId
(ID)type
(String)directorySchema
(DirectorySchema, nullable)customFields
(JSON)
-
Mutations:
createDirectoryEntity(entity: DirectoryEntityCreateInput!): DirectoryEntity
updateDirectoryEntity(entity: DirectoryEntityUpdateInput!): DirectoryEntity
-
Input Types:
DirectoryEntityCreateInput
name
(String, required)type
(String, required)externalReferences
([String], optional)customFields
(JSON, optional)directorySchemaId
(UUID, required)
DirectoryEntityUpdateInput
id
(UUID, required)name
(String, required)type
(String, required)externalReferences
([String], required)customFields
(JSON, optional)directorySchemaId
(UUID, required)
DirectoryPerson
Represents a person in the directory. Often called a 'Contact' in the product.
-
Fields:
id
(UUID)createdAt
(DateTime)email
(String)externalReferences
([String])name
(String)senderOrganizationId
(UUID)customFields
(JSON)senderOrganization
(Organization)directorySchema
(DirectorySchema, nullable)
-
Mutations:
createDirectoryPerson(person: DirectoryPersonCreateInput!): DirectoryPerson
updateDirectoryPerson(person: DirectoryPersonUpdateInput!): DirectoryPerson
-
Input Types:
DirectoryPersonCreateInput
name
(String, required)email
(String, required)customFields
(JSON, optional)directorySchemaId
(UUID, required)
DirectoryPersonUpdateInput
id
(UUID, required)name
(String, required)email
(String, required)customFields
(JSON, optional)directorySchemaId
(UUID, required)
DirectorySchema
Defines the schema for directory objects, enabling custom fields and validation.
- Fields:
id
(UUID)schema
(JSON): The schema definition.version
(Int)type
(String)
DirectoryInvestorEvent
Represents an event in the lifecycle of a DirectoryInvestor (e.g., creation, update, association of an entity, etc).
- Fields:
id
(UUID)metadata
(JSON)createdAt
(DateTime)account
(Account, nullable)
Relationships
- Organization is the root context for all directory objects.
- DirectoryInvestor can be linked to multiple DirectoryEntity and DirectoryPerson objects.
- DirectoryEntity and DirectoryPerson reference a DirectorySchema for custom fields and validation.
- DirectoryInvestorEvent tracks events that happen to investors. Events are automatically generated for investor lifecycle changes.