Covenant API
Endpoint: https://covenant.co/api/v1/graphql
Read-only access to your investment, document, and review data. Authenticate with your WorkOS API key.
API Endpoints
https://covenant.co/api/v1/graphql
Authentication
All requests require an API key issued by Covenant via WorkOS. Pass the key in the Authorization header:
Authorization: Bearer YOUR_API_KEY
API keys are scoped to your organization. Contact your Covenant administrator or support@covenant.co to obtain one.
Permissions
Access to the application and API is controlled by WorkOS permissions assigned to each user. Permissions are managed in the WorkOS Admin Portal (or via WorkOS-federated IdPs such as PingOne) and can be customized per organization.
Today the application uses three permissions:
| Permission | Grants |
|---|---|
org:summary:read |
View investments, documents, reviews, issues, and exports |
org:summary:manage |
Create, update, and delete the above; trigger exports; dismiss notifications |
ai:ask-covenant:data |
Use Ask Covenant against your organization's data |
Reference data (managers, client entities, law firms, categories, geographies) and hub tiles are Covenant-administered and not exposed to organization users.
Authentication, session, organization-membership, invitation, and SSO-connection events in the audit log originate from WorkOS webhooks; the permission that authorized those actions is the WorkOS permission held by the actor at the time, not an application-level check.
Rate Limits
The public API allows 30 requests per minute per API key. Exceeding this limit returns a TOO_MANY_REQUESTS error. Wait and retry after a short backoff.
Pagination
List queries (investments, managers, etc.) use cursor-based pagination with first and after arguments. Use pageInfo.endCursor as the after value for the next page.
Error Handling
Errors are returned in the standard GraphQL errors array with an extensions.code field.
UNAUTHORIZED- Missing or invalid API keyFORBIDDEN- Key valid but insufficient permissionsTOO_MANY_REQUESTS- Rate limit exceededBAD_USER_INPUT- Invalid query arguments
Audit Log Events
Events streamed to your SIEM (Splunk, Datadog, etc.) via WorkOS Log Streams. Each event includes action, actor, targets, context, and metadata.
Configure a Log Stream destination in the Admin Portal or contact support@covenant.co.
The Permission column lists the WorkOS permission required to trigger the event:
- A permission slug (e.g.
org:summary:manage) — the actor must hold this WorkOS permission, granted directly or via a federated IdP such as PingOne. - Any signed-in member — no permission slug gates the action; any authenticated member of your organization can trigger it.
- Covenant admin — internal Covenant operation; not exposed to organization users.
- WorkOS-enforced — the event originates from a WorkOS platform webhook; authorization was applied by WorkOS on the actor, not by an application-level check.
Actor permissions snapshot
Every application-emitted event carries actor.metadata.permissions — a sorted, comma-joined snapshot of the WorkOS permissions the session held at emission time (e.g. org:summary:manage,org:summary:read,strategies:real-estate). Use this to write role-agnostic SIEM rules: assert against the permission strings in the Permission column above, not against your own WorkOS role names. Roles can be renamed, added, or restructured without changing detection logic — only the underlying permission contract matters.
For impersonated sessions the snapshot is on event metadata as metadata.impersonated_user_permissions instead, since me.scopes reflects the impersonated user while the actor is the Covenant admin. The actor in that case has no permissions field.
Investments
| Action | Description | Permission |
|---|---|---|
investment.created |
A new investment was added to the portfolio. | org:summary:manage |
investment.updated |
An investment record was modified. | org:summary:manage |
investment.deleted |
An investment was removed from the portfolio. | Covenant admin |
investment.metadata_imported |
Investment metadata values were imported from a CSV, adding any fields the file named (admin surface). | Covenant admin |
Documents
| Action | Description | Permission |
|---|---|---|
document.created |
A new document was created. | org:summary:manage |
document.updated |
A document record was modified. | org:summary:manage |
document.deleted |
A document was deleted. | Covenant admin |
document.version_created |
A new version was uploaded for a document. | org:summary:manage |
document.version_updated |
A document version was modified. | Covenant admin |
document.version_deleted |
A document version was removed. | Covenant admin |
document.version_data_deleted |
The extracted data for a document version was cleared. | org:summary:manage |
document.version_downloaded |
The original file for a document version was downloaded. | org:summary:read |
document.version_markup_downloaded |
The marked-up file for a document version was downloaded. | org:summary:read |
document.version_pdf_preview_downloaded |
The PDF preview for a document version was downloaded for in-browser viewing. | org:summary:read |
Reviews
| Action | Description | Permission |
|---|---|---|
summary.created |
A new review / answer set was created for a document. | Covenant admin |
summary.deleted |
A review / answer set was deleted. | Covenant admin |
summary.ready |
A review was marked ready and the "Summary Ready" notification was sent. | Covenant admin |
mfn.review_reopened |
A released MFN review was taken back into review, hiding its elections from the client. | Covenant admin |
summary.answer_updated |
A consensus answer was edited by a reviewer. | org:summary:manage |
summary.answer_context_updated |
The supporting context for an answer was updated. | org:summary:manage |
Issues
| Action | Description | Permission |
|---|---|---|
issue.upserted |
An issue (flag) was created or updated on a document. | org:summary:manage |
issue.language_updated |
Suggested language on an issue was updated. | org:summary:manage |
issue.language.requested |
AI-suggested language was requested for an issue. | org:summary:read |
markup.requested |
A markup export was requested for a document. | org:summary:read |
AI
| Action | Description | Permission |
|---|---|---|
ai.chat_started |
A user submitted a prompt to an AI chat assistant. Carries the prompt, not the response. Emitted on accepted chats only — a request refused before the model runs produces no event. Reaches a customer only once a matching event schema is registered in their WorkOS environment. | Any signed-in member |
ai.guardrail_triggered |
A guardrail around an AI chat refused, bounded or silently emptied a request. Carries the guardrail id, a severity, and the same prompt fields as ai.chat_started so the flag joins back to the chat that caused it. One event per hit, so a single chat turn can produce several. Reaches a customer only once a matching event schema is registered in their WorkOS environment. |
Any signed-in member |
ai.connector_tool_called |
A user called a tool through the Covenant MCP connector from an AI assistant such as Claude. Carries the tool name, the id of the registered client app that made the call, and source: connector, which every event emitted during a connector call also carries. Emitted before the tool runs, so a call that later fails is still recorded. Reaches a customer only once a matching event schema is registered in their WorkOS environment. |
Any signed-in member |
Exports
| Action | Description | Permission |
|---|---|---|
export.investment_markup |
An investment markup export was generated. | org:summary:manage |
export.document_markup |
A document markup export was generated. | org:summary:manage |
export.investment_summary |
An investment summary was exported. | org:summary:manage |
export.investment_summary_excel |
An investment's summary terms table was exported to Excel (client-built). | org:summary:read |
export.document_summary |
A document summary was exported. | org:summary:manage |
export.portfolio_analysis |
A portfolio analysis report was exported. | org:summary:manage |
export.awe_comparison |
An AWE (Investor Consents) comparison report was exported. | org:summary:manage |
export.awe_transposed |
The Investor Consents request-type (transposed) view was exported. | org:summary:read |
export.awe_survey_result |
An Investor Consents amendment's survey results were exported. | org:summary:read |
export.fund_amendments |
A fund's amendments comparison was exported. | org:summary:read |
export.mfn_summary |
An investment's MFN election summary was exported. | org:summary:read |
export.compare_investment_versions |
A version comparison export was generated for an investment. | org:summary:manage |
export.compare_investment_custom |
A custom comparison export was generated for an investment. | org:summary:manage |
export.compare_document_versions |
A version comparison export was generated for a document. | org:summary:manage |
export.compare_document_custom |
A custom comparison export was generated for a document. | org:summary:manage |
export.investment_notes |
Investment issue notes were exported. | org:summary:manage |
export.investment_comments |
Investment issue comments were exported. | org:summary:manage |
export.investment_language |
Investment issue suggested language was exported. | org:summary:manage |
export.document_notes |
Document issue notes were exported. | org:summary:manage |
export.document_comments |
Document issue comments were exported. | org:summary:manage |
export.document_language |
Document issue suggested language was exported. | org:summary:manage |
export.investment_word |
A Word document was exported for an investment. | org:summary:read |
export.document_word |
A Word document was exported for a document. | org:summary:read |
export.investment_type_transposed |
The Investment Data investment-type (transposed) view was exported. | org:summary:read |
export.portfolio_statistics_excel |
A portfolio's term statistics were exported to Excel (client-built). | org:summary:read |
export.investment_metadata |
Investment metadata was exported as a spreadsheet (admin surface). | org:summary:read |
export.metadata_instances |
An organization's metadata registry values were exported as a CSV (admin surface). | org:summary:read |
export.metadata_import_template |
An organization's metadata values were exported as a CSV import template (admin surface). | org:summary:read |
export.job_model_judge |
A job's per-question model answers and judge decisions were exported as a CSV (admin surface). | org:summary:read |
export.credit_covenants |
A credit covenant review was exported as a spreadsheet (admin surface). | org:summary:read |
export.survey_csv |
A survey composition was exported as the operator questions and prompts CSVs (admin surface). | org:summary:read |
export.ai_chat |
An AI chat conversation was exported as a Markdown file (client-built). Carries the conversation id, its chat mode and how many turns the file held, never the text of the conversation. | ai:ask-covenant:data |
Notifications
| Action | Description | Permission |
|---|---|---|
notification.created |
A notification was sent to organization users. | org:summary:manage |
notification.deleted |
A notification was dismissed. | org:summary:manage |
Hub
| Action | Description | Permission |
|---|---|---|
hub_tile.created |
A hub tile was added to an organization's dashboard. | Covenant admin |
hub_tile.updated |
A hub tile was modified. | Covenant admin |
hub_tile.deleted |
A hub tile was removed. | Covenant admin |
Reference Data
| Action | Description | Permission |
|---|---|---|
manager.created |
A fund manager record was created. | Covenant admin |
manager.updated |
A fund manager record was modified. | Covenant admin |
manager.deleted |
A fund manager record was deleted. | Covenant admin |
client_entity.created |
A client entity was created. | Covenant admin |
client_entity.updated |
A client entity was modified. | Covenant admin |
client_entity.deleted |
A client entity was deleted. | Covenant admin |
law_firm.created |
A law firm record was created. | Covenant admin |
law_firm.updated |
A law firm record was modified. | Covenant admin |
law_firm.deleted |
A law firm record was deleted. | Covenant admin |
category.created |
A category classification was created. | Covenant admin |
category.updated |
A category classification was modified. | Covenant admin |
category.deleted |
A category classification was deleted. | Covenant admin |
geography.created |
A geography classification was created. | Covenant admin |
geography.updated |
A geography classification was modified. | Covenant admin |
geography.deleted |
A geography classification was deleted. | Covenant admin |
sector.created |
A sector classification was created. | Covenant admin |
sector.updated |
A sector classification was modified. | Covenant admin |
sector.deleted |
A sector classification was deleted. | Covenant admin |
sub_sector.created |
A sub-sector classification was created. | Covenant admin |
sub_sector.updated |
A sub-sector classification was modified. | Covenant admin |
sub_sector.deleted |
A sub-sector classification was deleted. | Covenant admin |
country.created |
A country was created. | Covenant admin |
country.updated |
A country was modified. | Covenant admin |
country.deleted |
A country was deleted. | Covenant admin |
Authentication
| Action | Description | Permission |
|---|---|---|
authentication.email_verification_succeeded |
A user verified their email address. | WorkOS-enforced |
authentication.magic_auth_succeeded |
A user authenticated via magic link. | WorkOS-enforced |
authentication.mfa_succeeded |
A user completed multi-factor authentication. | WorkOS-enforced |
authentication.oauth_succeeded |
A user authenticated via OAuth. | WorkOS-enforced |
authentication.password_succeeded |
A user authenticated with their password. | WorkOS-enforced |
authentication.sso_succeeded |
A user authenticated via SSO. | WorkOS-enforced |
authentication.email_verification_failed |
An email verification attempt failed. | WorkOS-enforced |
authentication.magic_auth_failed |
A magic link authentication attempt failed. | WorkOS-enforced |
authentication.mfa_failed |
A multi-factor authentication attempt failed. | WorkOS-enforced |
authentication.oauth_failed |
An OAuth authentication attempt failed. | WorkOS-enforced |
authentication.password_failed |
A password authentication attempt failed. | WorkOS-enforced |
authentication.sso_failed |
An SSO authentication attempt failed. | WorkOS-enforced |
email_verification.created |
An email verification was initiated. | WorkOS-enforced |
magic_auth.created |
A magic link sign-in was initiated. | WorkOS-enforced |
password_reset.created |
A password reset was requested. | WorkOS-enforced |
Sessions
| Action | Description | Permission |
|---|---|---|
session.created |
A new user session was created. For impersonated sessions the actor is the Covenant admin who initiated the impersonation — anchor SIEM rules on actor.metadata.covenant_user = true. The impersonated user remains the target and metadata.impersonated = true with metadata.reason preserved. |
WorkOS-enforced |
Users
| Action | Description | Permission |
|---|---|---|
user.created |
A user account was created in the identity provider. | WorkOS-enforced |
user.updated |
A user account was modified in the identity provider (profile, email, name). | WorkOS-enforced |
user.deleted |
A user account was deleted from the identity provider. | WorkOS-enforced |
Organization
| Action | Description | Permission |
|---|---|---|
organization_membership.created |
A user was added to the organization. | WorkOS-enforced |
organization_membership.updated |
A user's organization membership was modified (role change, etc.). | WorkOS-enforced |
organization_membership.deleted |
A user was removed from the organization. | WorkOS-enforced |
invitation.created |
An invitation was sent to join the organization. | WorkOS-enforced |
organization_domain.verified |
An organization domain was successfully verified. | WorkOS-enforced |
organization_domain.verification_failed |
An organization domain verification attempt failed. | WorkOS-enforced |
SSO
| Action | Description | Permission |
|---|---|---|
connection.activated |
An SSO connection was activated. | WorkOS-enforced |
connection.deactivated |
An SSO connection was deactivated. | WorkOS-enforced |
connection.deleted |
An SSO connection was deleted. | WorkOS-enforced |
Queries
_
Response
Returns a Boolean
Example
Query
query _ {
_
}
Response
{"data": {"_": true}}
assetClasses
Description
List all asset classes in your organization.
Response
Returns [AssetClass!]!
Example
Query
query assetClasses {
assetClasses {
id
name
}
}
Response
{
"data": {
"assetClasses": [
{
"id": "cjld2cyuq0000t3rmniod1foy",
"name": "xyz789"
}
]
}
}
categories
Description
List all categories in your organization.
Response
Returns [Category!]!
Example
Query
query categories {
categories {
id
name
}
}
Response
{
"data": {
"categories": [
{
"id": "cjld2cyuq0000t3rmniod1foy",
"name": "abc123"
}
]
}
}
countries
Description
List all countries.
Response
Returns [Country!]!
Example
Query
query countries {
countries {
id
name
}
}
Response
{
"data": {
"countries": [
{
"id": "cjld2cyuq0000t3rmniod1foy",
"name": "xyz789"
}
]
}
}
documentTypes
Description
List document types, optionally filtered by investment or investment type.
Response
Returns [DocumentType!]!
Example
Query
query documentTypes(
$investmentId: Cuid,
$investmentTypeId: Cuid
) {
documentTypes(
investmentId: $investmentId,
investmentTypeId: $investmentTypeId
) {
id
name
slug
}
}
Variables
{
"investmentId": "cjld2cyuq0000t3rmniod1foy",
"investmentTypeId": "cjld2cyuq0000t3rmniod1foy"
}
Response
{
"data": {
"documentTypes": [
{
"id": "cjld2cyuq0000t3rmniod1foy",
"name": "abc123",
"slug": "xyz789"
}
]
}
}
geographies
Description
List all geographies in your organization.
Response
Returns [Geography!]!
Example
Query
query geographies {
geographies {
id
name
}
}
Response
{
"data": {
"geographies": [
{
"id": "cjld2cyuq0000t3rmniod1foy",
"name": "abc123"
}
]
}
}
groups
Description
List all groups in your organization.
Response
Returns [Group!]!
Example
Query
query groups {
groups {
id
name
}
}
Response
{
"data": {
"groups": [
{
"id": "cjld2cyuq0000t3rmniod1foy",
"name": "abc123"
}
]
}
}
investment
Description
Get a single investment by ID.
Response
Returns an Investment
Arguments
| Name | Description |
|---|---|
id - Cuid!
|
Example
Query
query investment($id: Cuid!) {
investment(id: $id) {
id
name
vintage
externalId
portfolio
commitmentAmount
commitmentCurrencyCode
closingDate
negotiationStatus
dealStatus
projectId
fundType
createdAt
updatedAt
archivedAt
type {
...InvestmentTypeFragment
}
assetClass {
...AssetClassFragment
}
manager {
...ManagerFragment
}
lawFirm {
...LawFirmFragment
}
category {
...CategoryFragment
}
geography {
...GeographyFragment
}
group {
...GroupFragment
}
subgroup {
...SubgroupFragment
}
subdivision {
...SubdivisionFragment
}
sector {
...SectorFragment
}
subSector {
...SubSectorFragment
}
country {
...CountryFragment
}
}
}
Variables
{"id": "cjld2cyuq0000t3rmniod1foy"}
Response
{
"data": {
"investment": {
"id": "cjld2cyuq0000t3rmniod1foy",
"name": "abc123",
"vintage": 123,
"externalId": "xyz789",
"portfolio": "xyz789",
"commitmentAmount": 987.65,
"commitmentCurrencyCode": "xyz789",
"closingDate": "2007-12-03",
"negotiationStatus": "xyz789",
"dealStatus": "abc123",
"projectId": "xyz789",
"fundType": "abc123",
"createdAt": "2007-12-03T10:15:30Z",
"updatedAt": "2007-12-03T10:15:30Z",
"archivedAt": "2007-12-03T10:15:30Z",
"type": InvestmentType,
"assetClass": AssetClass,
"manager": Manager,
"lawFirm": LawFirm,
"category": Category,
"geography": Geography,
"group": Group,
"subgroup": Subgroup,
"subdivision": Subdivision,
"sector": Sector,
"subSector": SubSector,
"country": Country
}
}
}
investmentReview
Description
Get the latest completed review for an investment, optionally by document type.
Example
Query
query investmentReview(
$investmentId: Cuid!,
$documentTypeId: Cuid
) {
investmentReview(
investmentId: $investmentId,
documentTypeId: $documentTypeId
) {
id
name
processedAt
completedAt
createdAt
updatedAt
investment {
...InvestmentFragment
}
documentType {
...DocumentTypeFragment
}
commentary {
...ReviewCommentaryFragment
}
sections {
...ReviewSectionFragment
}
groups {
...ReviewGroupFragment
}
}
}
Variables
{
"investmentId": "cjld2cyuq0000t3rmniod1foy",
"documentTypeId": "cjld2cyuq0000t3rmniod1foy"
}
Response
{
"data": {
"investmentReview": {
"id": "cjld2cyuq0000t3rmniod1foy",
"name": "abc123",
"processedAt": "2007-12-03T10:15:30Z",
"completedAt": "2007-12-03T10:15:30Z",
"createdAt": "2007-12-03T10:15:30Z",
"updatedAt": "2007-12-03T10:15:30Z",
"investment": Investment,
"documentType": DocumentType,
"commentary": ReviewCommentary,
"sections": [ReviewSection],
"groups": [ReviewGroup]
}
}
}
investmentTypes
Description
List all investment types.
Response
Returns [InvestmentType!]!
Example
Query
query investmentTypes {
investmentTypes {
id
name
slug
}
}
Response
{
"data": {
"investmentTypes": [
{
"id": "cjld2cyuq0000t3rmniod1foy",
"name": "abc123",
"slug": "abc123"
}
]
}
}
investments
Description
List investments in your organization, with optional filtering and pagination.
Response
Returns an InvestmentConnection!
Example
Query
query investments(
$investmentTypeId: Cuid,
$assetClassId: Cuid,
$archived: Boolean,
$sorting: SortInput,
$after: String,
$first: Int,
$filters: InvestmentFilterInput
) {
investments(
investmentTypeId: $investmentTypeId,
assetClassId: $assetClassId,
archived: $archived,
sorting: $sorting,
after: $after,
first: $first,
filters: $filters
) {
totalCount
edges {
...InvestmentEdgeFragment
}
pageInfo {
...PageInfoFragment
}
}
}
Variables
{
"investmentTypeId": "cjld2cyuq0000t3rmniod1foy",
"assetClassId": "cjld2cyuq0000t3rmniod1foy",
"archived": false,
"sorting": SortInput,
"after": "xyz789",
"first": 123,
"filters": InvestmentFilterInput
}
Response
{
"data": {
"investments": {
"totalCount": 987,
"edges": [InvestmentEdge],
"pageInfo": PageInfo
}
}
}
lawFirms
Description
List all law firms in your organization.
Response
Returns [LawFirm!]!
Example
Query
query lawFirms {
lawFirms {
id
name
}
}
Response
{
"data": {
"lawFirms": [
{
"id": "cjld2cyuq0000t3rmniod1foy",
"name": "xyz789"
}
]
}
}
managers
Description
List all managers in your organization.
Response
Returns [Manager!]!
Example
Query
query managers {
managers {
id
name
}
}
Response
{
"data": {
"managers": [
{
"id": "cjld2cyuq0000t3rmniod1foy",
"name": "xyz789"
}
]
}
}
portfolioAnalysisData
Description
Get portfolio analysis data as structured JSON.
Response
Returns a PortfolioAnalysisData!
Example
Query
query portfolioAnalysisData(
$investmentTypeId: Cuid!,
$assetClassId: Cuid,
$manager: [String!],
$category: [String!],
$geography: [String!],
$lawFirm: [String!],
$vintage: [Int!],
$investmentIds: [Cuid!]
) {
portfolioAnalysisData(
investmentTypeId: $investmentTypeId,
assetClassId: $assetClassId,
manager: $manager,
category: $category,
geography: $geography,
lawFirm: $lawFirm,
vintage: $vintage,
investmentIds: $investmentIds
) {
investments {
...PortfolioAnalysisInvestmentFragment
}
rows {
...PortfolioAnalysisRowFragment
}
}
}
Variables
{
"investmentTypeId": "cjld2cyuq0000t3rmniod1foy",
"assetClassId": "cjld2cyuq0000t3rmniod1foy",
"manager": ["abc123"],
"category": ["abc123"],
"geography": ["abc123"],
"lawFirm": ["abc123"],
"vintage": [123],
"investmentIds": [
"cjld2cyuq0000t3rmniod1foy"
]
}
Response
{
"data": {
"portfolioAnalysisData": {
"investments": [PortfolioAnalysisInvestment],
"rows": [PortfolioAnalysisRow]
}
}
}
sectors
Description
List all sectors in your organization.
Response
Returns [Sector!]!
Example
Query
query sectors {
sectors {
id
name
}
}
Response
{
"data": {
"sectors": [
{
"id": "cjld2cyuq0000t3rmniod1foy",
"name": "xyz789"
}
]
}
}
Types
AssetClass
Boolean
Description
The Boolean scalar type represents true or false.
CacheControlScope
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
Example
"PUBLIC"
Category
Country
Cuid
Example
"cjld2cyuq0000t3rmniod1foy"
Date
Example
"2007-12-03"
DateTime
Example
"2007-12-03T10:15:30Z"
DocumentType
Float
Description
The Float scalar type represents signed double-precision fractional values as specified by IEEE 754.
Example
987.65
Geography
Group
Int
Description
The Int scalar type represents non-fractional signed whole numeric values. Int can represent values between -(2^31) and 2^31 - 1.
Example
987
Investment
Description
An investment in your portfolio (fund, co-investment, etc.).
Fields
| Field Name | Description |
|---|---|
id - Cuid!
|
|
name - String!
|
|
vintage - Int
|
|
externalId - String
|
|
portfolio - String
|
|
commitmentAmount - Float
|
|
commitmentCurrencyCode - String
|
|
closingDate - Date
|
|
negotiationStatus - String!
|
|
dealStatus - String
|
|
projectId - String
|
|
fundType - String
|
|
createdAt - DateTime!
|
|
updatedAt - DateTime!
|
|
archivedAt - DateTime
|
|
type - InvestmentType!
|
The investment type (e.g. Closed End Funds, Hedge Funds). |
assetClass - AssetClass
|
The asset class this investment belongs to. |
manager - Manager!
|
The fund manager. |
lawFirm - LawFirm
|
The law firm associated with this investment. |
category - Category
|
Category classification. |
geography - Geography
|
Geography classification. |
group - Group
|
Organizational group. |
subgroup - Subgroup
|
Organizational subgroup. |
subdivision - Subdivision
|
Organizational subdivision. |
sector - Sector
|
Sector classification. |
subSector - SubSector
|
Sub-sector classification. |
country - Country
|
Country classification. |
Example
{
"id": "cjld2cyuq0000t3rmniod1foy",
"name": "abc123",
"vintage": 123,
"externalId": "xyz789",
"portfolio": "abc123",
"commitmentAmount": 987.65,
"commitmentCurrencyCode": "xyz789",
"closingDate": "2007-12-03",
"negotiationStatus": "xyz789",
"dealStatus": "xyz789",
"projectId": "abc123",
"fundType": "xyz789",
"createdAt": "2007-12-03T10:15:30Z",
"updatedAt": "2007-12-03T10:15:30Z",
"archivedAt": "2007-12-03T10:15:30Z",
"type": InvestmentType,
"assetClass": AssetClass,
"manager": Manager,
"lawFirm": LawFirm,
"category": Category,
"geography": Geography,
"group": Group,
"subgroup": Subgroup,
"subdivision": Subdivision,
"sector": Sector,
"subSector": SubSector,
"country": Country
}
InvestmentConnection
Fields
| Field Name | Description |
|---|---|
totalCount - Int
|
|
edges - [InvestmentEdge!]!
|
|
pageInfo - PageInfo!
|
Example
{
"totalCount": 123,
"edges": [InvestmentEdge],
"pageInfo": PageInfo
}
InvestmentEdge
Fields
| Field Name | Description |
|---|---|
node - Investment!
|
|
cursor - String!
|
Example
{
"node": Investment,
"cursor": "xyz789"
}
InvestmentFilterInput
Fields
| Input Field | Description |
|---|---|
manager - [String!]
|
|
category - [String!]
|
|
geography - [String!]
|
|
lawFirm - [String!]
|
|
vintage - [Int!]
|
|
investmentType - [String!]
|
|
assetClass - [String!]
|
|
dealStatus - [String!]
|
|
fundType - [String!]
|
|
projectId - [String!]
|
|
sector - [String!]
|
|
subSector - [String!]
|
|
country - [String!]
|
|
search - String
|
Example
{
"manager": ["abc123"],
"category": ["xyz789"],
"geography": ["abc123"],
"lawFirm": ["xyz789"],
"vintage": [987],
"investmentType": ["abc123"],
"assetClass": ["xyz789"],
"dealStatus": ["xyz789"],
"fundType": ["xyz789"],
"projectId": ["abc123"],
"sector": ["abc123"],
"subSector": ["abc123"],
"country": ["abc123"],
"search": "abc123"
}
InvestmentType
JSON
Example
{}
LawFirm
Manager
PageInfo
PortfolioAnalysisCell
PortfolioAnalysisData
Fields
| Field Name | Description |
|---|---|
investments - [PortfolioAnalysisInvestment!]!
|
The investments included in the analysis (column headers). |
rows - [PortfolioAnalysisRow!]!
|
Rows of topic/answer data. |
Example
{
"investments": [PortfolioAnalysisInvestment],
"rows": [PortfolioAnalysisRow]
}
PortfolioAnalysisInvestment
PortfolioAnalysisRow
Fields
| Field Name | Description |
|---|---|
documentType - String!
|
Document type name (empty for primary doc type). |
group - String!
|
Topic group name. |
topic - String!
|
Question/topic name. |
values - [PortfolioAnalysisCell!]!
|
One cell per investment, same order as investments array. |
Example
{
"documentType": "abc123",
"group": "xyz789",
"topic": "abc123",
"values": [PortfolioAnalysisCell]
}
QuestionDefinition
Review
Description
A completed review (answer set) for an investment. Contains the AI-generated analysis organized by sections and topics.
Fields
| Field Name | Description |
|---|---|
id - Cuid!
|
|
name - String
|
|
processedAt - DateTime
|
|
completedAt - DateTime
|
|
createdAt - DateTime!
|
|
updatedAt - DateTime!
|
|
investment - Investment
|
The investment this review belongs to. |
documentType - DocumentType!
|
The document type that was reviewed. |
commentary - ReviewCommentary
|
Commentary and reasoning for the overall review. |
sections - [ReviewSection!]!
|
Sections organizing the review questions. |
groups - [ReviewGroup!]!
|
Topic groups organizing the review questions. |
Example
{
"id": "cjld2cyuq0000t3rmniod1foy",
"name": "xyz789",
"processedAt": "2007-12-03T10:15:30Z",
"completedAt": "2007-12-03T10:15:30Z",
"createdAt": "2007-12-03T10:15:30Z",
"updatedAt": "2007-12-03T10:15:30Z",
"investment": Investment,
"documentType": DocumentType,
"commentary": ReviewCommentary,
"sections": [ReviewSection],
"groups": [ReviewGroup]
}
ReviewCommentary
ReviewGroup
Description
A topic group within a review, with an optional AI-generated summary.
Fields
| Field Name | Description |
|---|---|
id - Cuid!
|
|
name - String!
|
|
order - Int!
|
|
questions - [ReviewQuestion!]!
|
|
topicSummary - TopicSummary
|
AI-generated topic summary, if available. |
Example
{
"id": "cjld2cyuq0000t3rmniod1foy",
"name": "xyz789",
"order": 123,
"questions": [ReviewQuestion],
"topicSummary": TopicSummary
}
ReviewQuestion
Description
An individual question and its answer within a review.
Fields
| Field Name | Description |
|---|---|
id - Cuid!
|
|
order - Int!
|
|
answer - String!
|
|
reason - String!
|
|
extract - String!
|
|
section - String!
|
|
sectionReferences - [String!]!
|
|
terms - String!
|
|
completedAt - DateTime
|
|
importance - String!
|
|
resolution - String!
|
|
meetsStandard - Boolean
|
|
resolutionComment - String
|
|
createdAt - DateTime!
|
|
updatedAt - DateTime!
|
|
question - QuestionDefinition!
|
The question that was asked. |
structuredValue - JSON
|
Typed structured value from the consensus answer (JSON). |
answerSchema - JSON
|
Answer schema defining the expected type. |
Example
{
"id": "cjld2cyuq0000t3rmniod1foy",
"order": 123,
"answer": "xyz789",
"reason": "abc123",
"extract": "xyz789",
"section": "xyz789",
"sectionReferences": ["xyz789"],
"terms": "abc123",
"completedAt": "2007-12-03T10:15:30Z",
"importance": "abc123",
"resolution": "xyz789",
"meetsStandard": false,
"resolutionComment": "xyz789",
"createdAt": "2007-12-03T10:15:30Z",
"updatedAt": "2007-12-03T10:15:30Z",
"question": QuestionDefinition,
"structuredValue": {},
"answerSchema": {}
}
ReviewSection
Description
A section within a review, containing related questions.
Fields
| Field Name | Description |
|---|---|
id - Cuid!
|
|
name - String!
|
|
order - Int!
|
|
questions - [ReviewQuestion!]!
|
Example
{
"id": "cjld2cyuq0000t3rmniod1foy",
"name": "abc123",
"order": 987,
"questions": [ReviewQuestion]
}
Sector
SortInput
String
Description
The String scalar type represents textual data, represented as UTF-8 character sequences. The String type is most often used by GraphQL to represent free-form human-readable text.
Example
"abc123"