{"openapi":"3.0.0","paths":{"/v1/activity/partner/fund/{id}":{"get":{"description":"Returns recent activity for a fund owned by the authenticated tech-platform partner. Unknown, foreign, and non-partner funds all return 404.","operationId":"ActivityController_getPartnerFundActivity_v1","parameters":[{"name":"count","required":false,"in":"query","description":"Number of items to return per page","schema":{"minimum":1,"default":10,"example":10,"type":"number"}},{"name":"offset","required":false,"in":"query","description":"Number of items to skip (for pagination)","schema":{"minimum":0,"default":0,"example":0,"type":"number"}},{"name":"id","required":true,"in":"path","description":"The Endaoment fund id returned when the partner fund was created","schema":{"format":"uuid","example":"123e4567-e89b-12d3-a456-426614174000","type":"string"}},{"name":"x-api-key","in":"header","description":"Partner API key used for authentication","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"List of recent activities successfully retrieved. Without pagination params: plain array (legacy). With count and/or offset: paginated envelope (count alone implies offset=0).","content":{"application/json":{"schema":{"oneOf":[{"type":"array","items":{"oneOf":[{"$ref":"#/components/schemas/DonationActivity"},{"$ref":"#/components/schemas/PortfolioTradeActivity"},{"$ref":"#/components/schemas/InternalTransferActivity"},{"$ref":"#/components/schemas/StockDonationPledgeActivity"},{"$ref":"#/components/schemas/CustodianCashPledgeActivity"},{"$ref":"#/components/schemas/CryptoDonationPledgeActivity"},{"$ref":"#/components/schemas/FiatDonationPledgeActivity"},{"$ref":"#/components/schemas/CashDonationPledgeActivity"}],"discriminator":{"propertyName":"type","mapping":{"donation":"#/components/schemas/DonationActivity","portfolio_trade":"#/components/schemas/PortfolioTradeActivity","grant":"#/components/schemas/InternalTransferActivity","internal_transfer":"#/components/schemas/InternalTransferActivity","pending_grant":"#/components/schemas/InternalTransferActivity","pending_internal_transfer":"#/components/schemas/InternalTransferActivity","stock_donation_pledge":"#/components/schemas/StockDonationPledgeActivity","custodian_cash_pledge":"#/components/schemas/CustodianCashPledgeActivity","crypto_donation_pledge":"#/components/schemas/CryptoDonationPledgeActivity","nec_donation_pledge":"#/components/schemas/CryptoDonationPledgeActivity","fiat_donation_pledge":"#/components/schemas/FiatDonationPledgeActivity","cash_donation_pledge":"#/components/schemas/CashDonationPledgeActivity"}}}},{"type":"object","properties":{"items":{"type":"array","items":{"oneOf":[{"$ref":"#/components/schemas/DonationActivity"},{"$ref":"#/components/schemas/PortfolioTradeActivity"},{"$ref":"#/components/schemas/InternalTransferActivity"},{"$ref":"#/components/schemas/StockDonationPledgeActivity"},{"$ref":"#/components/schemas/CustodianCashPledgeActivity"},{"$ref":"#/components/schemas/CryptoDonationPledgeActivity"},{"$ref":"#/components/schemas/FiatDonationPledgeActivity"},{"$ref":"#/components/schemas/CashDonationPledgeActivity"}],"discriminator":{"propertyName":"type","mapping":{"donation":"#/components/schemas/DonationActivity","portfolio_trade":"#/components/schemas/PortfolioTradeActivity","grant":"#/components/schemas/InternalTransferActivity","internal_transfer":"#/components/schemas/InternalTransferActivity","pending_grant":"#/components/schemas/InternalTransferActivity","pending_internal_transfer":"#/components/schemas/InternalTransferActivity","stock_donation_pledge":"#/components/schemas/StockDonationPledgeActivity","custodian_cash_pledge":"#/components/schemas/CustodianCashPledgeActivity","crypto_donation_pledge":"#/components/schemas/CryptoDonationPledgeActivity","nec_donation_pledge":"#/components/schemas/CryptoDonationPledgeActivity","fiat_donation_pledge":"#/components/schemas/FiatDonationPledgeActivity","cash_donation_pledge":"#/components/schemas/CashDonationPledgeActivity"}}}},"count":{"type":"integer","description":"Resolved page size","minimum":1,"maximum":100},"offset":{"type":"integer","description":"Resolved offset","minimum":0},"returnedCount":{"type":"integer","description":"Actual items returned","minimum":0},"hasMore":{"type":"boolean","description":"Whether more items exist"}},"required":["items","count","offset","returnedCount","hasMore"]}]}}}},"401":{"description":"A tech-platform API key is missing or invalid"},"404":{"description":"Fund not found or not owned by the authenticated partner"}},"security":[{"ApiKey":[]}],"summary":"List fund activity by ID","tags":["Partner Endpoints"]}},"/v1/funds/partner/{id}":{"get":{"description":"Returns enriched fund details for a fund owned by the authenticated tech-platform partner. Unknown, foreign, and non-partner funds all return 404.","operationId":"FundsController_getPartnerFund_v1","parameters":[{"name":"id","required":true,"in":"path","description":"The Endaoment fund id returned when the partner fund was created","schema":{"example":"123e4567-e89b-12d3-a456-426614174000","type":"string"}},{"name":"x-api-key","in":"header","description":"Partner API key used for authentication","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Partner-owned fund details successfully retrieved","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FundDetailsDto"}}}},"401":{"description":"A tech-platform API key is missing or invalid"},"404":{"description":"Fund not found or not owned by the authenticated partner"}},"security":[{"ApiKey":[]}],"summary":"Get fund by ID","tags":["Partner Endpoints"]}},"/v1/receipts/partner/donation/{id}":{"get":{"description":"Returns the receipt for a settled donation owned by the authenticated tech-platform partner. Unknown, foreign, and non-partner donations all return 404.","operationId":"ReceiptsController_getPartnerDonationReceipt_v1","parameters":[{"name":"id","required":true,"in":"path","description":"The Endaoment donation id","schema":{"format":"uuid","example":"123e4567-e89b-12d3-a456-426614174000","type":"string"}},{"name":"x-api-key","in":"header","description":"Partner API key used for authentication","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Donation receipt successfully retrieved","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PartnerDonationReceiptDto"}}}},"401":{"description":"A tech-platform API key is missing or invalid"},"404":{"description":"Donation not found or not owned by the authenticated partner"}},"security":[{"ApiKey":[]}],"summary":"Get donation receipt by ID","tags":["Partner Endpoints"]}},"/v1/receipts/partner/donation-pledge/{id}":{"get":{"description":"Returns the receipt for a settled donation pledge owned by the authenticated tech-platform partner. Unknown, foreign, and non-partner pledges all return 404.","operationId":"ReceiptsController_getPartnerDonationPledgeReceipt_v1","parameters":[{"name":"id","required":true,"in":"path","description":"The Endaoment donation pledge id","schema":{"format":"uuid","example":"123e4567-e89b-12d3-a456-426614174000","type":"string"}},{"name":"x-api-key","in":"header","description":"Partner API key used for authentication","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Donation pledge receipt successfully retrieved","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PartnerDonationPledgeReceiptDto"}}}},"401":{"description":"A tech-platform API key is missing or invalid"},"404":{"description":"Donation pledge not found or not owned by the authenticated partner"}},"security":[{"ApiKey":[]}],"summary":"Get donation pledge receipt by ID","tags":["Partner Endpoints"]}},"/v1/receipts/partner/transfer/async/{id}":{"get":{"description":"Returns the receipt for a pending (async) transfer owned by the authenticated tech-platform partner. Unknown, foreign, and non-partner transfers all return 404.","operationId":"ReceiptsController_getPartnerAsyncTransferReceipt_v1","parameters":[{"name":"id","required":true,"in":"path","description":"The Endaoment async internal transfer id","schema":{"format":"uuid","example":"123e4567-e89b-12d3-a456-426614174000","type":"string"}},{"name":"x-api-key","in":"header","description":"Partner API key used for authentication","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Async transfer receipt successfully retrieved","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PartnerAsyncTransferReceiptDto"}}}},"401":{"description":"A tech-platform API key is missing or invalid"},"404":{"description":"Transfer not found or not owned by the authenticated partner"}},"security":[{"ApiKey":[]}],"summary":"Get async transfer receipt by ID","tags":["Partner Endpoints"]}},"/v1/receipts/partner/transfer/liquidated/{id}":{"get":{"description":"Returns the receipt for a liquidated (settled) transfer owned by the authenticated tech-platform partner. Unknown, foreign, and non-partner transfers all return 404.","operationId":"ReceiptsController_getPartnerLiquidatedTransferReceipt_v1","parameters":[{"name":"id","required":true,"in":"path","description":"The Endaoment internal transfer id","schema":{"format":"uuid","example":"123e4567-e89b-12d3-a456-426614174000","type":"string"}},{"name":"x-api-key","in":"header","description":"Partner API key used for authentication","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Liquidated transfer receipt successfully retrieved","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PartnerTransferReceiptDto"}}}},"401":{"description":"A tech-platform API key is missing or invalid"},"404":{"description":"Transfer not found or not owned by the authenticated partner"}},"security":[{"ApiKey":[]}],"summary":"Get liquidated transfer receipt by ID","tags":["Partner Endpoints"]}},"/v1/transfers/grants/partner/fund/{id}":{"get":{"description":"Returns all grants (completed and pending) for a fund owned by the authenticated tech-platform partner. Unknown, foreign, and non-partner funds all return 404.","operationId":"InternalTransfersController_getPartnerGrantsFromFund_v1","parameters":[{"name":"id","required":true,"in":"path","description":"The Endaoment fund id returned when the partner fund was created","schema":{"example":"123e4567-e89b-12d3-a456-426614174000"}},{"name":"x-api-key","in":"header","description":"Partner API key used for authentication","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"List of grants for the partner-owned fund successfully retrieved","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/GrantTransferDto"}}}}},"401":{"description":"A tech-platform API key is missing or invalid"},"404":{"description":"Fund not found or not owned by the authenticated partner"}},"security":[{"ApiKey":[]}],"summary":"List fund grants by ID","tags":["Partner Endpoints"]}},"/v1/auth/partner/users":{"post":{"description":"Creates (or idempotently returns) an Endaoment user owned by the calling partner. The partner-scoped idempotency key is `partnerUserIdentifier`. Returns 201 when a user is created and 200 when an existing user is returned and its non-email identity is refreshed.","operationId":"AuthController_createPartnerUser_v1","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PartnerCreateUserDto"}}}},"responses":{"200":{"description":"An existing partner-managed user was returned and its non-email identity refreshed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PartnerUserResponseDto"}}}},"201":{"description":"A new partner-managed user was created.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PartnerUserResponseDto"}}}},"409":{"description":"The partnerUserIdentifier or email conflicts with an existing user: a different email for the same identifier, an email already bound to another identifier, or a pre-cutover user missing an identifier."}},"security":[{"ApiKey":[]}],"summary":"Provision user","tags":["Partner Endpoints"]}},"/v1/donation-pledges/partner/cash-settled":{"post":{"description":"\n    Creates a liquidated cash donation pledge for a donation that has already settled at a tech-platform partner.\n\n    Authentication is required:\n    - A valid tech-platform API key\n    - The acting Endaoment user, provided either via the `x-endaoment-user-id` header or, when partner inflow\n      routes are enabled, via a body `partnerUserIdentifier` on an API-key-only request (no impersonation header).\n      Body resolution additionally requires the partner to have `canManageUsers`.\n\n    This endpoint allows permissioned partners to:\n    - Record an already-settled cash donation against a receiving fund\n    - Provide the settled cash amount and partner operation reference\n    - Create the resulting placeholder Donation in the same transaction\n    ","operationId":"DonationPledgesController_createSettledCashPledge_v1","parameters":[{"name":"x-endaoment-user-id","in":"header","description":"UUID of the Endaoment user for this partner-settled operation. Optional when a body `partnerUserIdentifier` is supplied on an API-key-only request.","required":false,"schema":{"type":"string"}},{"name":"x-api-key","in":"header","description":"Partner API key used for authentication","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SettledCashPledgeInputDto"}}}},"responses":{"201":{"description":"Partner-settled cash donation pledge successfully created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateDonationPledgeResponseDto"}}}},"400":{"description":"Invalid cash pledge input data provided"},"401":{"description":"Missing or invalid partner auth, or user could not be resolved"},"403":{"description":"Partner is authenticated but not configured for settled operations"},"404":{"description":"The supplied partnerUserIdentifier did not match a provisioned user for the authenticated partner."},"409":{"description":"Idempotency conflict: the provided `idempotencyKey` is already bound to a different `partnerOperationId`, or the `partnerOperationId` has already been recorded under a different key"}},"security":[{"ApiKey":[]}],"summary":"Create cash donation pledge","tags":["Partner Endpoints"]}},"/v1/donation-pledges/partner/daf-migration-settled":{"post":{"description":"\n    Creates a liquidated DAF migration pledge for an external DAF migration that has already settled at a tech-platform partner.\n\n    Authentication is required:\n    - A valid tech-platform API key\n    - The acting Endaoment user, provided either via the `x-endaoment-user-id` header or, when partner inflow\n      routes are enabled, via a body `partnerUserIdentifier` on an API-key-only request (no impersonation header).\n      Body resolution additionally requires the partner to have `canManageUsers`.\n\n    This endpoint allows permissioned partners to:\n    - Record an already-settled external DAF migration against a receiving fund\n    - Preserve DAF migration pledge semantics separately from partner provenance\n    - Create the resulting placeholder Donation in the same transaction\n    ","operationId":"DonationPledgesController_createSettledDafMigrationPledge_v1","parameters":[{"name":"x-endaoment-user-id","in":"header","description":"UUID of the Endaoment user for this partner-settled operation. Optional when a body `partnerUserIdentifier` is supplied on an API-key-only request.","required":false,"schema":{"type":"string"}},{"name":"x-api-key","in":"header","description":"Partner API key used for authentication","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SettledDafMigrationPledgeInputDto"}}}},"responses":{"201":{"description":"Partner-reported settled DAF migration pledge successfully created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateDonationPledgeResponseDto"}}}},"400":{"description":"Invalid DAF migration pledge input data provided"},"401":{"description":"Missing or invalid partner auth, or user could not be resolved"},"403":{"description":"Partner is authenticated but not configured for settled operations"},"404":{"description":"The supplied partnerUserIdentifier did not match a provisioned user for the authenticated partner."},"409":{"description":"Idempotency conflict: the provided `idempotencyKey` is already bound to a different `partnerOperationId`, or the `partnerOperationId` has already been recorded under a different key"}},"security":[{"ApiKey":[]}],"summary":"Create DAF migration pledge","tags":["Partner Endpoints"]}},"/v1/donation-pledges/partner/stock-settled":{"post":{"description":"\n    Creates a liquidated stock donation pledge for a donation that has already settled at a tech-platform partner.\n\n    Authentication is required:\n    - A valid tech-platform API key\n    - The acting Endaoment user, provided either via the `x-endaoment-user-id` header or, when partner inflow\n      routes are enabled, via a body `partnerUserIdentifier` on an API-key-only request (no impersonation header).\n      Body resolution additionally requires the partner to have `canManageUsers`.\n\n    This endpoint allows permissioned partners to:\n    - Record an already-settled stock donation against a receiving fund\n    - Provide the settled stock metadata and partner operation reference\n    - Create the resulting placeholder Donation in the same transaction\n    ","operationId":"DonationPledgesController_createSettledStockPledge_v1","parameters":[{"name":"x-endaoment-user-id","in":"header","description":"UUID of the Endaoment user for this partner-settled operation. Optional when a body `partnerUserIdentifier` is supplied on an API-key-only request.","required":false,"schema":{"type":"string"}},{"name":"x-api-key","in":"header","description":"Partner API key used for authentication","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SettledStockPledgeInputDto"}}}},"responses":{"201":{"description":"Partner-settled stock donation pledge successfully created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateDonationPledgeResponseDto"}}}},"400":{"description":"Invalid stock pledge input data provided"},"401":{"description":"Missing or invalid partner auth, or user could not be resolved"},"403":{"description":"Partner is authenticated but not configured for settled operations"},"404":{"description":"The supplied partnerUserIdentifier did not match a provisioned user for the authenticated partner."},"409":{"description":"Idempotency conflict: the provided `idempotencyKey` is already bound to a different `partnerOperationId`, or the `partnerOperationId` has already been recorded under a different key"}},"security":[{"ApiKey":[]}],"summary":"Create stock donation pledge","tags":["Partner Endpoints"]}},"/v1/funds/partner":{"post":{"description":"Creates a partner-managed DAF using the acting user identity and partnerAccountIdentifier idempotency.\n\n      The acting user is resolved in one of two ways:\n      - Tech-platform impersonation: a partner API key plus the `x-endaoment-user-id` user header (or partner OIDC bearer).\n      - API-key-only body resolution: a partner API key plus a body `partnerUserIdentifier` and no impersonation header,\n        available when partner inflow routes are enabled. The identifier selects a partner-owned, previously provisioned user.\n\n      When both a header/OIDC user and a body `partnerUserIdentifier` are supplied they must resolve to the same user;\n      a contradiction is rejected with `400` and an identifier that does not match a user for this partner is `404`.","operationId":"FundsController_processPartnerFund_v1","parameters":[{"name":"x-endaoment-user-id","in":"header","description":"UUID of the Endaoment user to act as. Optional when a body `partnerUserIdentifier` is supplied on an API-key-only request (no impersonation header).","required":false,"schema":{"type":"string"}},{"name":"x-api-key","in":"header","description":"Partner API key. Required for server-to-server partner flows; omit when the caller presents a registered OAuth client access token via Bearer auth.","required":false,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PartnerCreateFundInputDto"}}}},"responses":{"200":{"description":"An existing partner-managed fund was returned idempotently.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FundDetailsDto"}}}},"201":{"description":"A new partner-managed fund has been successfully created and processed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FundDetailsDto"}}}},"400":{"description":"Invalid fund input, or a body `partnerUserIdentifier` that contradicts the authenticated/impersonated user."},"401":{"description":"Missing or invalid partner auth, or no acting user could be resolved."},"403":{"description":"Partner is authenticated but not configured to create partner funds (lacks `canManageUsers`)."},"404":{"description":"The supplied partnerUserIdentifier did not match a provisioned user for the authenticated partner."},"409":{"description":"The partnerAccountIdentifier is already associated with another user for this partner."}},"security":[{"ApiKey":[]},{"bearer":[]}],"summary":"Create fund","tags":["Partner Endpoints"]}},"/v1/missing-org-reports/tech-platform":{"post":{"operationId":"MissingOrgReportController_submitTechPlatformReport_v1","parameters":[{"name":"x-api-key","in":"header","description":"Tech Platform API Key","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SubmitTechPlatformMissingOrgReportDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MissingOrgReportCreatedDto"}}}},"409":{"description":"An organization with the provided EIN already exists"}},"summary":"Submit missing org report","tags":["Partner Endpoints"]}},"/v1/transfers/partner/grant-submissions":{"post":{"description":"Server-to-server partner grant intake after the partner has settled the inbound custodian transfer. Authorized by the tech-platform API key alone — no donor bearer token or acting-user context required.","operationId":"InternalTransfersController_createPartnerGrantSubmission_v1","parameters":[{"name":"x-api-key","in":"header","description":"Tech-platform API key for a partner configured for settled operations","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PartnerGrantSubmissionInputDto"}}}},"responses":{"200":{"description":"Idempotent replay of an existing partner grant submission","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PartnerGrantSubmissionDto"}}}},"201":{"description":"Partner grant submission created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PartnerGrantSubmissionDto"}}}},"400":{"description":"Malformed input or semantic validation failure"},"401":{"description":"Missing or invalid tech-platform API key"},"403":{"description":"Partner is not configured for settled operations or does not own the origin fund"},"404":{"description":"Origin fund, destination org, or destination subproject not found"},"409":{"description":"Idempotency or funding-transfer replay conflict"},"413":{"description":"Request body exceeds the partner grant submission size limit"},"422":{"description":"Partner account metadata or reported identifiers do not match configured records"}},"security":[{"ApiKey":[]}],"summary":"Submit settled grant","tags":["Partner Endpoints"]}},"/auth":{"servers":[{"url":"https://auth.endaoment.org","description":"Production"},{"url":"https://auth.dev.endaoment.org","description":"Development"},{"url":"https://auth.staging.endaoment.org","description":"Staging"}],"get":{"description":"Starts the OAuth 2.0 Authorization Code + PKCE login flow by redirecting the user to Endaoment's sign-in page.\n\nThis endpoint lives on the Endaoment **auth server** (`{AUTH_URL}/auth`). Redirect the user's browser here from your backend after generating PKCE values and `state`. After login, Endaoment redirects back to your registered `redirect_uri` with `code` and `state` query parameters.\n\nExchange the returned `code` at [`POST /token`](/developers/api/authentication/get-access-token).","operationId":"OAuthController_authorize","parameters":[{"name":"response_type","in":"query","required":true,"schema":{"type":"string","enum":["code"]},"description":"Must be `code` for the Authorization Code flow.","example":"code"},{"name":"client_id","in":"query","required":true,"schema":{"type":"string"},"description":"OAuth client ID issued by Endaoment.","example":"your-client-id"},{"name":"redirect_uri","in":"query","required":true,"schema":{"type":"string","format":"uri"},"description":"Registered callback URL. Must match exactly in the later token exchange.","example":"http://localhost:5454/callback"},{"name":"scope","in":"query","required":true,"schema":{"type":"string"},"description":"Space-delimited OAuth scopes. Common value: `openid accounts transactions profile email address`. Add `offline_access` for refresh tokens — include `prompt=consent` on this request or refresh tokens are silently omitted.","example":"openid accounts transactions profile email address offline_access"},{"name":"code_challenge","in":"query","required":true,"schema":{"type":"string"},"description":"PKCE code challenge (S256 hash of the stored `code_verifier`).","example":"E9Melhoa2OwvFrEMTJguCHaoeK1t8URWbuGJSstw-cM"},{"name":"code_challenge_method","in":"query","required":true,"schema":{"type":"string","enum":["S256"]},"description":"PKCE challenge method. Endaoment supports `S256` only.","example":"S256"},{"name":"state","in":"query","required":true,"schema":{"type":"string"},"description":"Random value your backend can verify on callback to prevent CSRF.","example":"random-state-value"},{"name":"prompt","in":"query","required":false,"schema":{"type":"string","enum":["consent"]},"description":"Use `consent` when requesting `offline_access` to ensure a refresh token can be issued.","example":"consent"}],"responses":{"302":{"description":"Redirect to Endaoment login, or back to `redirect_uri` with `code` and `state` after successful authentication"},"400":{"description":"Missing or invalid OAuth parameters"}},"summary":"Start OAuth authorization","tags":["Authentication"]}},"/session/end":{"servers":[{"url":"https://auth.endaoment.org","description":"Production"},{"url":"https://auth.dev.endaoment.org","description":"Development"},{"url":"https://auth.staging.endaoment.org","description":"Staging"}],"get":{"description":"Ends the user's Endaoment browser session (OpenID Connect end-session / logout).\n\nRedirect the user's browser here when they sign out of your application. Optionally pass `post_logout_redirect_uri` to return the user to your app after logout.","operationId":"OAuthController_endSession","parameters":[{"name":"id_token_hint","in":"query","required":false,"schema":{"type":"string"},"description":"ID token previously issued to the user. Helps Endaoment identify which session to end."},{"name":"post_logout_redirect_uri","in":"query","required":false,"schema":{"type":"string","format":"uri"},"description":"Registered URL to redirect the user after logout completes.","example":"http://localhost:5454/logged-out"},{"name":"state","in":"query","required":false,"schema":{"type":"string"},"description":"Opaque value returned to your app on the post-logout redirect."}],"responses":{"302":{"description":"Redirect to Endaoment logout confirmation or to `post_logout_redirect_uri`"},"400":{"description":"Invalid logout parameters"}},"summary":"End user session","tags":["Authentication"]}},"/v1/auth/whoami":{"get":{"description":"\n    Returns information about the caller authenticated through one of the supported API auth mechanisms.\n    API key callers receive API client metadata. Human callers receive their JWT payload from either the Endaoment\n    browser session cookie or an OIDC bearer token. Browser sessions may receive a refreshed Set-Cookie header when\n    referral-source metadata is updated.\n    ","operationId":"AuthController_whoAmI_v1","parameters":[{"name":"x-api-key","in":"header","description":"API key used by server-side integrations. Bearer auth or the NdaoAuth cookie may also be used.","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Authenticated caller metadata","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/WhoAmIApiKeyUserDto"},{"$ref":"#/components/schemas/WhoAmINdaoAuthUserDto"},{"$ref":"#/components/schemas/WhoAmIOidcUserDto"}]}}}},"401":{"description":"No valid API key, bearer token, or session cookie was provided"},"404":{"description":"Authenticated human user no longer exists in the database"}},"security":[{"NdaoAuthCookie":[]},{"ApiKey":[]},{"bearer":[]}],"summary":"Get authenticated caller","tags":["Authentication"]}},"/token":{"servers":[{"url":"https://auth.endaoment.org","description":"Production"},{"url":"https://auth.dev.endaoment.org","description":"Development"},{"url":"https://auth.staging.endaoment.org","description":"Staging"}],"post":{"description":"Exchanges an OAuth 2.0 authorization code (Authorization Code + PKCE flow) or refresh token for an Endaoment access token.\n\nThis endpoint lives on the Endaoment **auth server** (`{AUTH_URL}/token`), not the API server. Call it from your backend only—never from browser or mobile client code.\n\nFor the authorize redirect that produces the `code`, send users to `{AUTH_URL}/auth` with your registered `client_id`, `redirect_uri`, PKCE params, and scopes.","operationId":"OAuthController_token","requestBody":{"required":true,"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/OAuthTokenRequestDto"}}}},"responses":{"200":{"description":"Access token issued","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OAuthTokenResponseDto"}}}},"400":{"description":"Invalid grant, redirect URI mismatch, or malformed request"},"401":{"description":"Invalid client credentials"}},"security":[{"OAuthClientCredentials":[]}],"summary":"Get access token","tags":["Authentication"]}},"/token/revocation":{"servers":[{"url":"https://auth.endaoment.org","description":"Production"},{"url":"https://auth.dev.endaoment.org","description":"Development"},{"url":"https://auth.staging.endaoment.org","description":"Staging"}],"post":{"description":"Revokes an access or refresh token issued by the Endaoment auth server.\n\nCall from your backend during logout or when rotating credentials. Requires the same client credentials used for token exchange.","operationId":"OAuthController_revokeToken","requestBody":{"required":true,"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/OAuthTokenRevocationRequestDto"}}}},"responses":{"200":{"description":"Token revoked (or already invalid)"},"401":{"description":"Invalid client credentials"}},"security":[{"OAuthClientCredentials":[]}],"summary":"Revoke access token","tags":["Authentication"]}},"/v1/funds/community":{"get":{"description":"\n    Returns a list of community funds that are publicly visible.\n    This endpoint is paginated and returns up to 50 funds per request.\n    No authentication is required as this endpoint only returns publicly visible funds.\n    Fund data includes basic fund information along with enriched data like balances and statistics.\n    ","operationId":"FundsController_getCommunityFunds_v1","parameters":[{"name":"count","required":false,"in":"query","description":"Number of items to return per page","schema":{"minimum":1,"default":10,"example":10,"type":"number"}},{"name":"offset","required":false,"in":"query","description":"Number of items to skip (for pagination)","schema":{"minimum":0,"default":0,"example":0,"type":"number"}}],"responses":{"200":{"description":"List of community funds successfully retrieved","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/FundListingDto"}}}}}},"summary":"List community funds","tags":["Funds"]}},"/v1/funds/featured":{"get":{"description":"\n    Returns a curated list of featured funds that are publicly visible.\n    This endpoint returns up to 10 featured funds.\n    No authentication is required as this endpoint only returns publicly visible funds.\n    Fund data includes basic fund information along with enriched data like balances and statistics.\n    ","operationId":"FundsController_getFeaturedFunds_v1","parameters":[],"responses":{"200":{"description":"List of featured funds successfully retrieved","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/FundListingDto"}}}}}},"summary":"List featured funds","tags":["Funds"]}},"/v1/funds/mine":{"get":{"description":"\n    Returns a list of all funds where the authenticated user is the manager.\n    Only returns non-hidden funds and includes manager and collaborator information.\n    Fund balances are automatically refreshed in the background if they are stale.\n    ","operationId":"FundsController_getMyFunds_v1","parameters":[],"responses":{"200":{"description":"List of funds managed by the authenticated user","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/FundListingDto"}}}}},"401":{"description":"User is not authenticated or the access token is invalid"}},"security":[{"bearer":[]}],"summary":"List my funds","tags":["Funds"]}},"/v1/funds/{id}":{"get":{"description":"\n    Retrieves detailed information about a specific fund by its ID.\n    \n    Access Control:\n    - Public funds are visible to all users\n    - Private funds are only visible to the fund manager and collaborators\n    ","operationId":"FundsController_getFund_v1","parameters":[{"name":"id","required":true,"in":"path","description":"The unique identifier of the fund","schema":{"example":"123e4567-e89b-12d3-a456-426614174000","type":"string"}}],"responses":{"200":{"description":"Fund details successfully retrieved","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FundDetailsDto"}}}},"401":{"description":"User does not have permission to view this fund"},"404":{"description":"Fund not found or user does not have access to view it"}},"security":[{"bearer":[]}],"summary":"Get fund by ID","tags":["Funds"]},"put":{"description":"\n    Updates an existing fund's information\n    ","operationId":"FundsController_updateFund_v1","parameters":[{"name":"id","required":true,"in":"path","description":"The unique identifier of the fund to update","schema":{"example":"123e4567-e89b-12d3-a456-426614174000"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateFundInputDto"}}}},"responses":{"200":{"description":"Fund successfully updated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FundListingDto"}}}},"400":{"description":"Invalid update data provided"},"401":{"description":"User is not authenticated or the access token is invalid"},"404":{"description":"Fund not found"}},"security":[{"bearer":[]}],"summary":"Update fund","tags":["Funds"]}},"/v1/funds/{id}/collaborators":{"get":{"description":"\n    Retrieves a list of all active collaborators for a specific fund.\n    \n    Access Control:\n    - Fund managers can view collaborators of their funds\n    - Collaborators can view other collaborators of the same fund\n    - Other users cannot view fund collaborators\n    ","operationId":"FundsController_getFundCollaborators_v1","parameters":[{"name":"id","required":true,"in":"path","description":"The unique identifier of the fund","schema":{"example":"123e4567-e89b-12d3-a456-426614174000","type":"string"}}],"responses":{"200":{"description":"List of fund collaborators successfully retrieved","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CollaboratorListingDto"}}}}},"401":{"description":"User does not have permission to view collaborators of this fund"},"404":{"description":"Fund not found"}},"security":[{"bearer":[]}],"summary":"List fund collaborators","tags":["Funds"]}},"/v1/funds":{"post":{"description":"\n      This operation allows you to create a new fund with or without an associated deployment transaction hash.\n      A deployment transaction hash is only required for integrations that handle on-chain deployments themselves.\n      ","operationId":"FundsController_processFund_v1","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProcessSingleFundDeploymentInputDto"}}}},"responses":{"200":{"description":"The fund has been successfully created and processed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FundDetailsDto"}}}},"400":{"description":"The request contains invalid data.","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"number","example":400},"message":{"type":"array","items":{"type":"string"},"example":["fundInput.advisor.firstName must be a non-empty string","fundInput.advisor.lastName must be a non-empty string","fundInput.advisor.email must be an email","fundInput.advisor.address.zip must be shorter than or equal to 255 characters","fundInput.advisor.address.zip must be a string","\"1\" is not a chain id supported by the system"]},"error":{"type":"string","example":"Bad Request"}}}}}},"401":{"description":"User is not authenticated or the access token is invalid"}},"security":[{"bearer":[]}],"summary":"Create fund","tags":["Funds"]}},"/v1/donation-pledges/wire/details/domestic":{"get":{"description":"\n    Returns the necessary bank and beneficiary details for making a domestic wire transfer to Endaoment.\n    This endpoint provides all the information needed to initiate a domestic wire transfer, including:\n    - Beneficiary (Endaoment) details such as name, account number, and address\n    - Receiving bank details including routing number, bank name, and address\n\n    No authentication is required as this information is publicly available.\n    ","operationId":"DonationPledgesController_getDomesticPledgeDetails_v1","parameters":[],"responses":{"200":{"description":"Domestic wire transfer details successfully retrieved","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DomesticTransferDetailsDto"}}}}},"summary":"Get domestic wire details","tags":["Donations"]}},"/v1/donation-pledges/wire/details/international":{"get":{"description":"\n    Returns the necessary bank and beneficiary details for making an international wire transfer to Endaoment.\n    This endpoint provides all the information needed to initiate an international wire transfer, including:\n    - Beneficiary (Endaoment) details such as IBAN/account number and address\n    - Receiving bank details including SWIFT/BIC code, routing number, bank name, and address\n\n    No authentication is required as this information is publicly available.\n    ","operationId":"DonationPledgesController_getInternationalPledgeDetails_v1","parameters":[],"responses":{"200":{"description":"International wire transfer details successfully retrieved","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternationalTransferDetailsDto"}}}}},"summary":"Get international wire details","tags":["Donations"]}},"/v1/donations/total-impact":{"get":{"description":"\n    Returns total platform value in USDC micro-units (1000000 = 1 USD).\n    The value combines historical payouts, fund USDC balances, org USDC balances, and enabled portfolio position values.\n    No authentication is required.\n    ","operationId":"DonationsController_getTotalImpact_v1","parameters":[],"responses":{"200":{"description":"Total platform impact in USDC micro-units","content":{"application/json":{"schema":{"type":"string","example":"1234567890000","description":"USDC amount in micro-units (1000000 = 1 USD)"}}}}},"summary":"Get total platform impact","tags":["Donations"]}},"/v2/tokens":{"get":{"description":"\n    Fetches all tokens supported by Endaoment.\n    This endpoint can be filtered by chainId or tokenType.\n    If chainId is provided, tokenType will be ignored and only EvmTokens on that chain will be returned.\n    If no filter is provided, all supported tokens will be returned.\n    ","operationId":"TokensController_getSupportedTokensV2_v2","parameters":[{"name":"tokenType","required":false,"in":"query","description":"If informed, will filter which type of token to fetch. If not informed, will return all tokens. If `chainId` is informed, this will be ignored.","schema":{"enum":["EvmToken","OtcToken","All"],"type":"string"}},{"name":"chainId","required":false,"in":"query","description":"If informed, will filter only EvmTokens on that chain","schema":{"type":"number"}}],"responses":{"200":{"description":"List of supported tokens successfully retrieved","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SupportedTokensResponseDto"}}}}},"summary":"List supported tokens","tags":["Donations"]}},"/v1/donation-pledges/crypto":{"post":{"description":"\n    Creates a new donation pledge for a cryptocurrency donation to Endaoment.\n\n    **Minimum Donation Requirements:**\n    Please note we enforce a minimum on all donations of assets in this manner as they require manual processing. All sub-$250 donations are re-routed to Endaoment's operating fund.\n\n    By proceeding, you accept our [disclaimer](https://docs.endaoment.org/governance/documentation/terms-and-conditions#11-a-over-the-counter-donation-disclaimer) for over-the-counter donations.\n\n    Authentication is optional:\n    - Authenticated users will have the pledge associated with their account\n    - Unauthenticated users can still create pledges but won't have them linked to any account\n\n    This endpoint allows users to:\n    - Register their crypto donation with Endaoment, alongside the transaction hash proving the donation happened on-chain\n    - Specify the amount and receiving fund\n    - Optionally provide donor identity information for the donation receipt\n\n    If you are donating crypto via the Endaoment smart contract functions, please use the 'donations' endpoint instead to register your donation.\n    ","operationId":"DonationPledgesController_createCryptoPledge_v1","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CryptoPledgeInputDto"}}}},"responses":{"200":{"description":"Crypto donation pledge successfully created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateDonationPledgeResponseDto"}}}},"400":{"description":"Invalid input data provided or USA address fields are missing/invalid"}},"security":[{"bearer":[]}],"summary":"Create crypto donation pledge","tags":["Donations"]}},"/v1/donation-pledges/daf-migration":{"post":{"description":"\n    Creates a new donation pledge for migrating funds from an external Donor-Advised Fund (DAF) to Endaoment.\n\n    Authentication is required:\n    - Only authenticated users can create DAF migration pledges\n    - The pledge will be associated with the authenticated user's account\n\n    This endpoint allows users to:\n    - Register their intention to migrate funds from an external DAF\n    - Specify the amount and receiving fund\n    - Provide necessary donor information for the migration\n    ","operationId":"DonationPledgesController_createDafMigrationPledge_v1","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CashDonationPledgeInputDto"}}}},"responses":{"200":{"description":"DAF migration pledge successfully created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateDonationPledgeResponseDto"}}}},"400":{"description":"Invalid input data provided"},"401":{"description":"User is not authenticated"}},"security":[{"bearer":[]}],"summary":"Create DAF migration pledge","tags":["Donations"]}},"/v1/donation-pledges/wire":{"post":{"description":"\n    Creates a new donation pledge for a wire transfer to Endaoment.\n\n    This endpoint allows users to:\n    - Register their intention to make a wire transfer donation\n    - Specify the amount and receiving fund\n    - Optionally provide donor identity information for the donation receipt\n\n    Authentication is required. The pledge will be associated with the authenticated user.\n    ","operationId":"DonationPledgesController_createWirePledge_v1","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CashDonationPledgeInputDto"}}}},"responses":{"200":{"description":"Wire transfer pledge successfully created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateDonationPledgeResponseDto"}}}},"400":{"description":"Invalid input data provided"},"401":{"description":"User is not authenticated or the access token is invalid"}},"security":[{"bearer":[]}],"summary":"Create wire donation pledge","tags":["Donations"]}},"/v2/donation-pledges/stock":{"post":{"description":"\n    Creates a new donation pledge for a stock donation to Endaoment.\n\n    Authentication is optional:\n    - Authenticated users will have the pledge associated with their account\n    - Unauthenticated users can still create pledges but won't have them linked to any account\n\n    This endpoint allows users to:\n    - Register their intention to donate stocks to Endaoment\n    - Provide broker and stock details\n    - Specify the receiving fund\n    - Provide donor identity information for the donation receipt\n    - Include optional lot information for tax purposes\n    ","operationId":"DonationPledgesController_createStockPledge_v2","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StockPledgeInputDto"}}}},"responses":{"200":{"description":"Stock donation pledge successfully created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateDonationPledgeResponseDto"}}}},"400":{"description":"Invalid input data provided or custom broker name is missing when broker name is \"other\""}},"security":[{"bearer":[]}],"summary":"Create stock donation pledge","tags":["Donations"]}},"/v1/donation-pledges/{id}/transaction-hash":{"patch":{"description":"\n    Updates the transaction hash for an existing crypto donation pledge.\n    \n    Authorization rules:\n    - When a pledge was created by an authenticated user, only the user who created the pledge can update it\n    - When the pledge was created by an anonymous user, anyone can update the hash of the pledge. But that update can only occur once.\n    - For pledges created by authenticated users, the hash can be updated multiple times\n    - Transaction hash must be unique across all active pledges for the same token\n    ","operationId":"DonationPledgesController_updateTransactionHash_v1","parameters":[{"name":"id","required":true,"in":"path","description":"The unique identifier of the donation pledge","schema":{"example":"123e4567-e89b-12d3-a456-426614174000"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateTransactionHashDto"}}}},"responses":{"200":{"description":"Transaction hash successfully updated"},"400":{"description":"Transaction hash already exists or a pledge with this hash already exists"},"401":{"description":"User is not authenticated"},"403":{"description":"User is not authorized to update this pledge"},"404":{"description":"Pledge not found"}},"security":[{"bearer":[]}],"summary":"Update crypto pledge transaction hash","tags":["Donations"]}},"/v1/portfolios":{"get":{"description":"\n    Returns enabled public portfolios plus any portfolios the caller can access when authenticated.\n    Use the optional fundId query parameter to list portfolios available to a specific fund.\n    Authentication is optional; browser sessions may reveal portfolios connected to the caller.\n    ","operationId":"PortfoliosController_getPortfolios_v1","parameters":[{"name":"fundId","required":false,"in":"query","description":"Filter portfolios by fund access.","schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Portfolios available to the caller","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/PortfolioFinancialsDto"}}}}}},"security":[{},{"NdaoAuthCookie":[]}],"summary":"List portfolios","tags":["Portfolios"]}},"/v1/missing-org-reports/{id}":{"get":{"operationId":"MissingOrgReportController_getReportStatus_v1","parameters":[],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MissingOrgReportStatusDto"}}}},"404":{"description":"Report not found or not owned by the requesting tech platform"}},"summary":"Get missing org report status","tags":["Nonprofit Organizations"]}},"/v1/orgs/counts":{"get":{"description":"\n    Returns the number of organizations associated with each requested NTEE major code.\n    Each count matches the total number of results from the organization search filtered by that code,\n    using the same default public visibility rules. Provide nteeMajorCodes as a comma-separated list. An asOf\n    timestamp indicates when the counts were computed.\n    ","operationId":"OrgsController_countOrgsByNteeCode_v1","parameters":[{"name":"nteeMajorCodes","required":true,"in":"query","description":"Comma-separated list of NTEE Major Codes to count organizations for","schema":{"example":"A,B,C","type":"string"}}],"responses":{"200":{"description":"Per-code organization counts","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrgNteeCountsResponseDto"}}}}},"summary":"Get organization counts by NTEE major code","tags":["Nonprofit Organizations"]}},"/v1/orgs/ein/{ein}":{"get":{"description":"\n    Returns enriched organization details for an EIN. This endpoint may resolve an existing database organization or,\n    for trusted Endaoment server callers, create the organization from external nonprofit data when available.\n    No authentication is required for existing organizations.\n    ","operationId":"OrgsController_findByEin_v1","parameters":[{"name":"ein","required":true,"in":"path","description":"IRS Employer Identification Number, with or without hyphen.","schema":{"example":"530196605","type":"string"}}],"responses":{"200":{"description":"Organization details","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrgDetailsDto"}}}},"404":{"description":"Organization not found"}},"summary":"Get organization by EIN","tags":["Nonprofit Organizations"]}},"/v1/orgs/ein/{ein}/check":{"get":{"operationId":"OrgsController_checkEinExists_v1","parameters":[],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrgEinCheckDto"}}}}},"summary":"Check organization EIN","tags":["Nonprofit Organizations"]}},"/v1/orgs/ein/{ein}/subprojects":{"get":{"description":"Returns visible subprojects sponsored by the organization matching the provided EIN.","operationId":"OrgsController_findOrgSubprojectsByEin_v1","parameters":[{"name":"ein","required":true,"in":"path","description":"Sponsor organization EIN, with or without hyphen.","schema":{"example":"530196605","type":"string"}}],"responses":{"200":{"description":"Subprojects sponsored by the organization","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/SubprojectListingDto"}}}}}},"summary":"List organization subprojects","tags":["Nonprofit Organizations"]}},"/v1/orgs/{id}/distributions":{"get":{"description":"Returns active impact-pool distributions the organization is eligible to receive.","operationId":"OrgsController_findEligibleDistributions_v1","parameters":[{"name":"id","required":true,"in":"path","description":"Unique identifier of the organization.","schema":{"format":"uuid","example":"123e4567-e89b-12d3-a456-426614174000","type":"string"}}],"responses":{"200":{"description":"Eligible distributions for the organization","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EligibleDistributionsResponseDto"}}}},"404":{"description":"Organization not found or hidden"}},"summary":"List eligible distributions","tags":["Nonprofit Organizations"]}},"/v1/subprojects/search":{"get":{"description":"Returns visible subprojects with optional case-insensitive name filtering and pagination.","operationId":"SubprojectsController_searchSubprojects_v1","parameters":[{"name":"count","required":false,"in":"query","description":"Maximum number of subprojects to return. Defaults to 10; values above 25 are capped to 25.","schema":{"maximum":25,"default":10,"example":10,"type":"number"}},{"name":"offset","required":false,"in":"query","description":"Number of matching subprojects to skip before returning results.","schema":{"default":0,"example":0,"type":"number"}},{"name":"searchTerm","required":false,"in":"query","description":"Case-insensitive search term used to filter subprojects by name.","schema":{"example":"education","type":"string"}}],"responses":{"200":{"description":"Matching subprojects with lifetime contribution totals","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/SubprojectListingDto"}}}}}},"summary":"Search subprojects","tags":["Nonprofit Organizations"]}},"/v2/orgs/search":{"get":{"description":"\n    Returns a list of organizations based on search criteria.\n    This endpoint is paginated and supports various filters including:\n    - Full-text search\n    - NTEE codes (major and minor)\n    - Geographic location (country and state)\n    - Organization status\n    - Compliance status\n\n    Results are enriched with contribution statistics and deployment information.\n    ","operationId":"OrgsController_searchOrgs_v2","parameters":[{"name":"searchTerm","required":false,"in":"query","description":"Full-text search term to find organizations by name or EIN","schema":{"example":"Red Cross","type":"string"}},{"name":"nteeMajorCodes","required":false,"in":"query","description":"Comma-separated list of NTEE Major Codes to filter organizations by","schema":{"example":"A,B,C","type":"string"}},{"name":"nteeMinorCodes","required":false,"in":"query","description":"Comma-separated list of NTEE Minor Codes to filter organizations by","schema":{"example":"01,02,03","type":"string"}},{"name":"countries","required":false,"in":"query","description":"Comma-separated list of ISO 3166-1 alpha-3 country codes to filter organizations by. Example values: USA, CAN, etc.","schema":{"example":"USA,CAN","type":"string"}},{"name":"subdivisions","required":false,"in":"query","description":"Comma-separated list of US state codes to filter organizations by. Possible values: AL, AK, AZ, AR, CA, CO, CT, DE, DC, FL, GA, HI, ID, IL, IN, IA, KS, KY, LA, ME, MD, MA, MI, MN, MS, MO, MT, NE, NV, NH, NJ, NM, NY, NC, ND, OH, OK, OR, PA, RI, SC, SD, TN, TX, UT, VT, VA, WA, WV, WI, WY","schema":{"example":"CA,NY,TX","type":"string"}},{"name":"status","required":false,"in":"query","description":"Comma-separated list of organization statuses to filter by. Possible values: claimed, unclaimed","schema":{"example":"claimed,unclaimed","type":"string"}},{"name":"count","required":false,"in":"query","description":"Maximum number of results to return","schema":{"minimum":1,"maximum":25,"default":10,"type":"number"}},{"name":"offset","required":false,"in":"query","description":"Number of results to skip for pagination","schema":{"minimum":0,"default":0,"type":"number"}}],"responses":{"200":{"description":"List of organizations matching the search criteria","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/OrgSearchListingDto"}}}}}},"summary":"Search organizations","tags":["Nonprofit Organizations"]}},"/v1/missing-org-reports":{"post":{"operationId":"MissingOrgReportController_submitReport_v1","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SubmitMissingOrgReportDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MissingOrgReportCreatedDto"}}}},"409":{"description":"An organization with the provided EIN already exists"}},"summary":"Submit missing org report","tags":["Nonprofit Organizations"]}},"/v1/missing-org-reports/determination-letter":{"post":{"operationId":"MissingOrgReportController_uploadDeterminationLetter_v1","parameters":[],"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeterminationLetterUploadResultDto"}}}}},"summary":"Upload determination letter","tags":["Nonprofit Organizations"]}},"/v1/transfers/grants/fund/{id}":{"get":{"description":"\n    Returns a list of all grants (both completed and pending) associated with a specific fund.\n    The grants are sorted by creation date in descending order (newest first).\n\n    Authentication is optional:\n    - Public funds' grants are visible to all users\n    - Private funds' grants are only visible to authenticated users with access to the fund\n    \n    The response includes both completed grants and pending async grant requests.\n    ","operationId":"InternalTransfersController_getGrantsFromFund_v1","parameters":[{"name":"id","required":true,"in":"path","description":"Unique identifier of the fund","schema":{"format":"uuid","example":"123e4567-e89b-12d3-a456-426614174000","type":"string"}}],"responses":{"200":{"description":"List of grants successfully retrieved","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/GrantTransferDto"}}}}},"400":{"description":"Invalid fund ID format"},"401":{"description":"User is not authenticated and the fund is private"}},"security":[{"bearer":[]}],"summary":"List fund grants","tags":["Grant Transfers"]}},"/v1/transfers/grants/total":{"get":{"description":"\n    Returns the total amount that has been granted through Endaoment since inception.\n    The amount is returned as a string in the smallest currency unit (1000000 = 1 USD).\n    This endpoint is publicly accessible and does not require authentication.\n    ","operationId":"InternalTransfersController_getTotalGrants_v1","parameters":[],"responses":{"200":{"description":"Total amount granted successfully retrieved","content":{"application/json":{"schema":{"type":"string","example":"1000000000","description":"Total amount granted in USDC smallest currency unit (1000000 = 1 USD)"}}}}},"summary":"Get total granted amount","tags":["Grant Transfers"]}},"/v1/transfers/async-entity-transfers":{"post":{"description":"\n    Creates a pending (async) entity transfer request that will be processed by Endaoment.\n    The transfer will be in a pending state until it is fully processed.\n    \n    Entity transfers support Fund to Fund, Org to Org, and Org to Fund transfers.\n    \n    This endpoint requires authentication and the user must have permission to create transfers\n    from the specified origin entity.\n    ","operationId":"InternalTransfersController_createAsyncEntityTransfer_v1","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InitiateAsyncEntityTransferInputDto"}}}},"responses":{"200":{"description":"Async entity transfer request successfully created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EntityTransferDto"}}}},"400":{"description":"Invalid input data provided"},"401":{"description":"User is not authenticated"},"403":{"description":"User does not have permission to create transfers from the specified origin entity"}},"security":[{"bearer":[]}],"summary":"Create async entity transfer","tags":["Grant Transfers"]}},"/v1/transfers/async-entity-transfers/{id}/cancel":{"post":{"description":"\n    Cancels a pending (async) entity transfer request.\n    The transfer must be in a 'PendingLiquidation' state to be cancellable.\n    \n    This endpoint requires authentication, and the user must be authorized based on the origin entity type:\n    - For Fund origins: the fund manager, collaborators, or privileged roles can cancel\n    - For Org origins: only maintainer and accountant roles can cancel\n    ","operationId":"InternalTransfersController_cancelAsyncEntityTransfer_v1","parameters":[{"name":"id","required":true,"in":"path","description":"Unique identifier of the async entity transfer to cancel","schema":{"format":"uuid","type":"string"}}],"responses":{"200":{"description":"Async entity transfer request successfully cancelled","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EntityTransferDto"}}}},"400":{"description":"Invalid transfer ID or transfer is not in a cancellable state"},"401":{"description":"User is not authenticated"},"403":{"description":"User does not have permission to cancel this transfer"}},"security":[{"bearer":[]}],"summary":"Cancel async entity transfer","tags":["Grant Transfers"]}},"/v1/transfers/async-grants":{"post":{"description":"\n    Creates a pending (async) grant request that will be processed by Endaoment.\n    The grant will be in a pending state until it is fully processed.\n    \n    This endpoint requires authentication and the user must have permission to create grants from the specified fund.\n    ","operationId":"InternalTransfersController_createAsyncGrant_v1","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InitiateAsyncGrantInputDto"}}}},"responses":{"200":{"description":"Async grant request successfully created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GrantTransferDto"}}}},"400":{"description":"Invalid input data provided"},"401":{"description":"User is not authenticated"},"403":{"description":"User does not have permission to create grants from the specified fund"}},"security":[{"bearer":[]}],"summary":"Create async grant","tags":["Grant Transfers"]}},"/v1/transfers/async-grants/{id}/cancel":{"post":{"description":"\n    Cancels a pending (async) grant request.\n    The grant must be in a 'PendingLiquidation' state to be cancellable.\n    \n    This endpoint requires authentication, and the user must be the manager \n    of the fund from which the grant was initiated.\n    ","operationId":"InternalTransfersController_cancelAsyncGrant_v1","parameters":[{"name":"id","required":true,"in":"path","description":"Unique identifier of the async grant to cancel","schema":{"format":"uuid","type":"string"}}],"responses":{"200":{"description":"Async grant request successfully cancelled","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GrantTransferDto"}}}},"400":{"description":"Invalid grant ID or grant is not in a cancellable state"},"401":{"description":"User is not authenticated"},"403":{"description":"User does not have permission to cancel this grant (e.g., not the fund manager)"}},"security":[{"bearer":[]}],"summary":"Cancel async grant","tags":["Grant Transfers"]}},"/v1/recommendations/by-me":{"get":{"description":"Retrieves all recommendations created by the currently authenticated user.","operationId":"RecommendationsController_getRecommendationByUser_v1","parameters":[],"responses":{"200":{"description":"List of recommendations created by the user successfully retrieved","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/RecommendationItemDto"}}}}},"401":{"description":"User is not authenticated"}},"security":[{"bearer":[]}],"summary":"List sent recommendations","tags":["Collaboration"]}},"/v1/recommendations/for-me":{"get":{"description":"Retrieves all recommendations directed to the currently authenticated user.","operationId":"RecommendationsController_getRecommendationForUser_v1","parameters":[],"responses":{"200":{"description":"List of recommendations for the user successfully retrieved","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/RecommendationItemDto"}}}}},"401":{"description":"User is not authenticated"}},"security":[{"bearer":[]}],"summary":"List received recommendations","tags":["Collaboration"]}},"/v1/recommendations/fund/{fundId}":{"get":{"description":"Retrieves all recommendations associated with a specific fund ID that the user has access to.","operationId":"RecommendationsController_getRecommendationsForFund_v1","parameters":[{"name":"fundId","required":true,"in":"path","description":"The ID of the fund","schema":{"format":"uuid","type":"string"}}],"responses":{"200":{"description":"List of recommendations for the fund successfully retrieved","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/RecommendationItemDto"}}}}},"401":{"description":"User is not authenticated"},"403":{"description":"User does not have access to this fund's recommendations"},"404":{"description":"Fund not found"}},"security":[{"bearer":[]}],"summary":"List fund recommendations","tags":["Collaboration"]}},"/v1/recommendations/{id}":{"get":{"description":"Retrieves the details of a specific recommendation by its ID.","operationId":"RecommendationsController_getRecommendationDetailsById_v1","parameters":[{"name":"id","required":true,"in":"path","description":"The ID of the recommendation","schema":{"format":"uuid","type":"string"}}],"responses":{"200":{"description":"Recommendation details successfully retrieved","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecommendationItemDto"}}}},"401":{"description":"User is not authenticated"},"403":{"description":"User does not have access to this recommendation"},"404":{"description":"Recommendation not found"}},"security":[{"bearer":[]}],"summary":"Get recommendation by ID","tags":["Collaboration"]}},"/v1/funds/{id}/collaborators/trust":{"post":{"description":"\n    Adds a collaborator to a fund through a trusted tech platform integration.\n    \n    ## Authorization Requirements\n    This endpoint requires two headers:\n    - x-api-key: The tech platform's secret API key\n    - Authorization: Bearer token containing the user's access token\n    \n    ## How it works\n    - Tech Platforms can add collaborators via this trusted API call\n    - All collaborators added through this endpoint are implicitly trusted\n    - Tech Platforms must provide:\n      1. User Access token (generated during OAuth) to prove the user authorized modifying their Fund\n      2. The Tech Platform's API Key to prove the request is coming from a trusted source\n    ","operationId":"FundsController_addFundCollaboratorTrust_v1","parameters":[{"name":"id","required":true,"in":"path","description":"The unique identifier of the fund","schema":{"example":"123e4567-e89b-12d3-a456-426614174000","type":"string"}},{"name":"x-api-key","in":"header","description":"Tech Platform API Key","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"description":"Collaborator information to be added to the fund","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateFundCollaboratorInputDto"}}}},"responses":{"200":{"description":"Collaborator successfully added to the fund","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CollaboratorListingDto"}}}},"401":{"description":"User is not authenticated or does not have permission to add collaborators to this fund"},"404":{"description":"Fund not found"}},"security":[{"bearer":[]}],"summary":"Add fund collaborator","tags":["Collaboration"]}},"/v1/recommendations/donation":{"post":{"description":"Creates a recommendation for donating cryptocurrency.","operationId":"RecommendationsController_createDonationRecommendation_v1","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateDonationRecommendationInputDto"}}}},"responses":{"200":{"description":"Donation recommendation successfully created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecommendationCreatedResponseDto"}}}},"400":{"description":"Invalid input data provided"}},"security":[{"bearer":[]}],"summary":"Create donation recommendation","tags":["Collaboration"]}},"/v1/recommendations/grant":{"post":{"description":"Creates a recommendation for donating cryptocurrency.","operationId":"RecommendationsController_createGrantRecommendation_v1","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateGrantRecommendationInputDto"}}}},"responses":{"200":{"description":"Donation recommendation successfully created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecommendationCreatedResponseDto"}}}},"400":{"description":"Invalid input data provided"}},"security":[{"bearer":[]}],"summary":"Create grant recommendation","tags":["Collaboration"]}},"/v1/recommendations/pledge-crypto":{"post":{"description":"Creates a recommendation for donating cryptocurrency.","operationId":"RecommendationsController_createCryptoPledgeRecommendation_v1","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateCryptoPledgeRecommendationInputDto"}}}},"responses":{"200":{"description":"Crypto pledge recommendation successfully created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecommendationCreatedResponseDto"}}}},"400":{"description":"Invalid input data provided"}},"security":[{"bearer":[]}],"summary":"Create crypto pledge recommendation","tags":["Collaboration"]}},"/v1/recommendations/trade":{"post":{"description":"Creates a recommendation for a portfolio trade (buy/sell).","operationId":"RecommendationsController_createTradeRecommendation_v1","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreatePortfolioTradeRecommendationInputDto"}}}},"responses":{"200":{"description":"Portfolio trade recommendation successfully created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecommendationCreatedResponseDto"}}}},"400":{"description":"Invalid input data provided"}},"security":[{"bearer":[]}],"summary":"Create portfolio trade recommendation","tags":["Collaboration"]}},"/v2/recommendations/pledge-stock":{"post":{"description":"Creates a recommendation for donating stock.","operationId":"RecommendationsController_createStockPledgeRecommendationV2_v2","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateStockPledgeRecommendationInputDtoV2"}}}},"responses":{"200":{"description":"Stock pledge recommendation successfully created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecommendationCreatedResponseDto"}}}},"400":{"description":"Invalid input data provided or custom broker name is missing when broker name is \"other\""}},"security":[{"bearer":[]}],"summary":"Create stock pledge recommendation","tags":["Collaboration"]}},"/v1/recommendations/{id}/dismiss":{"put":{"description":"Marks a recommendation as dismissed by the user.","operationId":"RecommendationsController_dismissRecommendation_v1","parameters":[{"name":"id","required":true,"in":"path","description":"The ID of the recommendation to dismiss","schema":{"format":"uuid","type":"string"}}],"responses":{"200":{"description":"Recommendation successfully dismissed"},"401":{"description":"User is not authenticated"},"404":{"description":"Recommendation not found"}},"security":[{"bearer":[]}],"summary":"Dismiss recommendation","tags":["Collaboration"]}},"/v1/funds/{id}/collaborators/{userId}":{"delete":{"description":"Removes a collaborator's access to a specific fund. Only the fund manager can perform this action.","operationId":"FundsController_deleteFundCollaborator_v1","parameters":[{"name":"userId","required":true,"in":"path","description":"The unique identifier of the collaborator user to remove","schema":{}},{"name":"id","required":true,"in":"path","description":"The unique identifier of the fund","schema":{}}],"responses":{"200":{"description":"Collaborator successfully removed from the fund"},"401":{"description":"User is not authenticated or not authorized to remove collaborators"},"404":{"description":"Fund or collaborator not found"}},"security":[{"bearer":[]}],"summary":"Remove fund collaborator","tags":["Collaboration"]}},"/v1/activity/featured":{"get":{"description":"\n    Returns a list of featured activities from across the platform, sorted by date (newest first).\n    \n    Authentication is optional:\n    - Featured activities are visible to all users\n    - However, some activities may include additional context for authenticated users\n    ","operationId":"ActivityController_getFeaturedRecentActivity_v1","parameters":[],"responses":{"200":{"description":"List of featured activities successfully retrieved","content":{"application/json":{"schema":{"type":"array","items":{"oneOf":[{"$ref":"#/components/schemas/DonationActivity"},{"$ref":"#/components/schemas/PortfolioTradeActivity"},{"$ref":"#/components/schemas/InternalTransferActivity"},{"$ref":"#/components/schemas/StockDonationPledgeActivity"},{"$ref":"#/components/schemas/CustodianCashPledgeActivity"},{"$ref":"#/components/schemas/CryptoDonationPledgeActivity"},{"$ref":"#/components/schemas/FiatDonationPledgeActivity"},{"$ref":"#/components/schemas/CashDonationPledgeActivity"}],"discriminator":{"propertyName":"type","mapping":{"donation":"#/components/schemas/DonationActivity","portfolio_trade":"#/components/schemas/PortfolioTradeActivity","grant":"#/components/schemas/InternalTransferActivity","internal_transfer":"#/components/schemas/InternalTransferActivity","pending_grant":"#/components/schemas/InternalTransferActivity","pending_internal_transfer":"#/components/schemas/InternalTransferActivity","stock_donation_pledge":"#/components/schemas/StockDonationPledgeActivity","custodian_cash_pledge":"#/components/schemas/CustodianCashPledgeActivity","crypto_donation_pledge":"#/components/schemas/CryptoDonationPledgeActivity","nec_donation_pledge":"#/components/schemas/CryptoDonationPledgeActivity","fiat_donation_pledge":"#/components/schemas/FiatDonationPledgeActivity","cash_donation_pledge":"#/components/schemas/CashDonationPledgeActivity"}}}}}}}},"security":[{"bearer":[]}],"summary":"List featured activity","tags":["Activity"]}},"/v1/activity/fund/{id}":{"get":{"description":"\n    Returns a list of recent activities associated with a specific fund.\n    The activities are sorted by creation date in descending order (newest first).\n\n    Authentication is optional:\n    - Public funds' activities are visible to all users\n    - Private funds' activities are only visible to authenticated users with access to the fund\n    ","operationId":"ActivityController_getRecentFundActivity_v1","parameters":[{"name":"count","required":false,"in":"query","description":"Number of items to return per page","schema":{"minimum":1,"default":10,"example":10,"type":"number"}},{"name":"offset","required":false,"in":"query","description":"Number of items to skip (for pagination)","schema":{"minimum":0,"default":0,"example":0,"type":"number"}},{"name":"id","required":true,"in":"path","description":"Unique identifier of the fund","schema":{"format":"uuid","example":"123e4567-e89b-12d3-a456-426614174000","type":"string"}}],"responses":{"200":{"description":"List of recent activities successfully retrieved. Without pagination params: plain array (legacy). With count and/or offset: paginated envelope (count alone implies offset=0).","content":{"application/json":{"schema":{"oneOf":[{"type":"array","items":{"oneOf":[{"$ref":"#/components/schemas/DonationActivity"},{"$ref":"#/components/schemas/PortfolioTradeActivity"},{"$ref":"#/components/schemas/InternalTransferActivity"},{"$ref":"#/components/schemas/StockDonationPledgeActivity"},{"$ref":"#/components/schemas/CustodianCashPledgeActivity"},{"$ref":"#/components/schemas/CryptoDonationPledgeActivity"},{"$ref":"#/components/schemas/FiatDonationPledgeActivity"},{"$ref":"#/components/schemas/CashDonationPledgeActivity"}],"discriminator":{"propertyName":"type","mapping":{"donation":"#/components/schemas/DonationActivity","portfolio_trade":"#/components/schemas/PortfolioTradeActivity","grant":"#/components/schemas/InternalTransferActivity","internal_transfer":"#/components/schemas/InternalTransferActivity","pending_grant":"#/components/schemas/InternalTransferActivity","pending_internal_transfer":"#/components/schemas/InternalTransferActivity","stock_donation_pledge":"#/components/schemas/StockDonationPledgeActivity","custodian_cash_pledge":"#/components/schemas/CustodianCashPledgeActivity","crypto_donation_pledge":"#/components/schemas/CryptoDonationPledgeActivity","nec_donation_pledge":"#/components/schemas/CryptoDonationPledgeActivity","fiat_donation_pledge":"#/components/schemas/FiatDonationPledgeActivity","cash_donation_pledge":"#/components/schemas/CashDonationPledgeActivity"}}}},{"type":"object","properties":{"items":{"type":"array","items":{"oneOf":[{"$ref":"#/components/schemas/DonationActivity"},{"$ref":"#/components/schemas/PortfolioTradeActivity"},{"$ref":"#/components/schemas/InternalTransferActivity"},{"$ref":"#/components/schemas/StockDonationPledgeActivity"},{"$ref":"#/components/schemas/CustodianCashPledgeActivity"},{"$ref":"#/components/schemas/CryptoDonationPledgeActivity"},{"$ref":"#/components/schemas/FiatDonationPledgeActivity"},{"$ref":"#/components/schemas/CashDonationPledgeActivity"}],"discriminator":{"propertyName":"type","mapping":{"donation":"#/components/schemas/DonationActivity","portfolio_trade":"#/components/schemas/PortfolioTradeActivity","grant":"#/components/schemas/InternalTransferActivity","internal_transfer":"#/components/schemas/InternalTransferActivity","pending_grant":"#/components/schemas/InternalTransferActivity","pending_internal_transfer":"#/components/schemas/InternalTransferActivity","stock_donation_pledge":"#/components/schemas/StockDonationPledgeActivity","custodian_cash_pledge":"#/components/schemas/CustodianCashPledgeActivity","crypto_donation_pledge":"#/components/schemas/CryptoDonationPledgeActivity","nec_donation_pledge":"#/components/schemas/CryptoDonationPledgeActivity","fiat_donation_pledge":"#/components/schemas/FiatDonationPledgeActivity","cash_donation_pledge":"#/components/schemas/CashDonationPledgeActivity"}}}},"count":{"type":"integer","description":"Resolved page size","minimum":1,"maximum":100},"offset":{"type":"integer","description":"Resolved offset","minimum":0},"returnedCount":{"type":"integer","description":"Actual items returned","minimum":0},"hasMore":{"type":"boolean","description":"Whether more items exist"}},"required":["items","count","offset","returnedCount","hasMore"]}]}}}},"401":{"description":"User is not authenticated and the fund is private"}},"security":[{"bearer":[]}],"summary":"List fund activity","tags":["Activity"]}},"/v1/activity/mine":{"get":{"description":"Returns a list of activities associated with the authenticated user","operationId":"ActivityController_getUserRecentActivity_v1","parameters":[{"name":"count","required":false,"in":"query","description":"Number of items to return per page","schema":{"minimum":1,"default":10,"example":10,"type":"number"}},{"name":"offset","required":false,"in":"query","description":"Number of items to skip (for pagination)","schema":{"minimum":0,"default":0,"example":0,"type":"number"}}],"responses":{"200":{"description":"List of user activities successfully retrieved. Without pagination params: plain array (legacy). With count and/or offset: paginated envelope (count alone implies offset=0).","content":{"application/json":{"schema":{"oneOf":[{"type":"array","items":{"oneOf":[{"$ref":"#/components/schemas/DonationActivity"},{"$ref":"#/components/schemas/PortfolioTradeActivity"},{"$ref":"#/components/schemas/InternalTransferActivity"},{"$ref":"#/components/schemas/StockDonationPledgeActivity"},{"$ref":"#/components/schemas/CustodianCashPledgeActivity"},{"$ref":"#/components/schemas/CryptoDonationPledgeActivity"},{"$ref":"#/components/schemas/FiatDonationPledgeActivity"},{"$ref":"#/components/schemas/CashDonationPledgeActivity"}],"discriminator":{"propertyName":"type","mapping":{"donation":"#/components/schemas/DonationActivity","portfolio_trade":"#/components/schemas/PortfolioTradeActivity","grant":"#/components/schemas/InternalTransferActivity","internal_transfer":"#/components/schemas/InternalTransferActivity","pending_grant":"#/components/schemas/InternalTransferActivity","pending_internal_transfer":"#/components/schemas/InternalTransferActivity","stock_donation_pledge":"#/components/schemas/StockDonationPledgeActivity","custodian_cash_pledge":"#/components/schemas/CustodianCashPledgeActivity","crypto_donation_pledge":"#/components/schemas/CryptoDonationPledgeActivity","nec_donation_pledge":"#/components/schemas/CryptoDonationPledgeActivity","fiat_donation_pledge":"#/components/schemas/FiatDonationPledgeActivity","cash_donation_pledge":"#/components/schemas/CashDonationPledgeActivity"}}}},{"type":"object","properties":{"items":{"type":"array","items":{"oneOf":[{"$ref":"#/components/schemas/DonationActivity"},{"$ref":"#/components/schemas/PortfolioTradeActivity"},{"$ref":"#/components/schemas/InternalTransferActivity"},{"$ref":"#/components/schemas/StockDonationPledgeActivity"},{"$ref":"#/components/schemas/CustodianCashPledgeActivity"},{"$ref":"#/components/schemas/CryptoDonationPledgeActivity"},{"$ref":"#/components/schemas/FiatDonationPledgeActivity"},{"$ref":"#/components/schemas/CashDonationPledgeActivity"}],"discriminator":{"propertyName":"type","mapping":{"donation":"#/components/schemas/DonationActivity","portfolio_trade":"#/components/schemas/PortfolioTradeActivity","grant":"#/components/schemas/InternalTransferActivity","internal_transfer":"#/components/schemas/InternalTransferActivity","pending_grant":"#/components/schemas/InternalTransferActivity","pending_internal_transfer":"#/components/schemas/InternalTransferActivity","stock_donation_pledge":"#/components/schemas/StockDonationPledgeActivity","custodian_cash_pledge":"#/components/schemas/CustodianCashPledgeActivity","crypto_donation_pledge":"#/components/schemas/CryptoDonationPledgeActivity","nec_donation_pledge":"#/components/schemas/CryptoDonationPledgeActivity","fiat_donation_pledge":"#/components/schemas/FiatDonationPledgeActivity","cash_donation_pledge":"#/components/schemas/CashDonationPledgeActivity"}}}},"count":{"type":"integer","description":"Resolved page size","minimum":1,"maximum":100},"offset":{"type":"integer","description":"Resolved offset","minimum":0},"returnedCount":{"type":"integer","description":"Actual items returned","minimum":0},"hasMore":{"type":"boolean","description":"Whether more items exist"}},"required":["items","count","offset","returnedCount","hasMore"]}]}}}}},"security":[{"bearer":[]}],"summary":"List caller activity","tags":["Activity"]}},"/v1/activity/org/{id}":{"get":{"description":"\n    Returns a list of recent activities associated with a specific organization.\n    The activities are sorted by creation date in descending order (newest first).\n    \n    This includes donations, grants, transfers, and other relevant activities.\n    \n    Authentication is optional:\n    - Organization activities are visible to all users\n    - However, some activities may include additional details for authenticated users\n    ","operationId":"ActivityController_getRecentOrgActivity_v1","parameters":[{"name":"count","required":false,"in":"query","description":"Number of items to return per page","schema":{"minimum":1,"default":10,"example":10,"type":"number"}},{"name":"offset","required":false,"in":"query","description":"Number of items to skip (for pagination)","schema":{"minimum":0,"default":0,"example":0,"type":"number"}},{"name":"id","required":true,"in":"path","description":"Unique identifier of the organization","schema":{"format":"uuid","example":"123e4567-e89b-12d3-a456-426614174000","type":"string"}}],"responses":{"200":{"description":"List of recent activities successfully retrieved. Without pagination params: plain array (legacy). With count and/or offset: paginated envelope (count alone implies offset=0).","content":{"application/json":{"schema":{"oneOf":[{"type":"array","items":{"oneOf":[{"$ref":"#/components/schemas/DonationActivity"},{"$ref":"#/components/schemas/PortfolioTradeActivity"},{"$ref":"#/components/schemas/InternalTransferActivity"},{"$ref":"#/components/schemas/StockDonationPledgeActivity"},{"$ref":"#/components/schemas/CustodianCashPledgeActivity"},{"$ref":"#/components/schemas/CryptoDonationPledgeActivity"},{"$ref":"#/components/schemas/FiatDonationPledgeActivity"},{"$ref":"#/components/schemas/CashDonationPledgeActivity"}],"discriminator":{"propertyName":"type","mapping":{"donation":"#/components/schemas/DonationActivity","portfolio_trade":"#/components/schemas/PortfolioTradeActivity","grant":"#/components/schemas/InternalTransferActivity","internal_transfer":"#/components/schemas/InternalTransferActivity","pending_grant":"#/components/schemas/InternalTransferActivity","pending_internal_transfer":"#/components/schemas/InternalTransferActivity","stock_donation_pledge":"#/components/schemas/StockDonationPledgeActivity","custodian_cash_pledge":"#/components/schemas/CustodianCashPledgeActivity","crypto_donation_pledge":"#/components/schemas/CryptoDonationPledgeActivity","nec_donation_pledge":"#/components/schemas/CryptoDonationPledgeActivity","fiat_donation_pledge":"#/components/schemas/FiatDonationPledgeActivity","cash_donation_pledge":"#/components/schemas/CashDonationPledgeActivity"}}}},{"type":"object","properties":{"items":{"type":"array","items":{"oneOf":[{"$ref":"#/components/schemas/DonationActivity"},{"$ref":"#/components/schemas/PortfolioTradeActivity"},{"$ref":"#/components/schemas/InternalTransferActivity"},{"$ref":"#/components/schemas/StockDonationPledgeActivity"},{"$ref":"#/components/schemas/CustodianCashPledgeActivity"},{"$ref":"#/components/schemas/CryptoDonationPledgeActivity"},{"$ref":"#/components/schemas/FiatDonationPledgeActivity"},{"$ref":"#/components/schemas/CashDonationPledgeActivity"}],"discriminator":{"propertyName":"type","mapping":{"donation":"#/components/schemas/DonationActivity","portfolio_trade":"#/components/schemas/PortfolioTradeActivity","grant":"#/components/schemas/InternalTransferActivity","internal_transfer":"#/components/schemas/InternalTransferActivity","pending_grant":"#/components/schemas/InternalTransferActivity","pending_internal_transfer":"#/components/schemas/InternalTransferActivity","stock_donation_pledge":"#/components/schemas/StockDonationPledgeActivity","custodian_cash_pledge":"#/components/schemas/CustodianCashPledgeActivity","crypto_donation_pledge":"#/components/schemas/CryptoDonationPledgeActivity","nec_donation_pledge":"#/components/schemas/CryptoDonationPledgeActivity","fiat_donation_pledge":"#/components/schemas/FiatDonationPledgeActivity","cash_donation_pledge":"#/components/schemas/CashDonationPledgeActivity"}}}},"count":{"type":"integer","description":"Resolved page size","minimum":1,"maximum":100},"offset":{"type":"integer","description":"Resolved offset","minimum":0},"returnedCount":{"type":"integer","description":"Actual items returned","minimum":0},"hasMore":{"type":"boolean","description":"Whether more items exist"}},"required":["items","count","offset","returnedCount","hasMore"]}]}}}}},"security":[{"bearer":[]}],"summary":"List organization activity","tags":["Activity"]}},"/v1/activity/portfolio/{id}":{"get":{"description":"\n    Returns a list of activities associated with a specific portfolio.\n    \n    Authentication is optional:\n    - Portfolio activities will display enriched information for authenticated users\n    - Unauthenticated users will only see public information about the portfolio activity\n    ","operationId":"ActivityController_getRecentPortfolioActivity_v1","parameters":[{"name":"count","required":false,"in":"query","description":"Number of items to return per page","schema":{"minimum":1,"default":10,"example":10,"type":"number"}},{"name":"offset","required":false,"in":"query","description":"Number of items to skip (for pagination)","schema":{"minimum":0,"default":0,"example":0,"type":"number"}},{"name":"id","required":true,"in":"path","description":"Unique identifier of the portfolio","schema":{"format":"uuid","example":"123e4567-e89b-12d3-a456-426614174000","type":"string"}}],"responses":{"200":{"description":"List of portfolio activities successfully retrieved. Without pagination params: plain array (legacy). With count and/or offset: paginated envelope (count alone implies offset=0).","content":{"application/json":{"schema":{"oneOf":[{"type":"array","items":{"oneOf":[{"$ref":"#/components/schemas/DonationActivity"},{"$ref":"#/components/schemas/PortfolioTradeActivity"},{"$ref":"#/components/schemas/InternalTransferActivity"},{"$ref":"#/components/schemas/StockDonationPledgeActivity"},{"$ref":"#/components/schemas/CustodianCashPledgeActivity"},{"$ref":"#/components/schemas/CryptoDonationPledgeActivity"},{"$ref":"#/components/schemas/FiatDonationPledgeActivity"},{"$ref":"#/components/schemas/CashDonationPledgeActivity"}],"discriminator":{"propertyName":"type","mapping":{"donation":"#/components/schemas/DonationActivity","portfolio_trade":"#/components/schemas/PortfolioTradeActivity","grant":"#/components/schemas/InternalTransferActivity","internal_transfer":"#/components/schemas/InternalTransferActivity","pending_grant":"#/components/schemas/InternalTransferActivity","pending_internal_transfer":"#/components/schemas/InternalTransferActivity","stock_donation_pledge":"#/components/schemas/StockDonationPledgeActivity","custodian_cash_pledge":"#/components/schemas/CustodianCashPledgeActivity","crypto_donation_pledge":"#/components/schemas/CryptoDonationPledgeActivity","nec_donation_pledge":"#/components/schemas/CryptoDonationPledgeActivity","fiat_donation_pledge":"#/components/schemas/FiatDonationPledgeActivity","cash_donation_pledge":"#/components/schemas/CashDonationPledgeActivity"}}}},{"type":"object","properties":{"items":{"type":"array","items":{"oneOf":[{"$ref":"#/components/schemas/DonationActivity"},{"$ref":"#/components/schemas/PortfolioTradeActivity"},{"$ref":"#/components/schemas/InternalTransferActivity"},{"$ref":"#/components/schemas/StockDonationPledgeActivity"},{"$ref":"#/components/schemas/CustodianCashPledgeActivity"},{"$ref":"#/components/schemas/CryptoDonationPledgeActivity"},{"$ref":"#/components/schemas/FiatDonationPledgeActivity"},{"$ref":"#/components/schemas/CashDonationPledgeActivity"}],"discriminator":{"propertyName":"type","mapping":{"donation":"#/components/schemas/DonationActivity","portfolio_trade":"#/components/schemas/PortfolioTradeActivity","grant":"#/components/schemas/InternalTransferActivity","internal_transfer":"#/components/schemas/InternalTransferActivity","pending_grant":"#/components/schemas/InternalTransferActivity","pending_internal_transfer":"#/components/schemas/InternalTransferActivity","stock_donation_pledge":"#/components/schemas/StockDonationPledgeActivity","custodian_cash_pledge":"#/components/schemas/CustodianCashPledgeActivity","crypto_donation_pledge":"#/components/schemas/CryptoDonationPledgeActivity","nec_donation_pledge":"#/components/schemas/CryptoDonationPledgeActivity","fiat_donation_pledge":"#/components/schemas/FiatDonationPledgeActivity","cash_donation_pledge":"#/components/schemas/CashDonationPledgeActivity"}}}},"count":{"type":"integer","description":"Resolved page size","minimum":1,"maximum":100},"offset":{"type":"integer","description":"Resolved offset","minimum":0},"returnedCount":{"type":"integer","description":"Actual items returned","minimum":0},"hasMore":{"type":"boolean","description":"Whether more items exist"}},"required":["items","count","offset","returnedCount","hasMore"]}]}}}}},"security":[{"bearer":[]}],"summary":"List portfolio activity","tags":["Activity"]}},"/v1/activity/subproject/{id}":{"get":{"description":"\n    Returns a list of recent activities associated with a specific subproject.\n    The activities are sorted by creation date in descending order (newest first).\n    \n    This includes donations and transfers received by the subproject.\n    \n    Authentication is optional:\n    - Subproject activities are visible to all users\n    - However, some activities may include additional details for authenticated users\n    ","operationId":"ActivityController_getRecentSubprojectActivity_v1","parameters":[{"name":"count","required":false,"in":"query","description":"Number of items to return per page","schema":{"minimum":1,"default":10,"example":10,"type":"number"}},{"name":"offset","required":false,"in":"query","description":"Number of items to skip (for pagination)","schema":{"minimum":0,"default":0,"example":0,"type":"number"}},{"name":"id","required":true,"in":"path","description":"Unique identifier of the subproject","schema":{"format":"uuid","example":"123e4567-e89b-12d3-a456-426614174000","type":"string"}}],"responses":{"200":{"description":"List of recent activities successfully retrieved. Without pagination params: plain array (legacy). With count and/or offset: paginated envelope (count alone implies offset=0).","content":{"application/json":{"schema":{"oneOf":[{"type":"array","items":{"oneOf":[{"$ref":"#/components/schemas/DonationActivity"},{"$ref":"#/components/schemas/PortfolioTradeActivity"},{"$ref":"#/components/schemas/InternalTransferActivity"},{"$ref":"#/components/schemas/StockDonationPledgeActivity"},{"$ref":"#/components/schemas/CustodianCashPledgeActivity"},{"$ref":"#/components/schemas/CryptoDonationPledgeActivity"},{"$ref":"#/components/schemas/FiatDonationPledgeActivity"},{"$ref":"#/components/schemas/CashDonationPledgeActivity"}],"discriminator":{"propertyName":"type","mapping":{"donation":"#/components/schemas/DonationActivity","portfolio_trade":"#/components/schemas/PortfolioTradeActivity","grant":"#/components/schemas/InternalTransferActivity","internal_transfer":"#/components/schemas/InternalTransferActivity","pending_grant":"#/components/schemas/InternalTransferActivity","pending_internal_transfer":"#/components/schemas/InternalTransferActivity","stock_donation_pledge":"#/components/schemas/StockDonationPledgeActivity","custodian_cash_pledge":"#/components/schemas/CustodianCashPledgeActivity","crypto_donation_pledge":"#/components/schemas/CryptoDonationPledgeActivity","nec_donation_pledge":"#/components/schemas/CryptoDonationPledgeActivity","fiat_donation_pledge":"#/components/schemas/FiatDonationPledgeActivity","cash_donation_pledge":"#/components/schemas/CashDonationPledgeActivity"}}}},{"type":"object","properties":{"items":{"type":"array","items":{"oneOf":[{"$ref":"#/components/schemas/DonationActivity"},{"$ref":"#/components/schemas/PortfolioTradeActivity"},{"$ref":"#/components/schemas/InternalTransferActivity"},{"$ref":"#/components/schemas/StockDonationPledgeActivity"},{"$ref":"#/components/schemas/CustodianCashPledgeActivity"},{"$ref":"#/components/schemas/CryptoDonationPledgeActivity"},{"$ref":"#/components/schemas/FiatDonationPledgeActivity"},{"$ref":"#/components/schemas/CashDonationPledgeActivity"}],"discriminator":{"propertyName":"type","mapping":{"donation":"#/components/schemas/DonationActivity","portfolio_trade":"#/components/schemas/PortfolioTradeActivity","grant":"#/components/schemas/InternalTransferActivity","internal_transfer":"#/components/schemas/InternalTransferActivity","pending_grant":"#/components/schemas/InternalTransferActivity","pending_internal_transfer":"#/components/schemas/InternalTransferActivity","stock_donation_pledge":"#/components/schemas/StockDonationPledgeActivity","custodian_cash_pledge":"#/components/schemas/CustodianCashPledgeActivity","crypto_donation_pledge":"#/components/schemas/CryptoDonationPledgeActivity","nec_donation_pledge":"#/components/schemas/CryptoDonationPledgeActivity","fiat_donation_pledge":"#/components/schemas/FiatDonationPledgeActivity","cash_donation_pledge":"#/components/schemas/CashDonationPledgeActivity"}}}},"count":{"type":"integer","description":"Resolved page size","minimum":1,"maximum":100},"offset":{"type":"integer","description":"Resolved offset","minimum":0},"returnedCount":{"type":"integer","description":"Actual items returned","minimum":0},"hasMore":{"type":"boolean","description":"Whether more items exist"}},"required":["items","count","offset","returnedCount","hasMore"]}]}}}}},"security":[{"bearer":[]}],"summary":"List subproject activity","tags":["Activity"]}}},"info":{"title":"Endaoment API","description":"The official Endaoment API endpoints. Dev (canary) = newest features; Staging (stable) = pre-production.","version":"0.0.0-dev","contact":{}},"tags":[{"name":"Partner Endpoints","description":"Tech-platform partner server-to-server APIs"},{"name":"Authentication","description":"OAuth callers, API keys, and session verification"},{"name":"Funds","description":"Donor-advised fund lifecycle"},{"name":"Donations","description":"Donation pledges, supported assets, and impact totals"},{"name":"Portfolios","description":"Investment portfolio catalog"},{"name":"Nonprofit Organizations","description":"Nonprofit lookup, subprojects, and missing-org intake"},{"name":"Grant Transfers","description":"Grant and entity transfers"},{"name":"Collaboration","description":"Collaborator recommendations and fund collaboration"},{"name":"Activity","description":"Public and scoped activity feeds"}],"servers":[{"url":"https://api.dev.endaoment.org","description":"Dev (canary)"}],"components":{"securitySchemes":{"bearer":{"scheme":"bearer","bearerFormat":"JWT","type":"http"},"ApiKey":{"type":"apiKey","in":"header","name":"x-api-key"},"NdaoAuthCookie":{"type":"apiKey","in":"cookie","name":"NdaoAuth"},"OAuthClientCredentials":{"type":"http","scheme":"basic","description":"OAuth client ID and secret as HTTP Basic credentials."}},"schemas":{"WhoAmIApiKeyUserDto":{"type":"object","properties":{"clientName":{"type":"string","description":"Human-readable name of the API key client.","example":"Authorization Server"},"openIdConnectClientId":{"type":"string","description":"OIDC client ID associated with the API key, when the key is tied to a tech platform.","example":"partner-oidc-client"},"roles":{"description":"Roles granted to the API key client.","example":["keeper"],"type":"array","items":{"type":"string"}}},"required":["clientName","roles"]},"WhoAmINdaoAuthUserDto":{"type":"object","properties":{"userId":{"type":"string","description":"Unique identifier of the authenticated Endaoment user.","format":"uuid","example":"123e4567-e89b-12d3-a456-426614174000"},"wallet":{"type":"string","description":"Wallet address associated with the authenticated user.","example":"0x0000000000000000000000000000000000000000"},"hasInformedReferralSource":{"type":"boolean","description":"Whether the user has already informed Endaoment how they heard about the platform.","example":true},"socialEmail":{"type":"string","description":"Verified social email for the authenticated user, when present.","example":"donor@example.org"},"iat":{"type":"number","description":"JWT issued-at timestamp, in seconds since the Unix epoch.","example":1716239024},"exp":{"type":"number","description":"JWT expiration timestamp, in seconds since the Unix epoch.","example":1716498224}},"required":["userId","wallet","iat","exp"]},"WhoAmIOidcUserDto":{"type":"object","properties":{"userId":{"type":"string","description":"Unique identifier of the authenticated Endaoment user.","format":"uuid","example":"123e4567-e89b-12d3-a456-426614174000"},"wallet":{"type":"string","description":"Wallet address associated with the authenticated user.","example":"0x0000000000000000000000000000000000000000"},"hasInformedReferralSource":{"type":"boolean","description":"Whether the user has already informed Endaoment how they heard about the platform.","example":true},"socialEmail":{"type":"string","description":"Verified social email for the authenticated user, when present.","example":"donor@example.org"},"iat":{"type":"number","description":"JWT issued-at timestamp, in seconds since the Unix epoch.","example":1716239024},"exp":{"type":"number","description":"JWT expiration timestamp, in seconds since the Unix epoch.","example":1716498224},"jti":{"type":"string","description":"Unique identifier for the OIDC JWT.","example":"01HX2T9E1Q9Y9M4B7Z8Q2YQ2YQ"},"sub":{"type":"string","description":"OIDC subject identifier.","example":"user_123"},"iss":{"type":"string","description":"OIDC issuer.","example":"https://auth.endaoment.org"},"clientId":{"type":"string","description":"Client that issued the OIDC JWT.","example":"partner-oidc-client"},"scope":{"type":"string","description":"Space-delimited OIDC scopes granted to the token.","example":"openid profile"},"aud":{"type":"string","description":"OIDC audience.","example":"api.endaoment.org"}},"required":["userId","wallet","iat","exp","jti","sub","iss","clientId","aud"]},"AddressInputDto":{"type":"object","properties":{"line1":{"type":"string","description":"First line of the address","example":"123 Main Street","maxLength":255},"line2":{"type":"object","description":"Second line of the address (optional)","example":"Suite 100","maxLength":255,"nullable":true},"city":{"type":"string","description":"City name","example":"San Francisco","maxLength":255},"state":{"type":"object","description":"State/Province/Region. Required if country is USA","example":"CA","maxLength":255,"nullable":true},"zip":{"type":"string","description":"Postal/ZIP code. Required if country is USA","example":"94105","maxLength":255,"nullable":true},"country":{"type":"string","description":"Three-letter ISO country code. Defaults to USA","example":"USA","enum":["ABW","AFG","AGO","AIA","ALA","ALB","AND","ARE","ARG","ARM","ASM","ATA","ATF","ATG","AUS","AUT","AZE","BDI","BEL","BEN","BES","BFA","BGD","BGR","BHR","BHS","BIH","BLM","BLR","BLZ","BMU","BOL","BRA","BRB","BRN","BTN","BVT","BWA","CAF","CAN","CCK","CHE","CHL","CHN","CIV","CMR","COD","COG","COK","COL","COM","CPV","CRI","CUB","CUW","CXR","CYM","CYP","CZE","DEU","DJI","DMA","DNK","DOM","DZA","ECU","EGY","ERI","ESH","ESP","EST","ETH","FIN","FJI","FLK","FRA","FRO","FSM","GAB","GBR","GEO","GGY","GHA","GIB","GIN","GLP","GMB","GNB","GNQ","GRC","GRD","GRL","GTM","GUF","GUM","GUY","HKG","HMD","HND","HRV","HTI","HUN","IDN","IMN","IND","IOT","IRL","IRN","IRQ","ISL","ISR","ITA","JAM","JEY","JOR","JPN","KAZ","KEN","KGZ","KHM","KIR","KNA","KOR","KWT","LAO","LBN","LBR","LBY","LCA","LIE","LKA","LSO","LTU","LUX","LVA","MAC","MAF","MAR","MCO","MDA","MDG","MDV","MEX","MHL","MKD","MLI","MLT","MMR","MNE","MNG","MNP","MOZ","MRT","MSR","MTQ","MUS","MWI","MYS","MYT","NAM","NCL","NER","NFK","NGA","NIC","NIU","NLD","NOR","NPL","NRU","NZL","OMN","PAK","PAN","PCN","PER","PHL","PLW","PNG","POL","PRI","PRK","PRT","PRY","PSE","PYF","QAT","REU","ROU","RUS","RWA","SAU","SDN","SEN","SGP","SGS","SHN","SJM","SLB","SLE","SLV","SMR","SOM","SPM","SRB","SSD","STP","SUR","SVK","SVN","SWE","SWZ","SXM","SYC","SYR","TCA","TCD","TGO","THA","TJK","TKL","TKM","TLS","TON","TTO","TUN","TUR","TUV","TWN","TZA","UGA","UKR","UMI","URY","USA","UZB","VAT","VCT","VEN","VGB","VIR","VNM","VUT","WLF","WSM","XKX","YEM","ZAF","ZMB","ZWE"],"default":"USA"}},"required":["line1","city"]},"PartnerCreateUserDto":{"type":"object","properties":{"partnerUserIdentifier":{"type":"string","description":"Opaque partner-generated identifier for this user, used as the partner-scoped idempotency key. Must be 8–64 printable ASCII characters; leading/trailing whitespace is trimmed before validation.","example":"c3f8b2e4-9d1a-4f6b-8e2c-7a5d90c41b3f","minLength":8,"maxLength":64,"pattern":"^[\\x20-\\x7E]{8,64}$"},"firstName":{"type":"string","description":"First name of the partner-managed user","example":"Ada","maxLength":255},"lastName":{"type":"string","description":"Last name of the partner-managed user","example":"Lovelace","maxLength":255},"email":{"type":"object","description":"Email address of the partner-managed user. Omit when the partner is configured for no-email provisioning.","example":"new-user@altruist.com","format":"email","nullable":true},"address":{"description":"Physical address of the partner-managed user","allOf":[{"$ref":"#/components/schemas/AddressInputDto"}]}},"required":["partnerUserIdentifier","firstName","lastName","address"]},"PartnerUserResponseDto":{"type":"object","properties":{"id":{"type":"string","description":"Endaoment user id. Persist this and use it for all subsequent operations for this user.","example":"0b3e6f2a-9d1a-4f6b-8e2c-7a5d90c41b3f","format":"uuid"},"partnerUserIdentifier":{"type":"string","description":"The opaque partner-generated identifier, echoed back from the request.","example":"c3f8b2e4-9d1a-4f6b-8e2c-7a5d90c41b3f"},"email":{"type":"string","description":"The partner-managed user's email address, normalized to lowercase.","example":"new-user@altruist.com","format":"email"},"techPlatformClientId":{"type":"string","description":"The tech platform client id that owns this user (derived server-side from the API key).","example":"altruist"},"emailVerificationStatus":{"type":"string","description":"Email verification status. `PENDING` until the user completes a first-party login.","enum":["PENDING","VERIFIED"],"example":"PENDING"}},"required":["id","partnerUserIdentifier","email","techPlatformClientId","emailVerificationStatus"]},"TokenListingDto":{"type":"object","properties":{"id":{"type":"number","description":"Unique identifier of the token","example":1},"symbol":{"type":"string","description":"Symbol of the token","example":"ETH"},"name":{"type":"string","description":"Full name of the token","example":"Ethereum"},"decimals":{"type":"number","description":"Number of decimal places used by the token","example":18},"logoUrl":{"type":"string","description":"URL to the token logo image","example":"https://example.com/ethereum-logo.png"},"type":{"type":"string","description":"Type of token","enum":["Token","EvmToken","OtcToken"],"example":"Token"},"featured":{"type":"boolean","description":"Whether the token is featured","example":true},"popularity":{"type":"number","description":"Popularity score of the token","example":10},"chainId":{"type":"number","description":"Chain ID where the token exists (for EVM tokens)","nullable":true,"example":1},"contractAddress":{"type":"string","description":"Contract address of the token (for EVM tokens)","nullable":true,"example":"0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2"},"otcAddress":{"type":"string","description":"Address for receiving the token over-the-counter, without automatic liquidation on the blockchain. The property is always present for OtcTokens, but may be undefined for EvmTokens if no OTC address is found.","nullable":true,"example":"bc1qxy2kgdygjrsqtzq2n0yrf2493p83kkfjhx0wlh"},"memo":{"type":"string","description":"Optional memo/tag for token transfers","nullable":true,"example":"MEMO123456"},"otcNetwork":{"type":"object","description":"OTC Network information for the token, if available","nullable":true,"example":{"id":"ethereum","type":"mainnet"}},"otcChainId":{"type":"number","description":"Chain ID mapped from OTC Network when the network corresponds to an EVM chain. This helps identify which chain the OTC address accepts deposits on.","nullable":true,"example":1}},"required":["id","symbol","name","decimals","logoUrl","type","featured","popularity"]},"SupportedTokensResponseDto":{"type":"object","properties":{"tokens":{"description":"List of supported tokens","type":"array","items":{"$ref":"#/components/schemas/TokenListingDto"}}},"required":["tokens"]},"OrgAddress":{"type":"object","properties":{"line1":{"type":"string","description":"Street address including building/apartment number","example":"123 Main St","nullable":true},"city":{"type":"string","description":"City name","example":"San Francisco","nullable":true},"state":{"type":"string","description":"State or province code","example":"CA","nullable":true},"zip":{"type":"string","description":"Postal code","example":"94105","nullable":true},"country":{"type":"string","description":"ISO 3166-1 alpha-3 country code","example":"USA","enum":["ABW","AFG","AGO","AIA","ALA","ALB","AND","ARE","ARG","ARM","ASM","ATA","ATF","ATG","AUS","AUT","AZE","BDI","BEL","BEN","BES","BFA","BGD","BGR","BHR","BHS","BIH","BLM","BLR","BLZ","BMU","BOL","BRA","BRB","BRN","BTN","BVT","BWA","CAF","CAN","CCK","CHE","CHL","CHN","CIV","CMR","COD","COG","COK","COL","COM","CPV","CRI","CUB","CUW","CXR","CYM","CYP","CZE","DEU","DJI","DMA","DNK","DOM","DZA","ECU","EGY","ERI","ESH","ESP","EST","ETH","FIN","FJI","FLK","FRA","FRO","FSM","GAB","GBR","GEO","GGY","GHA","GIB","GIN","GLP","GMB","GNB","GNQ","GRC","GRD","GRL","GTM","GUF","GUM","GUY","HKG","HMD","HND","HRV","HTI","HUN","IDN","IMN","IND","IOT","IRL","IRN","IRQ","ISL","ISR","ITA","JAM","JEY","JOR","JPN","KAZ","KEN","KGZ","KHM","KIR","KNA","KOR","KWT","LAO","LBN","LBR","LBY","LCA","LIE","LKA","LSO","LTU","LUX","LVA","MAC","MAF","MAR","MCO","MDA","MDG","MDV","MEX","MHL","MKD","MLI","MLT","MMR","MNE","MNG","MNP","MOZ","MRT","MSR","MTQ","MUS","MWI","MYS","MYT","NAM","NCL","NER","NFK","NGA","NIC","NIU","NLD","NOR","NPL","NRU","NZL","OMN","PAK","PAN","PCN","PER","PHL","PLW","PNG","POL","PRI","PRK","PRT","PRY","PSE","PYF","QAT","REU","ROU","RUS","RWA","SAU","SDN","SEN","SGP","SGS","SHN","SJM","SLB","SLE","SLV","SMR","SOM","SPM","SRB","SSD","STP","SUR","SVK","SVN","SWE","SWZ","SXM","SYC","SYR","TCA","TCD","TGO","THA","TJK","TKL","TKM","TLS","TON","TTO","TUN","TUR","TUV","TWN","TZA","UGA","UKR","UMI","URY","USA","UZB","VAT","VCT","VEN","VGB","VIR","VNM","VUT","WLF","WSM","XKX","YEM","ZAF","ZMB","ZWE"],"nullable":true}},"required":["line1","city","state","zip","country"]},"OrgDeployment":{"type":"object","properties":{"chainId":{"type":"number","description":"ID of the blockchain network where the contract is deployed","example":1},"contractAddress":{"type":"string","description":"Smart contract address on the specified chain","example":"0x1234567890123456789012345678901234567890"},"usdcBalance":{"type":"object","description":"Current USDC balance of the org contract in the smallest currency unit (1000000 = 1 USD)","example":"2000000","nullable":true},"isDeployed":{"type":"boolean","description":"Whether the org contract is deployed on the specified chain (true) or not (false). Even if a contract is not deployed, its address can already be used to receive direct transfer donations.","example":true}},"required":["chainId","contractAddress","usdcBalance","isDeployed"]},"OrgSearchListingDto":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier of the organization in Endaoment database","example":"123e4567-e89b-12d3-a456-426614174000"},"ein":{"type":"string","description":"IRS Employer Identification Number (EIN) without hyphen. Value will not be present for international orgs","example":"530196605","nullable":true},"name":{"type":"string","description":"Name of the organization","example":"American Red Cross"},"description":{"type":"string","description":"Description or mission statement of the organization","example":"Providing disaster relief and emergency assistance","nullable":true},"address":{"description":"Physical address of the organization","allOf":[{"$ref":"#/components/schemas/OrgAddress"}]},"logo":{"type":"string","description":"URL to the organization logo","example":"https://example.com/logo.png","nullable":true},"nteeCode":{"type":"string","description":"NTEE (National Taxonomy of Exempt Entities) code","example":"M20","nullable":true},"nteeDescription":{"type":"string","description":"Human-readable description of the NTEE code","example":"Disaster Preparedness and Relief Services","nullable":true},"featuredIndex":{"type":"number","description":"Priority index for featured organizations (higher = shows first)","example":1},"isCompliant":{"type":"boolean","description":"Whether the organization is compliant with Endaoment requirements","example":true},"lifetimeContributionsUsdc":{"type":"string","description":"Total lifetime contributions made to this organization in USDC, in the smallest currency unit (1000000 = 1 USD)","example":"1000000000"},"donationsReceived":{"type":"number","description":"Total number of donations received by this organization","example":42},"grantsReceived":{"type":"number","description":"Total number of grants received by this organization","example":15},"deployments":{"description":"List of smart contract deployments across different chains. Includes all supported chains, even if the org is not deployed on them.","type":"array","items":{"$ref":"#/components/schemas/OrgDeployment"}},"claimedDateUtc":{"type":"object","description":"UTC timestamp when the organization was claimed","format":"date-time","example":"2024-03-20T10:30:00Z","nullable":true},"claimedType":{"type":"string","description":"Type of organization claim","enum":["WalletClaim","WireClaim"],"example":"DIRECT","nullable":true},"claimed":{"type":"boolean","description":"Whether the organization has been claimed","example":true},"website":{"type":"string","description":"Website URL of the organization","example":"https://www.redcross.org","nullable":true}},"required":["id","ein","name","description","address","logo","nteeCode","nteeDescription","featuredIndex","isCompliant","lifetimeContributionsUsdc","donationsReceived","grantsReceived","deployments","claimedDateUtc","claimedType","claimed","website"]},"OrgNteeCountDto":{"type":"object","properties":{"nteeCode":{"type":"string","description":"The NTEE major code the count is for","example":"A"},"orgCount":{"type":"number","description":"Number of organizations matching this NTEE code under public search visibility","example":123456}},"required":["nteeCode","orgCount"]},"OrgNteeCountsResponseDto":{"type":"object","properties":{"counts":{"description":"One entry per requested NTEE code","type":"array","items":{"$ref":"#/components/schemas/OrgNteeCountDto"}},"asOf":{"type":"string","description":"ISO-8601 timestamp the counts were computed at","example":"2026-07-20T00:00:00.000Z"}},"required":["counts","asOf"]},"FinancialSummary":{"type":"object","properties":{"totalLiabilities":{"type":"object","description":"Total liabilities in USD cents. Deprecated and may be null.","example":null,"nullable":true,"deprecated":true},"totalAssets":{"type":"object","description":"Total assets in USD cents. Deprecated and may be null.","example":null,"nullable":true,"deprecated":true},"contributionsAll":{"type":"object","description":"Revenue from contributions in USD cents. Deprecated and may be null.","example":null,"nullable":true,"deprecated":true},"totalExpenses":{"type":"object","description":"Total expenses in USD cents. Deprecated and may be null.","example":null,"nullable":true,"deprecated":true},"totalRevenue":{"type":"object","description":"Total revenue in USD cents. Deprecated and may be null.","example":null,"nullable":true,"deprecated":true},"netIncome":{"type":"object","description":"Net income in USD cents. Deprecated and may be null.","example":null,"nullable":true,"deprecated":true}},"required":["totalLiabilities","totalAssets","contributionsAll","totalExpenses","totalRevenue","netIncome"]},"FinancialExpenses":{"type":"object","properties":{}},"Financials":{"type":"object","properties":{"form990FiscalYear":{"type":"object","description":"Fiscal year of the latest Form 990. Deprecated and may be null.","example":null,"nullable":true,"deprecated":true},"summary":{"description":"Deprecated financial summary. Monetary values are expressed in USD cents.","deprecated":true,"allOf":[{"$ref":"#/components/schemas/FinancialSummary"}]},"expenses":{"description":"Deprecated expense summary. Monetary values are expressed in USD cents.","deprecated":true,"allOf":[{"$ref":"#/components/schemas/FinancialExpenses"}]}},"required":["form990FiscalYear","summary","expenses"]},"Socials":{"type":"object","properties":{"twitter":{"type":"object","description":"Twitter/X profile URL for the organization.","example":null,"nullable":true},"facebook":{"type":"object","description":"Facebook profile URL for the organization.","example":null,"nullable":true},"linkedin":{"type":"object","description":"LinkedIn profile URL for the organization.","example":null,"nullable":true},"instagram":{"type":"object","description":"Instagram profile URL for the organization.","example":null,"nullable":true}},"required":["twitter","facebook","linkedin","instagram"]},"OrgDetailsDto":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier of the organization in Endaoment database.","format":"uuid","example":"123e4567-e89b-12d3-a456-426614174000","nullable":true},"ein":{"type":"object","description":"IRS Employer Identification Number (EIN) without hyphen","example":"530196605","nullable":true},"name":{"type":"string","description":"Name of the organization","example":"American Red Cross"},"description":{"type":"object","description":"Description or mission statement of the organization","example":"Providing disaster relief and emergency assistance","nullable":true},"address":{"description":"Physical address of the organization","allOf":[{"$ref":"#/components/schemas/OrgAddress"}]},"website":{"type":"object","description":"Website URL of the organization","example":"https://www.redcross.org","nullable":true},"logo":{"type":"string","description":"URL to the organization logo","example":"https://example.com/logo.png"},"nteeCode":{"type":"string","description":"NTEE (National Taxonomy of Exempt Entities) Code","example":"E91","externalDocs":{"url":"https://nccs.urban.org/publication/irs-activity-codes","description":"Full NTEE Code List"}},"nteeDescription":{"type":"string","description":"Human-readable description of the NTEE code","example":"Nursing, Convalescent (Geriatric and Nursing)"},"featuredIndex":{"type":"number","description":"Priority index for featured organizations (higher = shows first)","example":100,"minimum":0},"claimedDateUtc":{"type":"object","description":"UTC timestamp when the organization was claimed","format":"date-time","example":"2024-03-20T10:30:00Z","nullable":true},"claimedType":{"type":"string","description":"Type of organization claim","enum":["WalletClaim","WireClaim"],"example":"DIRECT","nullable":true},"claimed":{"type":"boolean","description":"Whether the organization has been claimed","example":true},"contractAddress":{"type":"object","description":"Smart contract address on the default chain (deprecated)","example":"0x1234567890123456789012345678901234567890","nullable":true,"deprecated":true},"deployments":{"description":"List of smart contract deployments across different chains. Includes only deployed orgs.","type":"array","items":{"$ref":"#/components/schemas/OrgDeployment"}},"compliant":{"type":"boolean","description":"Deprecated compliance flag. Use isCompliant instead.","example":true,"deprecated":true},"isCompliant":{"type":"boolean","description":"Whether the organization is currently compliant.","example":true},"nonComplianceReasons":{"description":"Reasons why the organization is non-compliant, when applicable.","example":null,"nullable":true,"type":"array","items":{"type":"string"}},"lifetimeContributionsUsdc":{"type":"string","description":"Lifetime contributions to this organization in USDC micro-units (1000000 = 1 USD).","example":"1000000"},"usdcBalance":{"type":"string","description":"Current USDC balance of the organization contract in micro-units (1000000 = 1 USD).","example":"2000000"},"financials":{"description":"Financial information for the organization.","allOf":[{"$ref":"#/components/schemas/Financials"}]},"socials":{"description":"Social links for the organization.","allOf":[{"$ref":"#/components/schemas/Socials"}]},"staffNotes":{"type":"object","description":"Staff notes for this organization. Currently null for public organizations.","example":null,"nullable":true},"paypalId":{"type":"object","description":"PayPal ID of the organization, when available.","example":null,"nullable":true},"partnerId":{"type":"string","description":"Partner that onboarded the organization, when applicable.","enum":["tgb","gg"],"example":null,"nullable":true},"donationsReceived":{"type":"number","description":"Number of inbound donations made to the organization.","example":42},"grantsReceived":{"type":"number","description":"Number of grants made to this organization.","example":7}},"required":["id","ein","name","description","address","website","logo","nteeCode","nteeDescription","featuredIndex","claimedDateUtc","claimedType","claimed","contractAddress","deployments","compliant","isCompliant","nonComplianceReasons","lifetimeContributionsUsdc","usdcBalance","financials","socials","staffNotes","paypalId","partnerId","donationsReceived","grantsReceived"]},"OrgEinCheckMatchDto":{"type":"object","properties":{"id":{"type":"string","description":"Organization UUID","example":"550e8400-e29b-41d4-a716-446655440000"},"name":{"type":"string","description":"Organization display name","example":"Example Nonprofit"},"location":{"type":"object","description":"City/state or country summary for display","example":"Los Angeles, CA","nullable":true},"totalDonated":{"type":"object","description":"Total donated in USDC microdollars","example":"125000000","nullable":true}},"required":["id","name"]},"OrgEinCheckDto":{"type":"object","properties":{"exists":{"type":"boolean","description":"Whether an organization with the given EIN exists in the Endaoment database","example":true},"org":{"description":"Summary of the matching organization when one exists","allOf":[{"$ref":"#/components/schemas/OrgEinCheckMatchDto"}]}},"required":["exists"]},"SubprojectListingDto":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier of the subproject","format":"uuid","example":"123e4567-e89b-12d3-a456-426614174000"},"sponsorOrgId":{"type":"string","description":"Unique identifier of the sponsoring organization","format":"uuid","example":"123e4567-e89b-12d3-a456-426614174000"},"sponsorOrgEin":{"type":"object","description":"Employer Identification Number (EIN) of the sponsoring organization","example":"123456789","nullable":true},"ein":{"type":"object","description":"IRS Identifier for the subproject (without hyphen)","example":"123456789","nullable":true},"name":{"type":"string","description":"Name of the subproject","example":"Education Initiative"},"description":{"type":"object","description":"Detailed description of the subproject","example":"Supporting educational programs in underserved communities","nullable":true},"website":{"type":"object","description":"Website URL of the subproject","example":"https://example.org/initiative","nullable":true},"logo":{"type":"string","description":"URL of the subproject logo image","example":"https://example.org/images/logo.png"},"nteeCode":{"type":"string","description":"NTEE (National Taxonomy of Exempt Entities) Code","example":"E91","externalDocs":{"url":"https://nccs.urban.org/publication/irs-activity-codes","description":"Full NTEE Code List"}},"nteeDescription":{"type":"string","description":"Full text description of the NTEE code","example":"Nursing, Convalescent (Geriatric and Nursing)"},"featuredIndex":{"type":"number","description":"Display order index (higher values appear first)","example":100},"lifetimeContributionsUsdc":{"type":"string","description":"Total lifetime contributions to this subproject in USDC, in the smallest currency unit (1000000 = 1 USD)","example":"1000000"}},"required":["id","sponsorOrgId","sponsorOrgEin","ein","name","description","website","logo","nteeCode","nteeDescription","featuredIndex","lifetimeContributionsUsdc"]},"EligibleDistributionSourceDto":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier of the impact pool fund.","format":"uuid","example":"123e4567-e89b-12d3-a456-426614174000"},"name":{"type":"string","description":"Name of the impact pool fund.","example":"Community Impact Pool"}},"required":["id","name"]},"EligibleDistributionsDto":{"type":"object","properties":{"eligibleForAmount":{"type":"string","description":"Amount of USDC the organization is eligible to receive, in micro-units (1000000 = 1 USD).","example":"1000000"},"distributionTimestampUtc":{"type":"number","description":"Deprecated Unix timestamp in milliseconds for when the distribution starts. Use distributionTimestamp instead.","example":1716239024000,"deprecated":true},"distributionTimestamp":{"type":"number","description":"Unix timestamp in seconds for when the distribution starts.","example":1716239024},"source":{"description":"Impact pool responsible for the distribution.","allOf":[{"$ref":"#/components/schemas/EligibleDistributionSourceDto"}]}},"required":["eligibleForAmount","distributionTimestampUtc","distributionTimestamp","source"]},"EligibleDistributionsResponseDto":{"type":"object","properties":{"distributions":{"description":"Distribution rounds and impact pools the organization is eligible for.","type":"array","items":{"$ref":"#/components/schemas/EligibleDistributionsDto"}}},"required":["distributions"]},"PortfolioCategoryDto":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier of the portfolio category.","format":"uuid","example":"123e4567-e89b-12d3-a456-426614174000"},"name":{"type":"string","description":"Name of the portfolio category.","example":"Cash Management"},"description":{"type":"string","description":"Description of the portfolio category.","example":"Portfolios focused on cash and cash-equivalent strategies."},"colorRgb":{"type":"string","description":"Hex color code used to display the portfolio category.","example":"#627EEA"},"logoUrl":{"type":"string","description":"Logo URL for the portfolio category.","example":"https://example.org/logo.png"}},"required":["id","name","description","colorRgb","logoUrl"]},"PortfolioFinancialsDto":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier of the portfolio.","format":"uuid","example":"123e4567-e89b-12d3-a456-426614174000"},"contractAddress":{"type":"string","description":"On-chain contract address of the portfolio.","example":"0x0000000000000000000000000000000000000000"},"type":{"type":"string","description":"Type of the portfolio.","enum":["AaveUsdc","CompoundUsdc","YearnUsdc","SingleToken","AaveUsdcV3","CompoundUsdcV3","TPlusN","PrivateWealth","IlliquidSellOverTime","IlliquidAsset","IlliquidLockedAdvisorManaged"],"example":"AaveUsdcV3"},"name":{"type":"string","description":"Name of the portfolio.","example":"Aave USDC V3"},"shortName":{"type":"object","description":"Short display name of the portfolio.","example":"Aave V3","nullable":true},"description":{"type":"string","description":"Description of the portfolio.","example":"A USDC yield portfolio."},"shortDescription":{"type":"object","description":"Short description of the portfolio.","example":"USDC yield strategy","nullable":true},"logoUrl":{"type":"string","description":"Logo URL for the portfolio.","example":"https://example.org/portfolio.png"},"cap":{"type":"object","description":"Portfolio cap in USDC micro-units (1000000 = 1 USD), when configured.","example":"1000000000000","nullable":true},"redemptionFeeBps":{"type":"number","description":"Redemption fee in basis points (100 basis points = 1%).","example":0},"depositFeeBps":{"type":"number","description":"Deposit fee in basis points (100 basis points = 1%).","example":0},"providerFeeBps":{"type":"object","description":"Provider fee in basis points (100 basis points = 1%), when configured.","example":null,"nullable":true},"enabled":{"type":"boolean","description":"Whether the portfolio is enabled for listing.","example":true},"underlyingTokenContractAddress":{"type":"object","description":"Target token contract address for single-token portfolios.","example":null,"nullable":true},"aipPerSecondFeesWad":{"type":"object","description":"AIP per-second fee rate in WAD units, when configured.","example":null,"nullable":true},"errorMarginWad":{"type":"object","description":"Tolerable estimation error as a WAD value for redemption asset calculations.","example":null,"nullable":true},"version":{"type":"string","description":"Version of the portfolio implementation.","enum":["V1","V2"],"example":"V2"},"chainId":{"type":"object","description":"EVM chain ID where the portfolio contract is deployed.","example":1},"settlementMinutes":{"type":"object","description":"Minutes the portfolio waits before settling a trade request. Null means instantaneous settlement.","example":null,"nullable":true},"minDeposit":{"type":"object","description":"Minimum USDC deposit in micro-units (1000000 = 1 USD), when configured.","example":null,"nullable":true},"minRedemption":{"type":"object","description":"Minimum USDC redemption in micro-units (1000000 = 1 USD), when configured.","example":null,"nullable":true},"categories":{"description":"Categories associated with the portfolio.","type":"array","items":{"$ref":"#/components/schemas/PortfolioCategoryDto"}},"underlyingStockTicker":{"type":"object","description":"Ticker of the underlying stock for stock-backed portfolios.","example":null,"nullable":true},"isExclusive":{"type":"boolean","description":"Whether the portfolio is exclusive to entities with explicit access.","example":false},"completed":{"type":"object","description":"Whether the portfolio is completed. Used for illiquid portfolios.","example":null,"nullable":true},"totalInvestedInPortfolio":{"type":"string","description":"Sum of all investments made to this portfolio in USDC micro-units (1000000 = 1 USD).","example":"1000000"},"positionCount":{"type":"number","description":"Number of entity positions opened against the portfolio.","example":12},"currentApyBps":{"type":"object","description":"Current APY in basis points, when available.","example":350,"nullable":true},"quarterlyPerformanceBps":{"type":"object","description":"Quarterly performance in basis points, when available.","example":125,"nullable":true},"updatedAt":{"type":"object","description":"ISO timestamp when the portfolio financials were last updated.","example":"2026-05-26T20:00:00.000Z","nullable":true}},"required":["id","contractAddress","type","name","shortName","description","shortDescription","logoUrl","cap","redemptionFeeBps","depositFeeBps","providerFeeBps","enabled","underlyingTokenContractAddress","aipPerSecondFeesWad","errorMarginWad","version","chainId","settlementMinutes","minDeposit","minRedemption","categories","underlyingStockTicker","isExclusive","completed","totalInvestedInPortfolio","positionCount","currentApyBps","quarterlyPerformanceBps","updatedAt"]},"PartnerGrantInboundCustodianTransferDto":{"type":"object","properties":{"amountMicroDollars":{"type":"string","description":"Settled inbound custodian transfer amount in microdollars","example":"125000000000"},"partnerFundingTransferId":{"type":"string","description":"Partner's stable business id for the inbound funding transfer","example":"alt-journal-987654","maxLength":127},"sourcePartnerAccountIdentifier":{"type":"string","description":"Opaque partner correlation identifier for the source DAF. Not a custodial account number.","example":"550e8400-e29b-41d4-a716-446655440000","minLength":8,"maxLength":64},"destinationPartnerAccountIdentifier":{"type":"string","description":"Opaque partner correlation identifier for the destination sundry account. Not a custodial account number.","example":"f4b9d2c8-1e6a-4a3f-b5d7-08c92e6f4a17","minLength":8,"maxLength":64},"settledAtUtc":{"format":"date-time","type":"string","description":"UTC timestamp when the inbound custodian transfer settled on the partner side","example":"2026-05-04T14:32:01.000Z"}},"required":["amountMicroDollars","partnerFundingTransferId","sourcePartnerAccountIdentifier","destinationPartnerAccountIdentifier","settledAtUtc"]},"PartnerGrantInstructionDto":{"type":"object","properties":{"destinationOrgId":{"type":"object","description":"Destination organization id","format":"uuid","nullable":true},"destinationSubprojectId":{"type":"object","description":"Destination subproject id","format":"uuid","nullable":true},"amountMicroDollars":{"type":"string","description":"Grant line amount in microdollars","example":"75000000000"},"specialInstructions":{"type":"object","description":"Optional binding instructions for the receiving organization","maxLength":2000,"nullable":true},"hideMyInfoFromOrg":{"type":"boolean","description":"When true, donor identity is hidden from the destination organization","default":false}},"required":["amountMicroDollars"]},"PartnerGrantSubmissionInputDto":{"type":"object","properties":{"idempotencyKey":{"type":"string","description":"Client-generated idempotency key for transport-level replay","format":"uuid","example":"8fc9cf75-7813-4f2f-95d6-7c9f84f0f6ef"},"originFundId":{"type":"string","description":"Origin fund id for the partner-managed DAF","format":"uuid","example":"2b8108d8-30fc-4c62-9b93-07ee1f8b8455"},"inboundCustodianTransfer":{"$ref":"#/components/schemas/PartnerGrantInboundCustodianTransferDto"},"grants":{"description":"Grant instructions for this submission","minItems":1,"maxItems":50,"type":"array","items":{"$ref":"#/components/schemas/PartnerGrantInstructionDto"}}},"required":["idempotencyKey","originFundId","inboundCustodianTransfer","grants"]},"PartnerGrantInboundCustodianTransferResponseDto":{"type":"object","properties":{"amountMicroDollars":{"type":"string","description":"Inbound transfer amount in microdollars","example":"125000000000"},"status":{"type":"string","description":"Reported settlement status","example":"ReportedSettled"},"partnerFundingTransferId":{"type":"string","description":"Partner's stable business id for the inbound funding transfer"},"sourcePartnerAccountIdentifier":{"type":"string","description":"Reported source partner account identifier"},"destinationPartnerAccountIdentifier":{"type":"string","description":"Reported destination partner account identifier"},"settledAtUtc":{"type":"string","description":"Reported settlement timestamp in ISO-8601 format"}},"required":["amountMicroDollars","status","partnerFundingTransferId","sourcePartnerAccountIdentifier","destinationPartnerAccountIdentifier","settledAtUtc"]},"PartnerGrantSubmissionGrantDto":{"type":"object","properties":{"asyncGrantTransferId":{"type":"string","description":"Created async grant transfer id","format":"uuid"},"destinationOrgId":{"type":"object","description":"Destination organization id","format":"uuid","nullable":true},"destinationSubprojectId":{"type":"object","description":"Destination subproject id","format":"uuid","nullable":true},"amountMicroDollars":{"type":"string","description":"Grant line amount in microdollars","example":"75000000000"},"specialInstructions":{"type":"object","description":"Special instructions","nullable":true},"hideMyInfoFromOrg":{"type":"boolean","description":"Whether donor identity is hidden from the destination organization"},"asyncGrantStatus":{"type":"string","description":"Async grant status","enum":["PendingLiquidation","Liquidated","Cancelled"]}},"required":["asyncGrantTransferId","amountMicroDollars","hideMyInfoFromOrg","asyncGrantStatus"]},"PartnerGrantSubmissionDto":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"partnerId":{"type":"string"},"originFundId":{"type":"string","format":"uuid"},"status":{"type":"string","enum":["Accepted","RedeemQueued","RedeemSubmitted","RedeemRegistered","InsufficientGrantingAccountBalance","GrantingAccountToCircleRequested","GrantingAccountToCircleCompleted","CircleToAmpSubmitted","AmpTransferCompleted","ConsolidatedToFund","Failed","Cancelled"]},"inboundCustodianTransfer":{"$ref":"#/components/schemas/PartnerGrantInboundCustodianTransferResponseDto"},"grants":{"type":"array","items":{"$ref":"#/components/schemas/PartnerGrantSubmissionGrantDto"}}},"required":["id","partnerId","originFundId","status","inboundCustodianTransfer","grants"]},"OrgSimpleListingDto":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier of the organization in Endaoment database","format":"uuid","example":"123e4567-e89b-12d3-a456-426614174000","nullable":true},"ein":{"type":"object","description":"IRS Employer Identification Number (EIN) without hyphen","example":"530196605","nullable":true},"name":{"type":"string","description":"Name of the organization","example":"American Red Cross"},"description":{"type":"object","description":"Description or mission statement of the organization","example":"Providing disaster relief and emergency assistance","nullable":true},"address":{"description":"Physical address of the organization","allOf":[{"$ref":"#/components/schemas/OrgAddress"}]},"website":{"type":"object","description":"Website URL of the organization","example":"https://www.redcross.org","nullable":true},"logo":{"type":"string","description":"URL to the organization logo","example":"https://example.com/logo.png"},"nteeCode":{"type":"string","description":"NTEE (National Taxonomy of Exempt Entities) Code","example":"E91","externalDocs":{"url":"https://nccs.urban.org/publication/irs-activity-codes","description":"Full NTEE Code List"}},"nteeDescription":{"type":"string","description":"Human-readable description of the NTEE code","example":"Nursing, Convalescent (Geriatric and Nursing)"},"featuredIndex":{"type":"number","description":"Priority index for featured organizations (higher = shows first)","example":100,"minimum":0},"claimedDateUtc":{"type":"object","description":"UTC timestamp when the organization was claimed","format":"date-time","example":"2024-03-20T10:30:00Z","nullable":true},"claimedType":{"type":"string","description":"Type of organization claim","enum":["WalletClaim","WireClaim"],"example":"DIRECT","nullable":true},"claimed":{"type":"boolean","description":"Whether the organization has been claimed","example":true},"contractAddress":{"type":"object","description":"Smart contract address on the default chain (deprecated)","example":"0x1234567890123456789012345678901234567890","nullable":true,"deprecated":true},"deployments":{"description":"List of smart contract deployments across different chains. Includes only deployed orgs.","type":"array","items":{"$ref":"#/components/schemas/OrgDeployment"}}},"required":["id","ein","name","description","address","website","logo","nteeCode","nteeDescription","featuredIndex","claimedDateUtc","claimedType","claimed","contractAddress","deployments"]},"GrantTransferDto":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier of the transfer","format":"uuid","example":"123e4567-e89b-12d3-a456-426614174000"},"type":{"type":"string","description":"Type of transfer, always \"grant\" for GrantTransferDto","enum":["GrantTransfer","EntityTransfer"],"example":"grant"},"status":{"type":"string","description":"Status of the transfer (deprecated)","enum":["PendingReview","Approved","Rejected"],"example":"approved","deprecated":true},"transactionHash":{"type":"object","description":"Transaction hash of the donation made to the target entity","example":"0x1234567890abcdef","nullable":true},"netAmount":{"type":"object","description":"Net output amount for the transfer (total - fees) in USDC smallest currency unit (1000000 = 1 USD)","example":"1000000","nullable":true},"fee":{"type":"object","description":"Fee charged on this transfer in USDC smallest currency unit (1000000 = 1 USD)","example":"10000","nullable":true},"createdAtUtc":{"type":"string","description":"UTC timestamp when the transfer was created","format":"date-time","example":"2024-03-20T10:30:00Z"},"requestedAmount":{"type":"object","description":"Requested amount for the transfer in USDC smallest currency unit (1000000 = 1 USD) (only for async transfers)","example":"1000000","nullable":true},"updatedAtUtc":{"type":"string","description":"UTC timestamp when the transfer was last updated","format":"date-time","example":"2024-03-20T10:30:00Z"},"asyncStatus":{"type":"string","description":"Current status of the async transfer request","enum":["PendingLiquidation","Liquidated","Cancelled"],"example":"pending"},"chainId":{"type":"object","description":"Chain ID where the transfer occurred (null for async transfers)","example":1,"nullable":true},"destinationOrg":{"description":"Organization receiving the grant. Null if the grant is for a subproject.","nullable":true,"type":"object","allOf":[{"$ref":"#/components/schemas/OrgSimpleListingDto"}]},"destinationSubproject":{"description":"Subproject receiving the grant. Null if the grant is for an organization.","nullable":true,"type":"object","allOf":[{"$ref":"#/components/schemas/SubprojectListingDto"}]},"recommender":{"type":"object","description":"Name of the person who recommended the grant","example":"John Doe","nullable":true},"purpose":{"type":"object","description":"Purpose of the grant","example":"Supporting educational programs","nullable":true},"specialInstructions":{"type":"object","description":"Special instructions for the use of granted assets","example":"Funds must be used exclusively for the summer education program","nullable":true}},"required":["id","type","status","transactionHash","netAmount","fee","createdAtUtc","requestedAmount","updatedAtUtc","asyncStatus","chainId","destinationOrg","destinationSubproject","recommender","purpose","specialInstructions"]},"InitiateAsyncGrantInputDto":{"type":"object","properties":{"idempotencyKey":{"type":"string","description":"Unique identifier to prevent duplicate grant requests","format":"uuid","example":"123e4567-e89b-12d3-a456-426614174000"},"originFundId":{"type":"string","description":"ID of the fund that is the origin of the grant","format":"uuid","example":"123e4567-e89b-12d3-a456-426614174000"},"destinationOrgId":{"type":"string","description":"ID of the organization that will receive the grant","format":"uuid","example":"123e4567-e89b-12d3-a456-426614174000"},"destinationSubprojectId":{"type":"string","description":"ID of the subproject that will receive the grant. Must be sponsored by the destination organization","format":"uuid","example":"123e4567-e89b-12d3-a456-426614174000"},"requestedAmount":{"type":"string","description":"The amount in USDC to be granted, in the smallest currency unit (1000000 = 1 USD)","example":"1000000","format":"bigint"},"purpose":{"type":"string","description":"Public declaration of the grant purpose","maxLength":511,"example":"Supporting educational programs"},"recommender":{"type":"string","description":"Name of the person recommending the grant","maxLength":255,"example":"John Doe"},"specialInstructions":{"type":"string","description":"Binding instructions for the use of granted assets that the receiving organization must accept","example":"Funds must be used exclusively for the summer education program"},"shareMyEmail":{"type":"boolean","description":"Indicates if the donor agrees to share their email with the receiving organization","default":false},"recommendationIds":{"description":"List of recommendation IDs associated with the grant","example":["123e4567-e89b-12d3-a456-426614174000"],"type":"array","items":{"type":"string","format":"uuid"}}},"required":["idempotencyKey","originFundId","destinationOrgId","requestedAmount","purpose"]},"InitiateAsyncEntityTransferInputDto":{"type":"object","properties":{"idempotencyKey":{"type":"string","description":"Unique identifier to prevent duplicate transfer requests","format":"uuid","example":"123e4567-e89b-12d3-a456-426614174000"},"originFundId":{"type":"string","description":"ID of the fund that is the origin of the transfer. Mutually exclusive with originOrgId.","format":"uuid","example":"123e4567-e89b-12d3-a456-426614174000"},"originOrgId":{"type":"string","description":"ID of the organization that is the origin of the transfer. Mutually exclusive with originFundId.","format":"uuid","example":"123e4567-e89b-12d3-a456-426614174000"},"destinationFundId":{"type":"string","description":"ID of the fund that will receive the transfer. Mutually exclusive with destinationOrgId.","format":"uuid","example":"123e4567-e89b-12d3-a456-426614174000"},"destinationOrgId":{"type":"string","description":"ID of the organization that will receive the transfer. Mutually exclusive with destinationFundId.","format":"uuid","example":"123e4567-e89b-12d3-a456-426614174000"},"chainId":{"type":"object","description":"The chain ID for the transfer. Required when originOrgId is provided. Ignored when originFundId is provided.","example":1},"requestedAmount":{"type":"string","description":"The amount in USDC to be transferred, in the smallest currency unit (1000000 = 1 USD)","example":"1000000","format":"bigint"},"shareMyEmail":{"type":"boolean","description":"Indicates if the initiator agrees to share their email with the receiving entity","default":false}},"required":["idempotencyKey","requestedAmount"]},"EntityTransferDto":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier of the transfer","format":"uuid","example":"123e4567-e89b-12d3-a456-426614174000"},"type":{"type":"string","description":"Type of transfer, always \"entity\" for EntityTransferDto","enum":["GrantTransfer","EntityTransfer"],"example":"entity"},"status":{"type":"string","description":"Status of the transfer (deprecated)","enum":["PendingReview","Approved","Rejected"],"example":"approved","deprecated":true},"transactionHash":{"type":"object","description":"Transaction hash of the donation made to the target entity","example":"0x1234567890abcdef","nullable":true},"netAmount":{"type":"object","description":"Net output amount for the transfer (total - fees) in USDC smallest currency unit (1000000 = 1 USD)","example":"1000000","nullable":true},"fee":{"type":"object","description":"Fee charged on this transfer in USDC smallest currency unit (1000000 = 1 USD)","example":"10000","nullable":true},"createdAtUtc":{"type":"string","description":"UTC timestamp when the transfer was created","format":"date-time","example":"2024-03-20T10:30:00Z"},"requestedAmount":{"type":"object","description":"Requested amount for the transfer in USDC smallest currency unit (1000000 = 1 USD) (only for async transfers)","example":"1000000","nullable":true},"updatedAtUtc":{"type":"string","description":"UTC timestamp when the transfer was last updated","format":"date-time","example":"2024-03-20T10:30:00Z"},"asyncStatus":{"type":"string","description":"Current status of the async transfer request","enum":["PendingLiquidation","Liquidated","Cancelled"],"example":"pending"},"chainId":{"type":"object","description":"Chain ID where the transfer occurred (null for async transfers)","example":1,"nullable":true}},"required":["id","type","status","transactionHash","netAmount","fee","createdAtUtc","requestedAmount","updatedAtUtc","asyncStatus","chainId"]},"FundManager":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier of the fund manager","example":"123e4567-e89b-12d3-a456-426614174000"},"walletAddress":{"type":"string","description":"Ethereum wallet address of the fund manager","example":"0x742d35Cc6634C0532925a3b844Bc454e4438f44e"}},"required":["id","walletAddress"]},"FundAdvisor":{"type":"object","properties":{"firstName":{"type":"string","description":"First name of the fund advisor","example":"John"},"lastName":{"type":"string","description":"Last name of the fund advisor","example":"Doe"}},"required":["firstName","lastName"]},"FundListingDto":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier of the fund","example":"123e4567-e89b-12d3-a456-426614174000"},"name":{"type":"string","description":"Name of the fund","example":"Doe Family Foundation"},"type":{"type":"string","description":"Access type of the fund","enum":["Private","Community","Transparent","ImpactPool"],"example":"Private"},"manager":{"description":"Basic information about the fund manager. The manager has technical capability to interact with the blockchain and perform programmatic functions.","allOf":[{"$ref":"#/components/schemas/FundManager"}]},"chainId":{"type":"object","description":"Chain ID where the fund is deployed","example":1},"deploymentTransactionHash":{"type":"object","description":"Transaction hash of the deployment transaction","example":"0xf89f7da1e5d79dcb1b8863d0926fe41204785b443ce2d1dca4bf50070c492567","nullable":true},"contractAddress":{"type":"object","description":"Contract address of the fund","example":"0x1234567890123456789012345678901234567890","nullable":true},"advisor":{"description":"Fund advisor information. The advisor is tied to a real-world person/entity and acts as the public contact for the fund. This can be the same person as the manager or someone the manager acts on behalf of.","allOf":[{"$ref":"#/components/schemas/FundAdvisor"}]},"featuredIndex":{"type":"number","description":"Index determining the fund's position in featured listings. Lower numbers appear first","example":1},"usdcBalance":{"type":"string","description":"Current synced USDC balance in the smallest currency unit (1000000 = 1 USD). This does not account for asynchronous grants, asynchronous entity transfers, or asynchronous investments that may still be processing.","example":"20500000"},"availableBalance":{"type":"string","description":"Amount available to grant or transfer in the smallest currency unit (1000000 = 1 USD), adjusted for invested value, in-transit portfolio operations, and pending asynchronous transfers.","example":"21000000"},"lastBalanceSyncUtc":{"type":"object","description":"UTC timestamp of the last balance sync","example":"2024-03-14T12:00:00Z","nullable":true},"description":{"type":"string","description":"Detailed description of the fund","example":"A family foundation dedicated to supporting educational initiatives"},"shortDescription":{"type":"object","description":"Brief description of the fund","example":"Supporting education","nullable":true},"vanityUrl":{"type":"object","description":"Custom URL identifier for the fund","example":"doe-family-foundation","nullable":true},"paypalId":{"type":"object","description":"PayPal merchant ID associated with the fund","nullable":true,"example":"123e4567-e89b-12d3-a456-426614174000"},"logo":{"type":"object","description":"URL of the fund's logo image","example":"https://example.com/logo.png","nullable":true},"createdAtUtc":{"type":"string","description":"UTC timestamp of fund creation","example":"2024-01-01T00:00:00Z"},"updatedAtUtc":{"type":"string","description":"UTC timestamp of last fund update","example":"2024-03-14T12:00:00Z"},"lifetimeDonationsUsdc":{"type":"string","description":"Total lifetime donations received in USDC, in the smallest currency unit (1000000 = 1 USD)","example":"1000000000"},"staffNotes":{"type":"string","description":"Internal notes about the fund (staff only)","nullable":true},"category":{"type":"object","description":"Category of the fund (e.g., Education, Health)","example":"Education","nullable":true},"inboundFeeBps":{"type":"number","description":"The fee charged for inbound operations in basis points (1 basis point = 0.01%)","example":25},"outboundFeeBps":{"type":"number","description":"The fee charged for outbound operations in basis points (1 basis point = 0.01%)","example":50},"customFeeDetail":{"type":"object","description":"Details about why this fund has custom fees. Only set if either inbound or outbound fee is custom","example":"Special Community Fund Agreement","nullable":true},"grantsGiven":{"type":"number","description":"Total number of grants given by this fund","example":10},"inTransitBuyUsdcAmount":{"type":"string","description":"Amount of USDC pending purchase in the smallest currency unit (1000000 = 1 USD)","example":"5000000"},"inTransitSellUsdcAmount":{"type":"string","description":"Amount of USDC pending sale in the smallest currency unit (1000000 = 1 USD)","example":"3000000"},"investedUsdc":{"type":"string","description":"Total amount invested in USDC, in the smallest currency unit (1000000 = 1 USD)","example":"50000000"},"totalGrantedUsdc":{"type":"string","description":"Total amount granted in USDC, in the smallest currency unit (1000000 = 1 USD)","example":"25000000"},"processingTransfersTotalUsdc":{"type":"string","description":"Total amount in processing transfers in USDC, in the smallest currency unit (1000000 = 1 USD)","example":"1000000"},"illiquidBalance":{"type":"string","description":"Total balance in illiquid portfolios in USDC, in the smallest currency unit (1000000 = 1 USD)","example":"10000000"}},"required":["id","name","type","manager","chainId","advisor","featuredIndex","usdcBalance","availableBalance","description","createdAtUtc","updatedAtUtc","lifetimeDonationsUsdc","inboundFeeBps","outboundFeeBps","grantsGiven","inTransitBuyUsdcAmount","inTransitSellUsdcAmount","investedUsdc","totalGrantedUsdc","processingTransfersTotalUsdc","illiquidBalance"]},"ImpactPoolDetailsDto":{"type":"object","properties":{"eligibleEntities":{"type":"string","description":"Entities that are eligible for Impact Pool distributions","enum":["Organizations"],"example":"Organizations"},"algorithmType":{"type":"string","description":"Algorithm used to calculate distributions","enum":["QuadraticFunding"],"example":"QuadraticFunding"},"distributionSchedule":{"type":"string","description":"Human-readable distribution schedule","example":"Quarterly"},"distributionPercentage":{"type":"number","description":"Percentage of fund NAV to be distributed (0.25 = 25%, 0.125 = 12.5%)","example":0.25,"minimum":0,"maximum":1},"eligibleVotes":{"type":"string","description":"Types of actions that count as votes for distribution","enum":["GrantsAndDonations"],"example":"GrantsAndDonations"},"voteWeight":{"type":"string","description":"Method for calculating vote weights","enum":["UsdcValue"],"example":"UsdcValue"}},"required":["eligibleEntities","algorithmType","distributionSchedule","distributionPercentage","eligibleVotes","voteWeight"]},"ExpectedDeploymentInfoDto":{"type":"object","properties":{"expectedManagerAddress":{"type":"string","description":"Ethereum address of the fund manager used to compute the on-chain address","example":"0x742d35Cc6634C0532925a3b844Bc454e4438f44e"},"expectedSalt":{"type":"string","description":"Encoded bytes32 salt used to compute the on-chain address","example":"0x0000000000000000000000000000000000000000000000000000000000000123"},"expectedComputedAddress":{"type":"string","description":"Expected on-chain address computed using the manager address and salt. Must be verified before deployment","example":"0x1234567890123456789012345678901234567890"},"expectedChainId":{"type":"object","description":"Chain ID where the fund should be deployed","example":1}},"required":["expectedManagerAddress","expectedSalt","expectedComputedAddress","expectedChainId"]},"FundDetailsDto":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier of the fund","example":"123e4567-e89b-12d3-a456-426614174000"},"name":{"type":"string","description":"Name of the fund","example":"Doe Family Foundation"},"type":{"type":"string","description":"Access type of the fund","enum":["Private","Community","Transparent","ImpactPool"],"example":"Private"},"manager":{"description":"Basic information about the fund manager. The manager has technical capability to interact with the blockchain and perform programmatic functions.","allOf":[{"$ref":"#/components/schemas/FundManager"}]},"chainId":{"type":"object","description":"Chain ID where the fund is deployed","example":1},"deploymentTransactionHash":{"type":"object","description":"Transaction hash of the deployment transaction","example":"0xf89f7da1e5d79dcb1b8863d0926fe41204785b443ce2d1dca4bf50070c492567","nullable":true},"contractAddress":{"type":"object","description":"Contract address of the fund","example":"0x1234567890123456789012345678901234567890","nullable":true},"advisor":{"description":"Fund advisor information. The advisor is tied to a real-world person/entity and acts as the public contact for the fund. This can be the same person as the manager or someone the manager acts on behalf of.","allOf":[{"$ref":"#/components/schemas/FundAdvisor"}]},"featuredIndex":{"type":"number","description":"Index determining the fund's position in featured listings. Lower numbers appear first","example":1},"usdcBalance":{"type":"string","description":"Current synced USDC balance in the smallest currency unit (1000000 = 1 USD). This does not account for asynchronous grants, asynchronous entity transfers, or asynchronous investments that may still be processing.","example":"20500000"},"availableBalance":{"type":"string","description":"Amount available to grant or transfer in the smallest currency unit (1000000 = 1 USD), adjusted for invested value, in-transit portfolio operations, and pending asynchronous transfers.","example":"21000000"},"lastBalanceSyncUtc":{"type":"object","description":"UTC timestamp of the last balance sync","example":"2024-03-14T12:00:00Z","nullable":true},"description":{"type":"string","description":"Detailed description of the fund","example":"A family foundation dedicated to supporting educational initiatives"},"shortDescription":{"type":"object","description":"Brief description of the fund","example":"Supporting education","nullable":true},"vanityUrl":{"type":"object","description":"Custom URL identifier for the fund","example":"doe-family-foundation","nullable":true},"paypalId":{"type":"object","description":"PayPal merchant ID associated with the fund","nullable":true,"example":"123e4567-e89b-12d3-a456-426614174000"},"logo":{"type":"object","description":"URL of the fund's logo image","example":"https://example.com/logo.png","nullable":true},"createdAtUtc":{"type":"string","description":"UTC timestamp of fund creation","example":"2024-01-01T00:00:00Z"},"updatedAtUtc":{"type":"string","description":"UTC timestamp of last fund update","example":"2024-03-14T12:00:00Z"},"lifetimeDonationsUsdc":{"type":"string","description":"Total lifetime donations received in USDC, in the smallest currency unit (1000000 = 1 USD)","example":"1000000000"},"staffNotes":{"type":"string","description":"Internal notes about the fund (staff only)","nullable":true},"category":{"type":"object","description":"Category of the fund (e.g., Education, Health)","example":"Education","nullable":true},"inboundFeeBps":{"type":"number","description":"The fee charged for inbound operations in basis points (1 basis point = 0.01%)","example":25},"outboundFeeBps":{"type":"number","description":"The fee charged for outbound operations in basis points (1 basis point = 0.01%)","example":50},"customFeeDetail":{"type":"object","description":"Details about why this fund has custom fees. Only set if either inbound or outbound fee is custom","example":"Special Community Fund Agreement","nullable":true},"grantsGiven":{"type":"number","description":"Total number of grants given by this fund","example":10},"inTransitBuyUsdcAmount":{"type":"string","description":"Amount of USDC pending purchase in the smallest currency unit (1000000 = 1 USD)","example":"5000000"},"inTransitSellUsdcAmount":{"type":"string","description":"Amount of USDC pending sale in the smallest currency unit (1000000 = 1 USD)","example":"3000000"},"investedUsdc":{"type":"string","description":"Total amount invested in USDC, in the smallest currency unit (1000000 = 1 USD)","example":"50000000"},"totalGrantedUsdc":{"type":"string","description":"Total amount granted in USDC, in the smallest currency unit (1000000 = 1 USD)","example":"25000000"},"processingTransfersTotalUsdc":{"type":"string","description":"Total amount in processing transfers in USDC, in the smallest currency unit (1000000 = 1 USD)","example":"1000000"},"illiquidBalance":{"type":"string","description":"Total balance in illiquid portfolios in USDC, in the smallest currency unit (1000000 = 1 USD)","example":"10000000"},"poolDetails":{"description":"Impact Pool specific details. Only available for Impact Pool type funds","nullable":true,"type":"object","allOf":[{"$ref":"#/components/schemas/ImpactPoolDetailsDto"}]},"expectedDeploymentInfo":{"description":"Information needed for on-chain deployment. Only available for funds not yet deployed","nullable":true,"type":"object","allOf":[{"$ref":"#/components/schemas/ExpectedDeploymentInfoDto"}]}},"required":["id","name","type","manager","chainId","advisor","featuredIndex","usdcBalance","availableBalance","description","createdAtUtc","updatedAtUtc","lifetimeDonationsUsdc","inboundFeeBps","outboundFeeBps","grantsGiven","inTransitBuyUsdcAmount","inTransitSellUsdcAmount","investedUsdc","totalGrantedUsdc","processingTransfersTotalUsdc","illiquidBalance","poolDetails","expectedDeploymentInfo"]},"CollaboratorListingDto":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier of the collaboration relationship","example":"123e4567-e89b-12d3-a456-426614174000"},"collaboratorUserId":{"type":"string","description":"Unique identifier of the collaborator","example":"123e4567-e89b-12d3-a456-426614174000"},"fundId":{"type":"string","description":"Unique identifier of the fund","example":"123e4567-e89b-12d3-a456-426614174000"},"createdAtUtc":{"type":"string","description":"UTC timestamp when this collaborator relationship was created","example":"2026-02-11T14:32:10.123Z","format":"date-time"},"email":{"type":"string","description":"Email address of the collaborator","example":"john.doe@example.com"},"firstName":{"type":"string","description":"First name of the collaborator","example":"John"},"lastName":{"type":"string","description":"Last name of the collaborator","example":"Doe"}},"required":["id","collaboratorUserId","fundId","createdAtUtc","email","firstName","lastName"]},"PartnerCreateFundInputDto":{"type":"object","properties":{"name":{"type":"string","description":"Name of the fund","maxLength":255,"example":"Lovelace Family DAF"},"description":{"type":"string","description":"Description of the fund. Defaults to the partner DAF name when omitted.","example":"A family DAF managed through a partner integration"},"type":{"type":"string","description":"Type of the fund being created.","enum":["Private","Transparent"],"example":"Private"},"partnerUserIdentifier":{"type":"string","description":"Opaque partner-generated identifier for the acting user. Used only to resolve or corroborate the user; it is not stored on the fund or returned in the response.","example":"c3f8b2e4-9d1a-4f6b-8e2c-7a5d90c41b3f","minLength":8,"maxLength":64,"pattern":"^[\\x20-\\x7E]{8,64}$"},"partnerAccountIdentifier":{"type":"string","description":"Opaque partner-generated identifier for this fund, used as the partner-scoped idempotency key. Must be 8-64 printable ASCII characters; leading/trailing whitespace is trimmed before validation.","example":"a7e21d94-5c3f-4b8a-9f60-2e4d8c1b7a53","minLength":8,"maxLength":64,"pattern":"^[\\x20-\\x7E]{8,64}$"}},"required":["name","partnerAccountIdentifier"]},"FundAdvisorDto":{"type":"object","properties":{"firstName":{"type":"string","description":"First name of the fund advisor","example":"John"},"lastName":{"type":"string","description":"Last name of the fund advisor","example":"Doe"},"email":{"type":"string","description":"Email address of the fund advisor","example":"john.doe@example.com"},"address":{"description":"Physical address of the fund advisor","allOf":[{"$ref":"#/components/schemas/AddressInputDto"}]}},"required":["firstName","lastName","email","address"]},"FundInputDto":{"type":"object","properties":{"name":{"type":"string","description":"Name of the fund","maxLength":255,"example":"Doe Family Foundation"},"advisor":{"description":"Fund advisor information","allOf":[{"$ref":"#/components/schemas/FundAdvisorDto"}]},"description":{"type":"string","description":"Description of the fund","example":"A family foundation dedicated to supporting educational initiatives"},"type":{"type":"string","description":"\n    Type of the fund being created. Available options:\n    - Private: The fund is private and only accessible by the manager\n    - Transparent: A fund that anyone can see information about but shouldn't interact with, besides the manager.","enum":["Private","Transparent"],"example":"Private"}},"required":["name","advisor","description"]},"ProcessSingleFundDeploymentInputDto":{"type":"object","properties":{"deploymentTransactionHash":{"type":"object","description":"\n      Transaction hash of the fund contract deployment:\n      - If provided, the fund will be created using the information from the deployment transaction provided.\n      - If not provided, creates the fund and delegates the blockchain logic to Endaoment.\n      - Must be a valid Ethereum transaction hash matching pattern: 0x followed by 64 hexadecimal characters (0-9, a-f)","example":"0xf89f7da1e5d79dcb1b8863d0926fe41204785b443ce2d1dca4bf50070c492567","pattern":"^0x[0-9a-f]{64}$"},"fundInput":{"description":"Details of the fund to be created","allOf":[{"$ref":"#/components/schemas/FundInputDto"}]},"referralSource":{"type":"string","description":"Referral source informed by the user for the fund creation","example":"partner_website"},"fundSalt":{"type":"object","description":"Random Bytes32 Hex Value used as an idempotency key for fund creation. If not provided, backend will generate one. **Note: Off-chain creation requests without salt will not have idempotency guarantees on retries.**","example":"0x7189b9ff31064f2bbc98ad4e92e5562c00000000000000000000000000000000","minLength":66,"maxLength":66},"chainId":{"type":"number","description":"Chain ID to process the fund deployment.\n\n    - If not provided, the API will process the fund deployment on the default chain.\n    - If provided, must be a valid Ethereum chain ID.\n    - Must be provided if a transaction hash is provided so the backend can fetch the correct deployment from the selected blockchain.","example":1}},"required":["fundInput"]},"RequiredAddressUpdateInputDto":{"type":"object","properties":{"line1":{"type":"string","description":"First line of the address","example":"123 Main Street","maxLength":255},"line2":{"type":"object","description":"Second line of the address (optional)","example":"Suite 100","maxLength":255,"nullable":true},"city":{"type":"string","description":"City name","example":"San Francisco","maxLength":255},"state":{"type":"object","description":"State/Province/Region. Required if country is USA","example":"CA","maxLength":255,"nullable":true},"zip":{"type":"string","description":"Postal/ZIP code. Required if country is USA","example":"94105","maxLength":255,"nullable":true},"country":{"type":"string","description":"Three-letter ISO country code","example":"USA","enum":["ABW","AFG","AGO","AIA","ALA","ALB","AND","ARE","ARG","ARM","ASM","ATA","ATF","ATG","AUS","AUT","AZE","BDI","BEL","BEN","BES","BFA","BGD","BGR","BHR","BHS","BIH","BLM","BLR","BLZ","BMU","BOL","BRA","BRB","BRN","BTN","BVT","BWA","CAF","CAN","CCK","CHE","CHL","CHN","CIV","CMR","COD","COG","COK","COL","COM","CPV","CRI","CUB","CUW","CXR","CYM","CYP","CZE","DEU","DJI","DMA","DNK","DOM","DZA","ECU","EGY","ERI","ESH","ESP","EST","ETH","FIN","FJI","FLK","FRA","FRO","FSM","GAB","GBR","GEO","GGY","GHA","GIB","GIN","GLP","GMB","GNB","GNQ","GRC","GRD","GRL","GTM","GUF","GUM","GUY","HKG","HMD","HND","HRV","HTI","HUN","IDN","IMN","IND","IOT","IRL","IRN","IRQ","ISL","ISR","ITA","JAM","JEY","JOR","JPN","KAZ","KEN","KGZ","KHM","KIR","KNA","KOR","KWT","LAO","LBN","LBR","LBY","LCA","LIE","LKA","LSO","LTU","LUX","LVA","MAC","MAF","MAR","MCO","MDA","MDG","MDV","MEX","MHL","MKD","MLI","MLT","MMR","MNE","MNG","MNP","MOZ","MRT","MSR","MTQ","MUS","MWI","MYS","MYT","NAM","NCL","NER","NFK","NGA","NIC","NIU","NLD","NOR","NPL","NRU","NZL","OMN","PAK","PAN","PCN","PER","PHL","PLW","PNG","POL","PRI","PRK","PRT","PRY","PSE","PYF","QAT","REU","ROU","RUS","RWA","SAU","SDN","SEN","SGP","SGS","SHN","SJM","SLB","SLE","SLV","SMR","SOM","SPM","SRB","SSD","STP","SUR","SVK","SVN","SWE","SWZ","SXM","SYC","SYR","TCA","TCD","TGO","THA","TJK","TKL","TKM","TLS","TON","TTO","TUN","TUR","TUV","TWN","TZA","UGA","UKR","UMI","URY","USA","UZB","VAT","VCT","VEN","VGB","VIR","VNM","VUT","WLF","WSM","XKX","YEM","ZAF","ZMB","ZWE"]}}},"AdvisorDto":{"type":"object","properties":{"firstName":{"type":"string","description":"First name of the fund advisor","maxLength":127},"lastName":{"type":"string","description":"Last name of the fund advisor","maxLength":127},"email":{"type":"string","description":"Email address of the fund advisor","maxLength":127,"format":"email"},"address":{"description":"Physical address of the fund advisor","allOf":[{"$ref":"#/components/schemas/RequiredAddressUpdateInputDto"}]}}},"NullableAddressUpdateInputDto":{"type":"object","properties":{"line1":{"type":"object","description":"First line of the address","example":"123 Main Street","maxLength":255,"nullable":true},"line2":{"type":"object","description":"Second line of the address","example":"Suite 100","maxLength":255,"nullable":true},"city":{"type":"object","description":"City name","example":"San Francisco","maxLength":255,"nullable":true},"state":{"type":"object","description":"State/Province/Region","example":"CA","maxLength":255,"nullable":true},"country":{"type":"string","description":"Three-letter ISO country code","example":"USA","enum":["ABW","AFG","AGO","AIA","ALA","ALB","AND","ARE","ARG","ARM","ASM","ATA","ATF","ATG","AUS","AUT","AZE","BDI","BEL","BEN","BES","BFA","BGD","BGR","BHR","BHS","BIH","BLM","BLR","BLZ","BMU","BOL","BRA","BRB","BRN","BTN","BVT","BWA","CAF","CAN","CCK","CHE","CHL","CHN","CIV","CMR","COD","COG","COK","COL","COM","CPV","CRI","CUB","CUW","CXR","CYM","CYP","CZE","DEU","DJI","DMA","DNK","DOM","DZA","ECU","EGY","ERI","ESH","ESP","EST","ETH","FIN","FJI","FLK","FRA","FRO","FSM","GAB","GBR","GEO","GGY","GHA","GIB","GIN","GLP","GMB","GNB","GNQ","GRC","GRD","GRL","GTM","GUF","GUM","GUY","HKG","HMD","HND","HRV","HTI","HUN","IDN","IMN","IND","IOT","IRL","IRN","IRQ","ISL","ISR","ITA","JAM","JEY","JOR","JPN","KAZ","KEN","KGZ","KHM","KIR","KNA","KOR","KWT","LAO","LBN","LBR","LBY","LCA","LIE","LKA","LSO","LTU","LUX","LVA","MAC","MAF","MAR","MCO","MDA","MDG","MDV","MEX","MHL","MKD","MLI","MLT","MMR","MNE","MNG","MNP","MOZ","MRT","MSR","MTQ","MUS","MWI","MYS","MYT","NAM","NCL","NER","NFK","NGA","NIC","NIU","NLD","NOR","NPL","NRU","NZL","OMN","PAK","PAN","PCN","PER","PHL","PLW","PNG","POL","PRI","PRK","PRT","PRY","PSE","PYF","QAT","REU","ROU","RUS","RWA","SAU","SDN","SEN","SGP","SGS","SHN","SJM","SLB","SLE","SLV","SMR","SOM","SPM","SRB","SSD","STP","SUR","SVK","SVN","SWE","SWZ","SXM","SYC","SYR","TCA","TCD","TGO","THA","TJK","TKL","TKM","TLS","TON","TTO","TUN","TUR","TUV","TWN","TZA","UGA","UKR","UMI","URY","USA","UZB","VAT","VCT","VEN","VGB","VIR","VNM","VUT","WLF","WSM","XKX","YEM","ZAF","ZMB","ZWE"],"nullable":true},"zip":{"type":"string","description":"Postal/ZIP code","example":"94105","maxLength":255,"nullable":true}}},"NullableIdentityUpdateInputDto":{"type":"object","properties":{"email":{"type":"object","description":"Email address","example":"john.doe@example.com","maxLength":127,"nullable":true},"firstName":{"type":"object","description":"First name","example":"John","maxLength":127,"nullable":true},"lastName":{"type":"object","description":"Last name","example":"Doe","maxLength":127,"nullable":true},"address":{"description":"Physical address information","nullable":true,"type":"object","allOf":[{"$ref":"#/components/schemas/NullableAddressUpdateInputDto"}]}}},"UpdateFundInputDto":{"type":"object","properties":{"name":{"type":"string","description":"Name of the fund","example":"Education Support Fund"},"description":{"type":"string","description":"Detailed description of the fund","example":"This fund supports educational initiatives..."},"type":{"type":"string","description":"Type of the fund","enum":["Private","Community","Transparent","ImpactPool"],"example":"Community"},"logoUrl":{"type":"object","description":"URL to the fund's logo image","example":"https://example.com/logo.png"},"advisor":{"description":"Fund advisor information","allOf":[{"$ref":"#/components/schemas/AdvisorDto"}]},"successor":{"description":"Successor information","allOf":[{"$ref":"#/components/schemas/NullableIdentityUpdateInputDto"}]}}},"CreateFundCollaboratorInputDto":{"type":"object","properties":{"companyName":{"type":"string","description":"Company name of the collaborator","example":"Acme Corporation"},"userId":{"type":"string","description":"User ID of the collaborator","example":"123e4567-e89b-12d3-a456-426614174000"}},"required":["companyName","userId"]},"RecommendationItemDto":{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier of the recommendation","format":"uuid"},"collaboratorFund":{"description":"The target fund of the recommendation","allOf":[{"$ref":"#/components/schemas/FundListingDto"}]},"collaborator":{"description":"The collaborator who created the recommendation","allOf":[{"$ref":"#/components/schemas/CollaboratorListingDto"}]},"createdAt":{"type":"string","description":"The date the recommendation was created","format":"date-time"},"status":{"type":"string","description":"Status of the recommendation","enum":["Executed","Pending","Dismissed"]},"type":{"type":"string","description":"Type of the recommended activity","example":"grant"}},"required":["id","collaboratorFund","collaborator","createdAt","status","type"]},"CreateGrantRecommendationInputDto":{"type":"object","properties":{"recommender":{"type":"object","description":"The name of the grant recommender","maxLength":255,"example":"John Doe"},"purpose":{"type":"string","description":"Public declaration of this grant's purpose","maxLength":511,"example":"General operating support"},"specialInstructions":{"type":"string","description":"An optional, binding instruction for the use of the transferred assets. The receiving org must accept these instructions.","example":"Funds must be used for the specific project X."},"subprojectId":{"type":"string","description":"ID of the Subproject targeted by the grant. Must be sponsored by the receiving organization.","format":"uuid"},"shareMyEmail":{"type":"boolean","description":"Whether the donor wants to share their email with the org","example":false},"amountUsdc":{"type":"string","description":"The amount in USDC for the recommendation, in the smallest currency unit (1000000 = 1 USD)","example":"100000000"},"orgId":{"type":"string","description":"ID of the destination organization","format":"uuid"},"offsetFee":{"type":"boolean","description":"Whether the advisor wants to offset the grant fee","example":true},"collaboratingFundId":{"type":"string","description":"ID of the fund that the advisor is collaborating with","format":"uuid"},"uuid":{"type":"string","description":"Unique identifier for the recommendation. Generated on the client side to ensure idempotency.","format":"uuid"}},"required":["purpose","amountUsdc","orgId","offsetFee","uuid"]},"RecommendationCreatedResponseDto":{"type":"object","properties":{"id":{"type":"string","description":"The recommendation id","example":"123e4567-e89b-12d3-a456-426614174000"}},"required":["id"]},"IdentityInputDto":{"type":"object","properties":{"firstName":{"type":"string","description":"First name of the donor","example":"John","maxLength":255},"lastName":{"type":"string","description":"Last name of the donor","example":"Doe","maxLength":255},"email":{"type":"string","description":"Email address of the donor","example":"john.doe@example.com","format":"email"},"address":{"description":"Physical address of the donor","allOf":[{"$ref":"#/components/schemas/AddressInputDto"}]}},"required":["firstName","lastName","email","address"]},"CreateDonationRecommendationInputDto":{"type":"object","properties":{"donorName":{"type":"string","description":"Optional donor name to expose to the receiving entity. Not to be confused with `donorIdentity` which is the PII/tax receipt information of the donor","example":"Anonymous Donor"},"donorIdentity":{"description":"Optional identity information for the donation receipt.","allOf":[{"$ref":"#/components/schemas/IdentityInputDto"}]},"updateIdentity":{"type":"boolean","description":"Whether to update the user's global identity with the provided donation identity.","example":true},"shareMyEmail":{"type":"boolean","description":"Whether the donor wants to share their email with the org.","example":false},"collaboratingFundId":{"type":"string","description":"ID of the fund that the advisor is collaborating with","format":"uuid"},"tokenId":{"type":"number","description":"Recommended token to be donated","example":1},"chainId":{"type":"number","description":"The chain ID where the donation should occur.","example":1},"inputAmount":{"type":"string","description":"Amount of input token used by the donation, denominated in its smallest currency unit","example":"1000000000000000000"},"offsetFee":{"type":"boolean","description":"Whether the advisor wants to offset the donation fee","example":true},"uuid":{"type":"string","description":"Unique identifier for the recommendation. Generated on the client side to ensure idempotency.","format":"uuid"}},"required":["tokenId","chainId","inputAmount","offsetFee","uuid"]},"CreatePortfolioTradeRecommendationInputDto":{"type":"object","properties":{"issuerEntityId":{"type":"string","description":"Id of the entity issuing the trade","format":"uuid"},"portfolioId":{"type":"string","description":"ID of the Portfolio to assemble the trade for","format":"uuid"},"issuerEntityType":{"type":"string","description":"Type of the entity issuing the Trade","enum":["org","fund"]},"amountUsdc":{"type":"string","description":"Amount of the trade in USDC, in the smallest currency unit (1000000 = 1 USD)","example":"100000000"},"tradeType":{"type":"string","description":"Type of trade","enum":["Buy","Sell"]},"slippageToleranceBps":{"type":"number","description":"Slippage tolerance for the trade in basis points (bps). Defaults to maximum slippage.","example":50},"isMax":{"type":"boolean","description":"Whether the trade is a max trade, ignoring the amountUsdc value","example":false},"collaboratingFundId":{"type":"string","description":"ID of the fund that the advisor is collaborating with","format":"uuid"},"uuid":{"type":"string","description":"Unique identifier for the recommendation. Generated on the client side to ensure idempotency.","format":"uuid"}},"required":["issuerEntityId","portfolioId","issuerEntityType","amountUsdc","tradeType","uuid"]},"CreateCryptoPledgeRecommendationInputDto":{"type":"object","properties":{"donorName":{"type":"string","description":"Optional donor name to expose to the receiving entity. Not to be confused with `donorIdentity` which is the PII/tax receipt information of the donor","example":"Anonymous Donor"},"donorIdentity":{"description":"Optional identity information for the donation receipt.","allOf":[{"$ref":"#/components/schemas/IdentityInputDto"}]},"updateIdentity":{"type":"boolean","description":"Whether to update the user's global identity with the provided donation identity.","example":true},"shareMyEmail":{"type":"boolean","description":"Whether the donor wants to share their email with the org.","example":false},"collaboratingFundId":{"type":"string","description":"ID of the fund that the advisor is collaborating with","format":"uuid"},"tokenId":{"type":"number","description":"The token id suggested for the donation","example":1},"inputAmount":{"type":"string","description":"The input amount of the token that was given to the entity, in its smallest unit.","example":"1000000000000000000"},"uuid":{"type":"string","description":"Unique identifier for the recommendation. Generated on the client side to ensure idempotency.","format":"uuid"}},"required":["tokenId","inputAmount","uuid"]},"StockDonorDataDto":{"type":"object","properties":{"addressLine1":{"type":"string","description":"First line of donor address","example":"123 Main St","maxLength":255},"addressLine2":{"type":"string","description":"Second line of donor address (optional)","example":"Apt 4B","maxLength":255},"city":{"type":"string","description":"City of donor address","example":"San Francisco","maxLength":255},"country":{"type":"string","description":"Country code in ISO 3166-1 alpha-3 format","example":"USA","enum":["USA"]},"firstName":{"type":"string","description":"Donor first name","example":"John","maxLength":255},"lastName":{"type":"string","description":"Donor last name","example":"Doe","maxLength":255},"receiptEmail":{"type":"string","description":"Email address for receiving donation receipt","example":"john.doe@example.com"},"state":{"type":"string","description":"State of donor address","example":"CA","maxLength":255},"zipcode":{"type":"string","description":"ZIP code of donor address","example":"94105","maxLength":255}},"required":["addressLine1","city","country","firstName","lastName","receiptEmail","state","zipcode"]},"BrokerDataDto":{"type":"object","properties":{"brokerContactName":{"type":"string","description":"Name of the broker contact person","example":"Jane Smith"},"brokerEmail":{"type":"string","description":"Email address of the broker","example":"jane.smith@brokerage.com"},"brokerName":{"type":"string","description":"Name of the brokerage firm","example":"Fidelity"},"brokerPhone":{"type":"string","description":"Phone number of the broker","example":"+1 (555) 987-6543"},"brokerageAccountNumber":{"type":"string","description":"Brokerage account number","example":"123456789"},"customBrokerName":{"type":"string","description":"Custom broker name. Required when brokerName is \"other\".","example":"Local Investment Partners LLC"}},"required":["brokerContactName","brokerEmail","brokerName","brokerPhone","brokerageAccountNumber"]},"StockLotDataDto":{"type":"object","properties":{"numberOfShares":{"type":"number","description":"Number of shares in this lot","example":50,"minimum":0},"purchasePrice":{"type":"number","description":"Purchase price per share in this lot","example":150.75,"minimum":0},"purchaseDate":{"format":"date-time","type":"string","description":"Date when the shares in this lot were purchased","example":"2023-01-15T00:00:00.000Z"},"employeeStockPlan":{"type":"string","description":"Type of employee stock plan (if applicable)","enum":["Exercised","ESPP","Restricted"],"example":"RSU"},"lotId":{"type":"string","description":"Alphanumeric identifier for this lot","example":"LOT123","pattern":"^[a-zA-Z0-9]+$"}},"required":["numberOfShares","purchasePrice","purchaseDate"]},"StockPledgeRecommendationDataDto":{"type":"object","properties":{"shares":{"type":"number","description":"Number of shares being donated","example":100},"ticker":{"type":"string","description":"Stock ticker symbol","example":"AAPL"},"donorData":{"description":"Donor information","allOf":[{"$ref":"#/components/schemas/StockDonorDataDto"}]},"brokerData":{"description":"Broker information","allOf":[{"$ref":"#/components/schemas/BrokerDataDto"}]},"signature":{"type":"string","description":"Base64 encoded PNG signature of the donor. The signature must be a PNG in `base64` encoding, which can be generated using the `react-signature-canvas` library, for example. The string must be in the following format: `data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAA...` Optional for recommendations.","example":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAA..."},"lots":{"description":"Information about individual lots of shares being donated","type":"array","items":{"$ref":"#/components/schemas/StockLotDataDto"}}},"required":["shares","ticker","donorData","brokerData"]},"CreateStockPledgeRecommendationInputDtoV2":{"type":"object","properties":{"updateIdentity":{"type":"boolean","description":"Whether to update the user global identity with the provided donor information","example":true,"default":false},"shareMyEmail":{"type":"boolean","description":"Whether to share donor email with the receiving organization","example":false,"default":false},"stockPledgeData":{"description":"Stock pledge details including donor and broker information","allOf":[{"$ref":"#/components/schemas/StockPledgeRecommendationDataDto"}]},"receivingEntityType":{"type":"string","description":"Type of entity receiving the pledge","enum":["org","fund","subproject"],"example":"fund"},"receivingEntityId":{"type":"string","description":"Unique identifier of the receiving entity","format":"uuid","example":"123e4567-e89b-12d3-a456-426614174000"},"isRebalanceRequested":{"type":"boolean","description":"Whether the fund needs its investments rebalanced after the pledge is fulfilled","example":false,"default":false},"uuid":{"type":"string","description":"Unique identifier for the recommendation. Generated on the client side to ensure idempotency.","format":"uuid"}},"required":["stockPledgeData","receivingEntityType","receivingEntityId","uuid"]},"ActivityItemDto":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier of entity that triggered the activity","example":"123e4567-e89b-12d3-a456-426614174000"},"transactor":{"type":"string","description":"Address or label of the initiator of this activity","nullable":true,"example":"0x1234567890abcdef1234567890abcdef12345678"},"occurredAtUtc":{"type":"string","description":"Timestamp of when the activity occurred on-chain (or database timestamp if not available)","format":"date-time","example":"2023-01-01T12:00:00Z"},"transactorUrl":{"type":"string","description":"Link for the transactor address or identity","nullable":true,"example":"https://etherscan.io/address/0x1234567890abcdef1234567890abcdef12345678"},"transactionHash":{"type":"string","description":"Transaction hash for the activity","nullable":true,"example":"0xabcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890"},"type":{"type":"string","description":"Type of the activity","example":"donation"},"automated":{"type":"boolean","description":"Flag indicating if this activity is driven by an automated process","example":false},"chainId":{"type":"number","description":"Chain ID of the activity (null for off-chain activities)","nullable":true,"example":1}},"required":["id","transactor","occurredAtUtc","transactorUrl","transactionHash","type","automated","chainId"]},"StockListingDto":{"type":"object","properties":{"name":{"type":"string","description":"Full name of the stock","example":"Apple Inc."},"ticker":{"type":"string","description":"Stock ticker symbol","example":"AAPL"},"id":{"type":"string","description":"Unique identifier of the stock","example":"123e4567-e89b-12d3-a456-426614174000"}},"required":["name","ticker","id"]},"EntityLabelDto":{"type":"object","properties":{"name":{"type":"string","description":"Name of the entity","example":"Endaoment Fund"},"id":{"type":"string","description":"Unique identifier of the entity","format":"uuid","example":"123e4567-e89b-12d3-a456-426614174000"},"type":{"type":"string","description":"Type of the entity","enum":["org","fund","subproject"],"example":"fund"}},"required":["name","id","type"]},"DonationActivity":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier of entity that triggered the activity","example":"123e4567-e89b-12d3-a456-426614174000"},"transactor":{"type":"string","description":"Address or label of the initiator of this activity","nullable":true,"example":"0x1234567890abcdef1234567890abcdef12345678"},"occurredAtUtc":{"type":"string","description":"Timestamp of when the activity occurred on-chain (or database timestamp if not available)","format":"date-time","example":"2023-01-01T12:00:00Z"},"transactorUrl":{"type":"string","description":"Link for the transactor address or identity","nullable":true,"example":"https://etherscan.io/address/0x1234567890abcdef1234567890abcdef12345678"},"transactionHash":{"type":"string","description":"Transaction hash for the activity","nullable":true,"example":"0xabcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890"},"type":{"type":"string","description":"Type of the activity","example":"donation","enum":["donation"]},"automated":{"type":"boolean","description":"Flag indicating if this activity is driven by an automated process","example":false},"chainId":{"type":"number","description":"Chain ID of the activity (null for off-chain activities)","nullable":true,"example":1},"amount":{"type":"string","description":"Amount transferred in the smallest currency unit of the asset","example":"1000000000000000000"},"usdcAmount":{"type":"string","description":"USDC equivalent amount of the transaction, prior to fees being applied, in the smallest currency unit (1000000 = 1 USD)","example":"1000000000"},"token":{"description":"Token of this donation (null if it was a stock donation)","nullable":true,"type":"object","allOf":[{"$ref":"#/components/schemas/TokenListingDto"}]},"stock":{"description":"Stock of this donation (null if it was a crypto donation)","nullable":true,"type":"object","allOf":[{"$ref":"#/components/schemas/StockListingDto"}]},"to":{"description":"Destination entity of the donation","allOf":[{"$ref":"#/components/schemas/EntityLabelDto"}]}},"required":["id","transactor","occurredAtUtc","transactorUrl","transactionHash","type","automated","chainId","amount","usdcAmount","token","stock","to"]},"PortfolioLabelDto":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier of the portfolio","example":"123e4567-e89b-12d3-a456-426614174000"},"name":{"type":"string","description":"Name of the portfolio","example":"ETH Portfolio"},"type":{"type":"string","description":"Type of the portfolio","enum":["AaveUsdc","CompoundUsdc","YearnUsdc","SingleToken","AaveUsdcV3","CompoundUsdcV3","TPlusN","PrivateWealth","IlliquidSellOverTime","IlliquidAsset","IlliquidLockedAdvisorManaged"],"example":"SingleToken"},"symbol":{"type":"string","description":"Symbol of the underlying stock or token","nullable":true,"example":"ETH"}},"required":["id","name","type"]},"PortfolioTradeActivity":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier of entity that triggered the activity","example":"123e4567-e89b-12d3-a456-426614174000"},"transactor":{"type":"string","description":"Address or label of the initiator of this activity","nullable":true,"example":"0x1234567890abcdef1234567890abcdef12345678"},"occurredAtUtc":{"type":"string","description":"Timestamp of when the activity occurred on-chain (or database timestamp if not available)","format":"date-time","example":"2023-01-01T12:00:00Z"},"transactorUrl":{"type":"string","description":"Link for the transactor address or identity","nullable":true,"example":"https://etherscan.io/address/0x1234567890abcdef1234567890abcdef12345678"},"transactionHash":{"type":"string","description":"Transaction hash for the activity","nullable":true,"example":"0xabcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890"},"type":{"type":"string","description":"Type of the activity","example":"portfolio_trade","enum":["portfolio_trade"]},"automated":{"type":"boolean","description":"Flag indicating if this activity is driven by an automated process","example":false},"chainId":{"type":"number","description":"Chain ID of the activity (null for off-chain activities)","nullable":true,"example":1},"amount":{"type":"string","description":"Amount transferred in the smallest currency unit of the asset","example":"1000000000000000000"},"usdcAmount":{"type":"string","description":"USDC equivalent amount of the transaction, prior to fees being applied, in the smallest currency unit (1000000 = 1 USD)","example":"1000000000"},"portfolio":{"description":"Portfolio involved in this trade","allOf":[{"$ref":"#/components/schemas/PortfolioLabelDto"}]},"fund":{"description":"Fund associated with this trade","allOf":[{"$ref":"#/components/schemas/EntityLabelDto"}]},"tradeType":{"type":"string","description":"Type of trade","enum":["Buy","Sell"],"example":"Buy"},"shares":{"type":"string","description":"Shares transacted (not available on \"InTransit\" buy trades)","nullable":true,"example":"100000000"},"outcome":{"type":"string","description":"Outcome of the trade","enum":["InTransit","Completed"],"example":"Completed"}},"required":["id","transactor","occurredAtUtc","transactorUrl","transactionHash","type","automated","chainId","amount","usdcAmount","portfolio","fund","tradeType","shares","outcome"]},"InternalTransferActivity":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier of entity that triggered the activity","example":"123e4567-e89b-12d3-a456-426614174000"},"transactor":{"type":"string","description":"Address or label of the initiator of this activity","nullable":true,"example":"0x1234567890abcdef1234567890abcdef12345678"},"occurredAtUtc":{"type":"string","description":"Timestamp of when the activity occurred on-chain (or database timestamp if not available)","format":"date-time","example":"2023-01-01T12:00:00Z"},"transactorUrl":{"type":"string","description":"Link for the transactor address or identity","nullable":true,"example":"https://etherscan.io/address/0x1234567890abcdef1234567890abcdef12345678"},"transactionHash":{"type":"string","description":"Transaction hash for the activity","nullable":true,"example":"0xabcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890"},"type":{"type":"string","description":"Type of internal transfer activity","example":"grant","enum":["grant","internal_transfer","pending_grant","pending_internal_transfer"]},"automated":{"type":"boolean","description":"Flag indicating if this activity is driven by an automated process","example":false},"chainId":{"type":"number","description":"Chain ID of the activity (null for off-chain activities)","nullable":true,"example":1},"amount":{"type":"string","description":"Amount transferred in the smallest currency unit of the asset","example":"1000000000000000000"},"usdcAmount":{"type":"string","description":"USDC equivalent amount of the transaction, prior to fees being applied, in the smallest currency unit (1000000 = 1 USD)","example":"1000000000"},"token":{"description":"Token transferred in this activity","allOf":[{"$ref":"#/components/schemas/TokenListingDto"}]},"from":{"description":"Source entity of the transfer","allOf":[{"$ref":"#/components/schemas/EntityLabelDto"}]},"to":{"description":"Destination entity of the transfer","allOf":[{"$ref":"#/components/schemas/EntityLabelDto"}]}},"required":["id","transactor","occurredAtUtc","transactorUrl","transactionHash","type","automated","chainId","amount","usdcAmount","token","from","to"]},"StockDonationPledgeActivity":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier of entity that triggered the activity","example":"123e4567-e89b-12d3-a456-426614174000"},"transactor":{"type":"string","description":"Address or label of the initiator of this activity","nullable":true,"example":"0x1234567890abcdef1234567890abcdef12345678"},"occurredAtUtc":{"type":"string","description":"Timestamp of when the activity occurred on-chain (or database timestamp if not available)","format":"date-time","example":"2023-01-01T12:00:00Z"},"transactorUrl":{"type":"string","description":"Link for the transactor address or identity","nullable":true,"example":"https://etherscan.io/address/0x1234567890abcdef1234567890abcdef12345678"},"transactionHash":{"type":"string","description":"Transaction hash for the activity","nullable":true,"example":"0xabcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890"},"type":{"type":"string","description":"Type of the activity","example":"stock_donation_pledge","enum":["stock_donation_pledge"]},"automated":{"type":"boolean","description":"Flag indicating if this activity is driven by an automated process","example":false},"chainId":{"type":"number","description":"Chain ID of the activity (null for off-chain activities)","nullable":true,"example":1},"pledgeId":{"type":"string","description":"Unique identifier of the pledge","example":"123e4567-e89b-12d3-a456-426614174000"},"to":{"description":"Destination entity of the donation pledge","allOf":[{"$ref":"#/components/schemas/EntityLabelDto"}]},"protocolFeesUsdc":{"type":"string","description":"Actual or estimated protocol fees for the pledge, in the smallest USDC unit (1000000 = 1 USD), or null when unavailable","nullable":true,"example":"1000000"},"netDonationUsdc":{"type":"string","description":"Actual or estimated net donation amount after protocol fees, in the smallest USDC unit (1000000 = 1 USD), or null when unavailable","nullable":true,"example":"99000000"},"outcome":{"type":"string","description":"Outcome of the pledge","enum":["Pending","AwaitingAssets","OnRamping","Success","Failure"],"example":"Success"},"stock":{"description":"The stock that was pledged","allOf":[{"$ref":"#/components/schemas/StockListingDto"}]},"amount":{"type":"string","description":"The amount of stock that was pledged. Example: 10 = 10 shares. Values can be fractional.","example":"10"},"usdcAmount":{"type":"string","description":"The USDC amount of the pledge (actual amount if successful, estimated if pending), prior to fees being applied, in the smallest currency unit (1000000 = 1 USD)","example":"1000000000"}},"required":["id","transactor","occurredAtUtc","transactorUrl","transactionHash","type","automated","chainId","pledgeId","to","protocolFeesUsdc","netDonationUsdc","outcome","stock","amount","usdcAmount"]},"CustodianCashPledgeActivity":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier of entity that triggered the activity","example":"123e4567-e89b-12d3-a456-426614174000"},"transactor":{"type":"string","description":"Address or label of the initiator of this activity","nullable":true,"example":"0x1234567890abcdef1234567890abcdef12345678"},"occurredAtUtc":{"type":"string","description":"Timestamp of when the activity occurred on-chain (or database timestamp if not available)","format":"date-time","example":"2023-01-01T12:00:00Z"},"transactorUrl":{"type":"string","description":"Link for the transactor address or identity","nullable":true,"example":"https://etherscan.io/address/0x1234567890abcdef1234567890abcdef12345678"},"transactionHash":{"type":"string","description":"Transaction hash for the activity","nullable":true,"example":"0xabcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890"},"type":{"type":"string","description":"Type of the activity","example":"custodian_cash_pledge","enum":["custodian_cash_pledge"]},"automated":{"type":"boolean","description":"Flag indicating if this activity is driven by an automated process","example":false},"chainId":{"type":"number","description":"Chain ID of the activity (null for off-chain activities)","nullable":true,"example":1},"pledgeId":{"type":"string","description":"Unique identifier of the pledge","example":"123e4567-e89b-12d3-a456-426614174000"},"to":{"description":"Destination entity of the donation pledge","allOf":[{"$ref":"#/components/schemas/EntityLabelDto"}]},"protocolFeesUsdc":{"type":"string","description":"Actual or estimated protocol fees for the pledge, in the smallest USDC unit (1000000 = 1 USD), or null when unavailable","nullable":true,"example":"1000000"},"netDonationUsdc":{"type":"string","description":"Actual or estimated net donation amount after protocol fees, in the smallest USDC unit (1000000 = 1 USD), or null when unavailable","nullable":true,"example":"99000000"},"outcome":{"type":"string","description":"Outcome of the pledge","enum":["Pending","AwaitingAssets","OnRamping","Success","Failure"],"example":"Success"},"usdcAmount":{"type":"string","description":"The USDC amount of the pledge (actual amount if successful, estimated if pending), prior to fees being applied, in the smallest currency unit (1000000 = 1 USD)","example":"1000000000"}},"required":["id","transactor","occurredAtUtc","transactorUrl","transactionHash","type","automated","chainId","pledgeId","to","protocolFeesUsdc","netDonationUsdc","outcome","usdcAmount"]},"CryptoDonationPledgeActivity":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier of entity that triggered the activity","example":"123e4567-e89b-12d3-a456-426614174000"},"transactor":{"type":"string","description":"Address or label of the initiator of this activity","nullable":true,"example":"0x1234567890abcdef1234567890abcdef12345678"},"occurredAtUtc":{"type":"string","description":"Timestamp of when the activity occurred on-chain (or database timestamp if not available)","format":"date-time","example":"2023-01-01T12:00:00Z"},"transactorUrl":{"type":"string","description":"Link for the transactor address or identity","nullable":true,"example":"https://etherscan.io/address/0x1234567890abcdef1234567890abcdef12345678"},"transactionHash":{"type":"string","description":"Transaction hash for the activity","nullable":true,"example":"0xabcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890"},"type":{"type":"string","description":"Type of the activity","example":"crypto_donation_pledge","enum":["crypto_donation_pledge","nec_donation_pledge"]},"automated":{"type":"boolean","description":"Flag indicating if this activity is driven by an automated process","example":false},"chainId":{"type":"number","description":"Chain ID of the activity (null for off-chain activities)","nullable":true,"example":1},"pledgeId":{"type":"string","description":"Unique identifier of the pledge","example":"123e4567-e89b-12d3-a456-426614174000"},"to":{"description":"Destination entity of the donation pledge","allOf":[{"$ref":"#/components/schemas/EntityLabelDto"}]},"protocolFeesUsdc":{"type":"string","description":"Actual or estimated protocol fees for the pledge, in the smallest USDC unit (1000000 = 1 USD), or null when unavailable","nullable":true,"example":"1000000"},"netDonationUsdc":{"type":"string","description":"Actual or estimated net donation amount after protocol fees, in the smallest USDC unit (1000000 = 1 USD), or null when unavailable","nullable":true,"example":"99000000"},"outcome":{"type":"string","description":"Outcome of the pledge","enum":["Pending","AwaitingAssets","OnRamping","Success","Failure"],"example":"Success"},"token":{"description":"Token that was pledged","allOf":[{"$ref":"#/components/schemas/TokenListingDto"}]},"amount":{"type":"string","description":"Amount of token pledged in the smallest currency unit","example":"1000000000000000000"},"usdcAmount":{"type":"string","description":"The USDC amount that reached the entity, prior to fees being applied, (null if not successful or not liquidated), in the smallest currency unit (1000000 = 1 USD)","nullable":true,"example":"1000000000"}},"required":["id","transactor","occurredAtUtc","transactorUrl","transactionHash","type","automated","chainId","pledgeId","to","protocolFeesUsdc","netDonationUsdc","outcome","token","amount","usdcAmount"]},"FiatDonationPledgeActivity":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier of entity that triggered the activity","example":"123e4567-e89b-12d3-a456-426614174000"},"transactor":{"type":"string","description":"Address or label of the initiator of this activity","nullable":true,"example":"0x1234567890abcdef1234567890abcdef12345678"},"occurredAtUtc":{"type":"string","description":"Timestamp of when the activity occurred on-chain (or database timestamp if not available)","format":"date-time","example":"2023-01-01T12:00:00Z"},"transactorUrl":{"type":"string","description":"Link for the transactor address or identity","nullable":true,"example":"https://etherscan.io/address/0x1234567890abcdef1234567890abcdef12345678"},"transactionHash":{"type":"string","description":"Transaction hash for the activity","nullable":true,"example":"0xabcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890"},"type":{"type":"string","description":"Type of the activity","example":"fiat_donation_pledge","enum":["fiat_donation_pledge"]},"automated":{"type":"boolean","description":"Flag indicating if this activity is driven by an automated process","example":false},"chainId":{"type":"number","description":"Chain ID of the activity (null for off-chain activities)","nullable":true,"example":1},"pledgeId":{"type":"string","description":"Unique identifier of the pledge","example":"123e4567-e89b-12d3-a456-426614174000"},"to":{"description":"Destination entity of the donation pledge","allOf":[{"$ref":"#/components/schemas/EntityLabelDto"}]},"protocolFeesUsdc":{"type":"string","description":"Actual or estimated protocol fees for the pledge, in the smallest USDC unit (1000000 = 1 USD), or null when unavailable","nullable":true,"example":"1000000"},"netDonationUsdc":{"type":"string","description":"Actual or estimated net donation amount after protocol fees, in the smallest USDC unit (1000000 = 1 USD), or null when unavailable","nullable":true,"example":"99000000"},"outcome":{"type":"string","description":"Outcome of the pledge","enum":["Pending","AwaitingAssets","OnRamping","Success","Failure"],"example":"Success"},"usdcAmount":{"type":"string","description":"The USDC amount that was pledged, prior to fees being applied, in the smallest currency unit (1000000 = 1 USD)","example":"1000000000"},"paymentProcessorFeeCents":{"type":"number","description":"Actual or estimated payment processor fee for the pledge, in USD cents","nullable":true,"example":320},"selectedPaymentMethod":{"type":"string","description":"The payment method used for this donation","nullable":true,"example":"credit_card"}},"required":["id","transactor","occurredAtUtc","transactorUrl","transactionHash","type","automated","chainId","pledgeId","to","protocolFeesUsdc","netDonationUsdc","outcome","usdcAmount","paymentProcessorFeeCents","selectedPaymentMethod"]},"CashDonationPledgeActivity":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier of entity that triggered the activity","example":"123e4567-e89b-12d3-a456-426614174000"},"transactor":{"type":"string","description":"Address or label of the initiator of this activity","nullable":true,"example":"0x1234567890abcdef1234567890abcdef12345678"},"occurredAtUtc":{"type":"string","description":"Timestamp of when the activity occurred on-chain (or database timestamp if not available)","format":"date-time","example":"2023-01-01T12:00:00Z"},"transactorUrl":{"type":"string","description":"Link for the transactor address or identity","nullable":true,"example":"https://etherscan.io/address/0x1234567890abcdef1234567890abcdef12345678"},"transactionHash":{"type":"string","description":"Transaction hash for the activity","nullable":true,"example":"0xabcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890"},"type":{"type":"string","description":"Type of the activity","example":"cash_donation_pledge","enum":["cash_donation_pledge"]},"automated":{"type":"boolean","description":"Flag indicating if this activity is driven by an automated process","example":false},"chainId":{"type":"number","description":"Chain ID of the activity (null for off-chain activities)","nullable":true,"example":1},"pledgeId":{"type":"string","description":"Unique identifier of the pledge","example":"123e4567-e89b-12d3-a456-426614174000"},"to":{"description":"Destination entity of the donation pledge","allOf":[{"$ref":"#/components/schemas/EntityLabelDto"}]},"protocolFeesUsdc":{"type":"string","description":"Actual or estimated protocol fees for the pledge, in the smallest USDC unit (1000000 = 1 USD), or null when unavailable","nullable":true,"example":"1000000"},"netDonationUsdc":{"type":"string","description":"Actual or estimated net donation amount after protocol fees, in the smallest USDC unit (1000000 = 1 USD), or null when unavailable","nullable":true,"example":"99000000"},"outcome":{"type":"string","description":"Outcome of the pledge","enum":["Pending","AwaitingAssets","OnRamping","Success","Failure"],"example":"Success"},"usdcAmount":{"type":"string","description":"The USDC amount that was pledged, prior to fees being applied, in the smallest currency unit (1000000 = 1 USD)","example":"1000000000"},"cashTransferType":{"type":"string","description":"The reason or type of cash transfer","enum":["DafMigration","WirePledge","PartnerSettled"],"example":"WirePledge"}},"required":["id","transactor","occurredAtUtc","transactorUrl","transactionHash","type","automated","chainId","pledgeId","to","protocolFeesUsdc","netDonationUsdc","outcome","usdcAmount","cashTransferType"]},"PaginatedActivityResponseDto":{"type":"object","properties":{"items":{"description":"The activity items for this page","type":"array","items":{"$ref":"#/components/schemas/ActivityItemDto"}},"count":{"type":"number","description":"Resolved page size after applying defaults and clamping","example":25},"offset":{"type":"number","description":"Resolved offset after applying defaults and clamping","example":0},"returnedCount":{"type":"number","description":"Actual number of items returned in this page (may be less than count)","example":25},"hasMore":{"type":"boolean","description":"Whether there are more items beyond this page","example":true}},"required":["items","count","offset","returnedCount","hasMore"]},"CryptoGivenDto":{"type":"object","properties":{"inputAmount":{"type":"string","description":"The input amount of the token that was given, in its smallest unit of a token","example":"1000000000000000000"},"tokenId":{"type":"number","description":"The ID of the token that was given. The full list of tokens and their IDs can be found in the GET /v2/tokens endpoint.","example":1}},"required":["inputAmount","tokenId"]},"CryptoPledgeInputDto":{"type":"object","properties":{"cryptoGiven":{"description":"Asset that was pledged to the entity","allOf":[{"$ref":"#/components/schemas/CryptoGivenDto"}]},"otcDonationTransactionHash":{"type":"string","description":"Transaction hash proving that the asset was sent to the entity","example":"0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef"},"receivingEntityType":{"type":"string","description":"The type of the entity receiving the pledge","enum":["org","fund","subproject"],"example":"fund"},"receivingEntityId":{"type":"string","description":"The ID of the entity receiving the pledge","format":"uuid","example":"123e4567-e89b-12d3-a456-426614174000"},"recommendationId":{"type":"string","description":"The ID of the recommendation that led to the pledge","format":"uuid","example":"123e4567-e89b-12d3-a456-426614174000"},"isRebalanceRequested":{"type":"boolean","description":"Whether the fund needs it's investments rebalanced after the pledge is deemed fulfilled","example":false,"default":false},"donorName":{"type":"string","description":"Optional donor name the donor might want to expose to the receiving entity"},"donorIdentity":{"description":"Optional identity information to be used in the donation receipt","allOf":[{"$ref":"#/components/schemas/IdentityInputDto"}]},"updateIdentity":{"type":"boolean","description":"Inform if user wants to update their global identity based on the informed donation identity","example":false},"shareMyEmail":{"type":"boolean","description":"Whether the donor wants to share their email with the org","example":false}},"required":["cryptoGiven","receivingEntityType","receivingEntityId"]},"CreateDonationPledgeResponseDto":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier of the created donation pledge","example":"123e4567-e89b-12d3-a456-426614174000","format":"uuid"}},"required":["id"]},"StockPledgeDataDto":{"type":"object","properties":{"shares":{"type":"number","description":"Number of shares being donated","example":100},"ticker":{"type":"string","description":"Stock ticker symbol","example":"AAPL"},"donorData":{"description":"Donor information.","allOf":[{"$ref":"#/components/schemas/StockDonorDataDto"}]},"brokerData":{"description":"Broker information.","allOf":[{"$ref":"#/components/schemas/BrokerDataDto"}]},"signature":{"type":"string","description":"Base64 encoded PNG signature of the donor. The signature must be a PNG in `base64` encoding, The string must be in the following format: `data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAA...`.","example":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAA..."},"lots":{"description":"Information about individual lots of shares being donated. Required only if donor wants to inform stock lot information.","type":"array","items":{"$ref":"#/components/schemas/StockLotDataDto"}}},"required":["shares","ticker","donorData","brokerData","signature"]},"StockPledgeInputDto":{"type":"object","properties":{"stockPledgeData":{"description":"Stock pledge details including donor and broker information","allOf":[{"$ref":"#/components/schemas/StockPledgeDataDto"}]},"receivingEntityType":{"type":"string","description":"Type of entity receiving the pledge","enum":["org","fund","subproject"],"example":"fund"},"receivingEntityId":{"type":"string","description":"Unique identifier of the receiving entity","format":"uuid","example":"123e4567-e89b-12d3-a456-426614174000"},"idempotencyKey":{"type":"string","description":"Client-generated key to ensure idempotency of the request","format":"uuid","example":"123e4567-e89b-12d3-a456-426614174000"},"updateIdentity":{"type":"boolean","description":"Whether to update the user global identity with the provided donor information","example":true,"default":false},"shareMyEmail":{"type":"boolean","description":"Whether to share donor email with the receiving organization","example":false,"default":false},"recommendationId":{"type":"string","description":"Unique identifier of the recommendation that led to this pledge","format":"uuid","example":"123e4567-e89b-12d3-a456-426614174000"},"isRebalanceRequested":{"type":"boolean","description":"Whether the fund needs its investments rebalanced after the pledge is fulfilled","example":false,"default":false},"donationValueMicroDollars":{"type":"string","description":"Settled donation value in microdollars. Required at runtime when the resolved partner has `reportsSettledOperations: true`; ignored otherwise.","example":"50000000000"},"partnerOperationId":{"type":"string","description":"Partner-owned reference for this operation. Required at runtime when the resolved partner has `reportsSettledOperations: true`; ignored otherwise.","example":"a1b2c3d4-e5f6-7890-abcd-ef1234567890","maxLength":36}},"required":["stockPledgeData","receivingEntityType","receivingEntityId","idempotencyKey"]},"SettledStockPledgeDataDto":{"type":"object","properties":{"shares":{"type":"number","description":"Number of shares already donated by the partner (must be positive)","example":100,"minimum":1},"ticker":{"type":"string","description":"Stock ticker symbol","example":"AAPL"},"lots":{"description":"Optional lot information for the donated shares","type":"array","items":{"$ref":"#/components/schemas/StockLotDataDto"}}},"required":["shares","ticker"]},"SettledStockPledgeInputDto":{"type":"object","properties":{"stockPledgeData":{"description":"Settled stock pledge details reported by the partner","allOf":[{"$ref":"#/components/schemas/SettledStockPledgeDataDto"}]},"receivingFundId":{"type":"string","description":"Unique identifier of the receiving fund","format":"uuid","example":"123e4567-e89b-12d3-a456-426614174000"},"idempotencyKey":{"type":"string","description":"Client-generated key to ensure idempotency of the request","format":"uuid","example":"123e4567-e89b-12d3-a456-426614174000"},"partnerUserIdentifier":{"type":"string","description":"Opaque partner-generated identifier for the acting user. Used only to resolve or corroborate the user; it is not stored on the pledge or returned in the response.","example":"c3f8b2e4-9d1a-4f6b-8e2c-7a5d90c41b3f","minLength":8,"maxLength":64,"pattern":"^[\\x20-\\x7E]{8,64}$"},"donationValueMicroDollars":{"type":"string","description":"Settled donation value in microdollars","example":"50000000000"},"partnerOperationId":{"type":"string","description":"Partner-owned reference for this operation","example":"a1b2c3d4-e5f6-7890-abcd-ef1234567890","maxLength":36}},"required":["stockPledgeData","receivingFundId","idempotencyKey","donationValueMicroDollars","partnerOperationId"]},"SettledCashPledgeInputDto":{"type":"object","properties":{"receivingFundId":{"type":"string","description":"Unique identifier of the receiving fund","format":"uuid","example":"123e4567-e89b-12d3-a456-426614174000"},"idempotencyKey":{"type":"string","description":"Client-generated key to ensure idempotency of the request","format":"uuid","example":"123e4567-e89b-12d3-a456-426614174000"},"partnerUserIdentifier":{"type":"string","description":"Opaque partner-generated identifier for the acting user. Used only to resolve or corroborate the user; it is not stored on the pledge or returned in the response.","example":"c3f8b2e4-9d1a-4f6b-8e2c-7a5d90c41b3f","minLength":8,"maxLength":64,"pattern":"^[\\x20-\\x7E]{8,64}$"},"pledgedAmountMicroDollars":{"type":"string","description":"Settled cash donation amount in microdollars","example":"50000000000"},"partnerOperationId":{"type":"string","description":"Partner-owned reference for this operation","example":"a1b2c3d4-e5f6-7890-abcd-ef1234567890","maxLength":36}},"required":["receivingFundId","idempotencyKey","pledgedAmountMicroDollars","partnerOperationId"]},"SettledDafMigrationPledgeInputDto":{"type":"object","properties":{"receivingFundId":{"type":"string","description":"Unique identifier of the receiving fund","format":"uuid","example":"123e4567-e89b-12d3-a456-426614174000"},"idempotencyKey":{"type":"string","description":"Client-generated key to ensure idempotency of the request","format":"uuid","example":"123e4567-e89b-12d3-a456-426614174000"},"partnerUserIdentifier":{"type":"string","description":"Opaque partner-generated identifier for the acting user. Used only to resolve or corroborate the user; it is not stored on the pledge or returned in the response.","example":"c3f8b2e4-9d1a-4f6b-8e2c-7a5d90c41b3f","minLength":8,"maxLength":64,"pattern":"^[\\x20-\\x7E]{8,64}$"},"pledgedAmountMicroDollars":{"type":"string","description":"Partner-reported settled DAF migration amount in microdollars","example":"50000000000"},"partnerOperationId":{"type":"string","description":"Partner-owned reference for this operation","example":"a1b2c3d4-e5f6-7890-abcd-ef1234567890","maxLength":36},"settledAtUtc":{"type":"string","description":"Timestamp when the external DAF migration settled with the partner","example":"2026-06-17T18:09:17.918Z","format":"date-time"}},"required":["receivingFundId","idempotencyKey","pledgedAmountMicroDollars","partnerOperationId","settledAtUtc"]},"CashDonationPledgeInputDto":{"type":"object","properties":{"pledgedAmountMicroDollars":{"type":"string","description":"The amount to donate in microdollars (1 USD = 1,000,000 microdollars)","example":"5000000","minimum":1},"receivingFundId":{"type":"string","description":"The UUID of the fund that will receive the donation","example":"123e4567-e89b-12d3-a456-426614174000"},"idempotencyKey":{"type":"string","description":"Client-generated UUID to ensure idempotency of the request","example":"123e4567-e89b-12d3-a456-426614174000"},"partnerOperationId":{"type":"string","description":"Partner-owned reference for this operation. Required at runtime for the partner-settled cash flows, ignored otherwise.","example":"a1b2c3d4-e5f6-7890-abcd-ef1234567890","maxLength":36},"isRebalanceRequested":{"type":"boolean","description":"Whether the fund should be rebalanced after the donation is fulfilled","example":false,"default":false},"donorIdentity":{"description":"Donor identity information to be used in the donation receipt","allOf":[{"$ref":"#/components/schemas/IdentityInputDto"}]}},"required":["pledgedAmountMicroDollars","receivingFundId","idempotencyKey"]},"BeneficiaryDetailsDto":{"type":"object","properties":{"name":{"type":"string","description":"Name of the beneficiary (Endaoment)","example":"Endaoment"},"accountNumber":{"type":"string","description":"Account number for the wire transfer","example":"202384704442"},"typeOfAccount":{"type":"string","description":"Type of the bank account","example":"Checking"},"address":{"type":"string","description":"Complete mailing address of the beneficiary","example":"40 Bernal Heights Boulevard, San Francisco, CA 94110, USA"}},"required":["name","accountNumber","typeOfAccount","address"]},"ReceivingBankDetailsDto":{"type":"object","properties":{"abaRoutingNumber":{"type":"string","description":"ABA routing number for the receiving bank","example":"091311229"},"name":{"type":"string","description":"Name of the receiving bank","example":"Choice Financial Group"},"address":{"type":"string","description":"Complete mailing address of the receiving bank","example":"4501 23rd Avenue S Fargo, ND 58104, USA"}},"required":["abaRoutingNumber","name","address"]},"DomesticTransferDetailsDto":{"type":"object","properties":{"beneficiary":{"description":"Details about the beneficiary (Endaoment)","allOf":[{"$ref":"#/components/schemas/BeneficiaryDetailsDto"}]},"receivingBank":{"description":"Details about the receiving bank","allOf":[{"$ref":"#/components/schemas/ReceivingBankDetailsDto"}]}},"required":["beneficiary","receivingBank"]},"InternationalReceivingBankDetailsDto":{"type":"object","properties":{"swiftBicCode":{"type":"string","description":"SWIFT/BIC code of the receiving bank","example":"CHFGUS44021"},"abaRoutingNumber":{"type":"string","description":"ABA routing number for the receiving bank","example":"091311229"},"name":{"type":"string","description":"Name of the receiving bank","example":"Choice Financial Group"},"address":{"type":"string","description":"Complete mailing address of the receiving bank","example":"4501 23rd Avenue S Fargo, ND 58104, USA"}},"required":["swiftBicCode","abaRoutingNumber","name","address"]},"InternationalBeneficiaryDetailsDto":{"type":"object","properties":{"ibanAccountNumber":{"type":"string","description":"IBAN or Account number for the wire transfer","example":"202384704442"},"name":{"type":"string","description":"Name of the beneficiary (Endaoment)","example":"Endaoment"},"address":{"type":"string","description":"Complete mailing address of the beneficiary","example":"40 Bernal Heights Boulevard, San Francisco, CA 94110, USA"}},"required":["ibanAccountNumber","name","address"]},"InternationalTransferDetailsDto":{"type":"object","properties":{"receivingBank":{"description":"Details about the receiving bank","allOf":[{"$ref":"#/components/schemas/InternationalReceivingBankDetailsDto"}]},"beneficiary":{"description":"Details about the beneficiary (Endaoment)","allOf":[{"$ref":"#/components/schemas/InternationalBeneficiaryDetailsDto"}]}},"required":["receivingBank","beneficiary"]},"UpdateTransactionHashDto":{"type":"object","properties":{"transactionHash":{"type":"string","description":"Transaction hash proving that the asset was sent to the entity","example":"0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef"}},"required":["transactionHash"]},"PartnerOrgAddressDto":{"type":"object","properties":{"line1":{"type":"string","nullable":true},"line2":{"type":"string","nullable":true},"city":{"type":"string","nullable":true},"state":{"type":"string","nullable":true},"postalCode":{"type":"string","nullable":true},"country":{"type":"string","nullable":true}},"required":["line1","line2","city","state","postalCode","country"]},"PartnerOrgDetailsDto":{"type":"object","properties":{"ein":{"type":"string","nullable":true},"address":{"$ref":"#/components/schemas/PartnerOrgAddressDto"}},"required":["ein","address"]},"PartnerPersonAddressDto":{"type":"object","properties":{"line1":{"type":"string"},"line2":{"type":"string","nullable":true},"city":{"type":"string"},"state":{"type":"string"},"postalCode":{"type":"string"},"country":{"type":"string"}},"required":["line1","line2","city","state","postalCode","country"]},"PartnerFundAdvisorDto":{"type":"object","properties":{"firstName":{"type":"string"},"lastName":{"type":"string"},"email":{"type":"string"},"address":{"$ref":"#/components/schemas/PartnerPersonAddressDto"}},"required":["firstName","lastName","email","address"]},"PartnerFundDetailsDto":{"type":"object","properties":{"advisor":{"$ref":"#/components/schemas/PartnerFundAdvisorDto"}},"required":["advisor"]},"PartnerEntityLabelDto":{"type":"object","properties":{"name":{"type":"string"},"id":{"type":"string","format":"uuid"},"type":{"type":"string","enum":["fund","org","subproject"]},"org":{"nullable":true,"type":"object","allOf":[{"$ref":"#/components/schemas/PartnerOrgDetailsDto"}]},"fund":{"nullable":true,"type":"object","allOf":[{"$ref":"#/components/schemas/PartnerFundDetailsDto"}]}},"required":["name","id","type"]},"PartnerDonorDto":{"type":"object","properties":{"fullName":{"type":"string"},"email":{"type":"string"},"address":{"$ref":"#/components/schemas/PartnerPersonAddressDto"}},"required":["fullName","email","address"]},"PartnerGrantDto":{"type":"object","properties":{"description":{"type":"string"},"instructions":{"type":"string","nullable":true},"recommender":{"type":"string","nullable":true}},"required":["description","instructions","recommender"]},"PartnerAsyncTransferReceiptDto":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"from":{"$ref":"#/components/schemas/PartnerEntityLabelDto"},"to":{"$ref":"#/components/schemas/PartnerEntityLabelDto"},"donor":{"$ref":"#/components/schemas/PartnerDonorDto"},"grant":{"nullable":true,"type":"object","allOf":[{"$ref":"#/components/schemas/PartnerGrantDto"}]},"totalAmountUsdc":{"type":"string"},"endaomentFeeUsdc":{"type":"string"},"proceedsUsdc":{"type":"string"},"createdAtDateUtc":{"type":"string","format":"date-time"},"status":{"type":"string","enum":["Pending","Completed","Cancelled","Reversed"]},"completedAtDateUtc":{"type":"string","format":"date-time","nullable":true},"completedTransferId":{"type":"string","format":"uuid","nullable":true}},"required":["id","from","to","donor","totalAmountUsdc","endaomentFeeUsdc","proceedsUsdc","createdAtDateUtc","status","completedAtDateUtc","completedTransferId"]},"PartnerTransferReceiptDto":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"from":{"$ref":"#/components/schemas/PartnerEntityLabelDto"},"to":{"$ref":"#/components/schemas/PartnerEntityLabelDto"},"donor":{"$ref":"#/components/schemas/PartnerDonorDto"},"grant":{"nullable":true,"type":"object","allOf":[{"$ref":"#/components/schemas/PartnerGrantDto"}]},"totalAmountUsdc":{"type":"string"},"endaomentFeeUsdc":{"type":"string"},"proceedsUsdc":{"type":"string"},"createdAtDateUtc":{"type":"string","format":"date-time"},"status":{"type":"string","enum":["Pending","Completed","Cancelled","Reversed"]},"completedAtDateUtc":{"type":"string","format":"date-time"}},"required":["id","from","to","donor","totalAmountUsdc","endaomentFeeUsdc","proceedsUsdc","createdAtDateUtc","status","completedAtDateUtc"]},"PartnerDonationPledgeReceiptDto":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"outcome":{"type":"string","enum":["Pending","AwaitingAssets","OnRamping","Success","Failure"]},"destinationEntity":{"$ref":"#/components/schemas/PartnerEntityLabelDto"},"donor":{"$ref":"#/components/schemas/PartnerDonorDto"},"netDonationUsdc":{"type":"string","nullable":true},"protocolFeesUsdc":{"type":"string","nullable":true},"initiatedAtUtc":{"type":"string","format":"date-time"},"completedAtUtc":{"type":"string","format":"date-time","nullable":true}},"required":["id","outcome","destinationEntity","donor","netDonationUsdc","protocolFeesUsdc","initiatedAtUtc","completedAtUtc"]},"PartnerTokenInfoDto":{"type":"object","properties":{"name":{"type":"string"},"symbol":{"type":"string"},"decimals":{"type":"number"}},"required":["name","symbol","decimals"]},"PartnerDonationReceiptDto":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"donatingTo":{"$ref":"#/components/schemas/PartnerEntityLabelDto"},"donor":{"$ref":"#/components/schemas/PartnerDonorDto"},"inputAmount":{"type":"string"},"token":{"$ref":"#/components/schemas/PartnerTokenInfoDto"},"usdcAmount":{"type":"string"},"endaomentFeesUsdc":{"type":"string"},"proceedsUsdc":{"type":"string"},"initiatedAtDateUtc":{"type":"string","format":"date-time"},"status":{"type":"string","enum":["Completed"]},"completedAtDateUtc":{"type":"string","format":"date-time"}},"required":["id","donatingTo","donor","inputAmount","token","usdcAmount","endaomentFeesUsdc","proceedsUsdc","initiatedAtDateUtc","status","completedAtDateUtc"]},"DeterminationLetterUploadResultDto":{"type":"object","properties":{"storageKey":{"type":"string","description":"Storage key to include in the report submission request body","example":"determination-letters/550e8400-e29b-41d4-a716-446655440000/My_Letter.pdf"}},"required":["storageKey"]},"SubmitMissingOrgReportDto":{"type":"object","properties":{"ein":{"type":"string","description":"EIN of the reported organization, with or without hyphen","example":"12-3456789"},"organizationName":{"type":"string","description":"Name of the reported organization","example":"Example Nonprofit"},"contactEmail":{"type":"string","description":"Email address of the person submitting the report","example":"submitter@example.org"},"websiteUrl":{"type":"string","description":"Optional website URL of the reported organization","example":"https://example.org"},"additionalDetails":{"type":"string","description":"Optional free-text notes from the submitter","example":"We are a church in Curitiba, Brazil."},"determinationLetterStorageKey":{"type":"string","description":"Storage key returned by the determination letter upload endpoint","example":"determination-letters/550e8400-e29b-41d4-a716-446655440000/My_Letter.pdf"}},"required":["ein","organizationName","contactEmail"]},"MissingOrgReportCreatedDto":{"type":"object","properties":{"id":{"type":"string","description":"Missing org report UUID","example":"550e8400-e29b-41d4-a716-446655440000"}},"required":["id"]},"SubmitTechPlatformMissingOrgReportDto":{"type":"object","properties":{"ein":{"type":"string","description":"EIN of the reported organization, with or without hyphen","example":"12-3456789"},"organizationName":{"type":"string","description":"Name of the reported organization","example":"Example Nonprofit"},"contactEmail":{"type":"string","description":"Email address of the person submitting the report","example":"submitter@example.org"},"websiteUrl":{"type":"string","description":"Optional website URL of the reported organization","example":"https://example.org"},"additionalDetails":{"type":"string","description":"Optional free-text notes from the submitter","example":"We are a church in Curitiba, Brazil."},"determinationLetterStorageKey":{"type":"string","description":"Storage key returned by the determination letter upload endpoint","example":"determination-letters/550e8400-e29b-41d4-a716-446655440000/My_Letter.pdf"},"determinationLetterUrl":{"type":"string","description":"External determination letter URL provided by an integrator","example":"https://example.org/determination-letter.pdf"}},"required":["ein","organizationName","contactEmail"]},"MissingOrgReportStatusDto":{"type":"object","properties":{"id":{"type":"string","description":"Missing org report UUID","example":"550e8400-e29b-41d4-a716-446655440000"},"ein":{"type":"string","description":"EIN of the reported organization, normalized to 9 digits","example":"123456789"},"organizationName":{"type":"string","description":"Name of the reported organization","example":"Example Nonprofit"},"status":{"type":"string","description":"Current status of the report","enum":["submitted","approved","rejected"],"example":"submitted"},"resolvedOrgId":{"type":"string","description":"Resolved org UUID, present only when the report is approved","example":"550e8400-e29b-41d4-a716-446655440001"},"rejectionReason":{"type":"string","description":"Free-text rejection reason, present only when the report is rejected","example":"Organization is not eligible for onboarding"}},"required":["id","ein","organizationName","status"]},"OAuthTokenRequestDto":{"oneOf":[{"type":"object","required":["grant_type","code","redirect_uri","code_verifier"],"properties":{"grant_type":{"type":"string","enum":["authorization_code"]},"code":{"type":"string","description":"Authorization code from `/auth` callback."},"redirect_uri":{"type":"string","format":"uri"},"code_verifier":{"type":"string","description":"PKCE code verifier."},"client_id":{"type":"string"},"client_secret":{"type":"string"}}},{"type":"object","required":["grant_type","refresh_token"],"properties":{"grant_type":{"type":"string","enum":["refresh_token"]},"refresh_token":{"type":"string"},"client_id":{"type":"string"},"client_secret":{"type":"string"}}}]},"OAuthTokenResponseDto":{"type":"object","properties":{"access_token":{"type":"string"},"token_type":{"type":"string","example":"Bearer"},"expires_in":{"type":"integer"},"refresh_token":{"type":"string"},"scope":{"type":"string"},"id_token":{"type":"string"}}},"OAuthTokenRevocationRequestDto":{"type":"object","required":["token"],"properties":{"token":{"type":"string","description":"Access or refresh token to revoke."},"token_type_hint":{"type":"string","enum":["access_token","refresh_token"]},"client_id":{"type":"string"},"client_secret":{"type":"string"}}}}},"x-endaoment-mintlify-navigation":{"pages":[{"group":"Partner Endpoints","pages":["GET /v1/activity/partner/fund/{id}","GET /v1/funds/partner/{id}","GET /v1/receipts/partner/donation/{id}","GET /v1/receipts/partner/donation-pledge/{id}","GET /v1/receipts/partner/transfer/async/{id}","GET /v1/receipts/partner/transfer/liquidated/{id}","GET /v1/transfers/grants/partner/fund/{id}","POST /v1/auth/partner/users","POST /v1/donation-pledges/partner/cash-settled","POST /v1/donation-pledges/partner/daf-migration-settled","POST /v1/donation-pledges/partner/stock-settled","POST /v1/funds/partner","POST /v1/missing-org-reports/tech-platform","POST /v1/transfers/partner/grant-submissions"]},{"group":"Authentication","pages":["GET /auth","GET /session/end","GET /v1/auth/whoami","POST /token","POST /token/revocation"]},{"group":"Funds","pages":["GET /v1/funds/community","GET /v1/funds/featured","GET /v1/funds/mine","GET /v1/funds/{id}","GET /v1/funds/{id}/collaborators","POST /v1/funds","PUT /v1/funds/{id}"]},{"group":"Donations","pages":["GET /v1/donation-pledges/wire/details/domestic","GET /v1/donation-pledges/wire/details/international","GET /v1/donations/total-impact","GET /v2/tokens","POST /v1/donation-pledges/crypto","POST /v1/donation-pledges/daf-migration","POST /v1/donation-pledges/wire","POST /v2/donation-pledges/stock","PATCH /v1/donation-pledges/{id}/transaction-hash"]},{"group":"Portfolios","pages":["GET /v1/portfolios"]},{"group":"Nonprofit Organizations","pages":["GET /v1/missing-org-reports/{id}","GET /v1/orgs/counts","GET /v1/orgs/ein/{ein}","GET /v1/orgs/ein/{ein}/check","GET /v1/orgs/ein/{ein}/subprojects","GET /v1/orgs/{id}/distributions","GET /v1/subprojects/search","GET /v2/orgs/search","POST /v1/missing-org-reports","POST /v1/missing-org-reports/determination-letter"]},{"group":"Grant Transfers","pages":["GET /v1/transfers/grants/fund/{id}","GET /v1/transfers/grants/total","POST /v1/transfers/async-entity-transfers","POST /v1/transfers/async-entity-transfers/{id}/cancel","POST /v1/transfers/async-grants","POST /v1/transfers/async-grants/{id}/cancel"]},{"group":"Collaboration","pages":["GET /v1/recommendations/by-me","GET /v1/recommendations/for-me","GET /v1/recommendations/fund/{fundId}","GET /v1/recommendations/{id}","POST /v1/funds/{id}/collaborators/trust","POST /v1/recommendations/donation","POST /v1/recommendations/grant","POST /v1/recommendations/pledge-crypto","POST /v1/recommendations/trade","POST /v2/recommendations/pledge-stock","PUT /v1/recommendations/{id}/dismiss","DELETE /v1/funds/{id}/collaborators/{userId}"]},{"group":"Activity","pages":["GET /v1/activity/featured","GET /v1/activity/fund/{id}","GET /v1/activity/mine","GET /v1/activity/org/{id}","GET /v1/activity/portfolio/{id}","GET /v1/activity/subproject/{id}"]}]}}