{"openapi":"3.0.0","paths":{"/v2/tokens":{"get":{"operationId":"TokensController_getSupportedTokensV2","summary":"Get tokens supported by Endaoment","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    ","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"}}}}},"tags":["Tokens"]}},"/v1/tokens/{id}/decimals":{"patch":{"operationId":"TokensController_updateTokenDecimals","summary":"Update token decimals and scale related entities","description":"\n    Updates the decimal places for a token and automatically scales all related donation and pledge amounts.\n    This endpoint is restricted to users with the maintainer role.\n    The operation is atomic - if any step fails, all changes are rolled back.\n    ","parameters":[{"name":"id","required":true,"in":"path","description":"Token ID","example":1,"schema":{"type":"number"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateTokenDecimalsInputDto"}}}},"responses":{"200":{"description":"Token decimals successfully updated with detailed report","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateTokenDecimalsResponseDto"}}}}},"tags":["Tokens"]}},"/v2/orgs/search":{"get":{"operationId":"OrgsController_searchOrgs","summary":"Search organizations","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    ","parameters":[{"name":"searchTerm","required":false,"in":"query","description":"Full-text search term to find organizations by name or EIN","example":"Red Cross","schema":{"type":"string"}},{"name":"nteeMajorCodes","required":false,"in":"query","description":"Comma-separated list of NTEE Major Codes to filter organizations by","example":"A,B,C","schema":{"type":"string"}},{"name":"nteeMinorCodes","required":false,"in":"query","description":"Comma-separated list of NTEE Minor Codes to filter organizations by","example":"01,02,03","schema":{"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.","example":"USA,CAN","schema":{"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","example":"CA,NY,TX","schema":{"type":"string"}},{"name":"status","required":false,"in":"query","description":"Comma-separated list of organization statuses to filter by. Possible values: claimed, unclaimed","example":"claimed,unclaimed","schema":{"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"}}}}}},"tags":["Organizations"]}},"/v1/orgs/ein/{ein}/check":{"get":{"operationId":"OrgsController_checkEinExists","summary":"Check whether an organization with a given EIN exists in the Endaoment database","parameters":[],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrgEinCheckDto"}}}}},"tags":["Organizations"]}},"/v1/transfers/grants/fund/{id}":{"get":{"operationId":"InternalTransfersController_getGrantsFromFund","summary":"Get all grants for a fund","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    ","parameters":[{"name":"id","required":true,"in":"path","description":"Unique identifier of the fund","example":"123e4567-e89b-12d3-a456-426614174000","schema":{"format":"uuid","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"}},"tags":["Transfers"],"security":[{"bearer":[]}]}},"/v1/transfers/grants/total":{"get":{"operationId":"InternalTransfersController_getTotalGrants","summary":"Get total amount granted","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    ","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)"}}}}},"tags":["Transfers"]}},"/v1/transfers/async-grants":{"post":{"operationId":"InternalTransfersController_createAsyncGrant","summary":"Create an async grant request","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    ","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"}},"tags":["Transfers"],"security":[{"bearer":[]}]}},"/v1/transfers/async-grants/{id}/cancel":{"post":{"operationId":"InternalTransfersController_cancelAsyncGrant","summary":"Cancel an async grant request","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    ","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)"}},"tags":["Transfers"],"security":[{"bearer":[]}]}},"/v1/transfers/async-entity-transfers":{"post":{"operationId":"InternalTransfersController_createAsyncEntityTransfer","summary":"Create an async entity transfer request","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    ","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"}},"tags":["Transfers"],"security":[{"bearer":[]}]}},"/v1/transfers/async-entity-transfers/{id}/cancel":{"post":{"operationId":"InternalTransfersController_cancelAsyncEntityTransfer","summary":"Cancel an async entity transfer request","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    ","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"}},"tags":["Transfers"],"security":[{"bearer":[]}]}},"/v1/funds/featured":{"get":{"operationId":"FundsController_getFeaturedFunds","summary":"Get featured funds","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    ","parameters":[],"responses":{"200":{"description":"List of featured funds successfully retrieved","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/FundListingDto"}}}}}},"tags":["Funds"]}},"/v1/funds/community":{"get":{"operationId":"FundsController_getCommunityFunds","summary":"Get community funds","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    ","parameters":[{"name":"count","required":false,"in":"query","description":"Number of items to return per page","example":10,"schema":{"minimum":1,"default":10,"type":"number"}},{"name":"offset","required":false,"in":"query","description":"Number of items to skip (for pagination)","example":0,"schema":{"minimum":0,"default":0,"type":"number"}}],"responses":{"200":{"description":"List of community funds successfully retrieved","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/FundListingDto"}}}}}},"tags":["Funds"]}},"/v1/funds/mine":{"get":{"operationId":"FundsController_getMyFunds","summary":"Get all funds managed by the authenticated user","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    ","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"}},"tags":["Funds"],"security":[{"bearer":[]}]}},"/v1/funds/{id}":{"get":{"operationId":"FundsController_getFund","summary":"Get fund by ID","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    ","parameters":[{"name":"id","required":true,"in":"path","description":"The unique identifier of the fund","example":"123e4567-e89b-12d3-a456-426614174000","schema":{"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"}},"tags":["Funds"],"security":[{"bearer":[]}]},"put":{"operationId":"FundsController_updateFund","summary":"Update a fund","description":"\n    Updates an existing fund's information\n    ","parameters":[{"name":"id","required":true,"in":"path","description":"The unique identifier of the fund to update","example":"123e4567-e89b-12d3-a456-426614174000","schema":{}}],"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"}},"tags":["Funds"],"security":[{"bearer":[]}]}},"/v1/funds/{id}/collaborators":{"get":{"operationId":"FundsController_getFundCollaborators","summary":"Get fund collaborators","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    ","parameters":[{"name":"id","required":true,"in":"path","description":"The unique identifier of the fund","example":"123e4567-e89b-12d3-a456-426614174000","schema":{"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"}},"tags":["Funds"],"security":[{"bearer":[]}]}},"/v1/funds/partner":{"post":{"operationId":"FundsController_processPartnerFund","summary":"Create a partner-managed fund","description":"Creates a partner-managed DAF using the acting user identity and partner account-number rules.","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PartnerCreateFundInputDto"}}}},"responses":{"200":{"description":"The fund has been successfully created and processed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FundDetailsDto"}}}}},"tags":["Funds"],"security":[{"bearer":[]}]}},"/v1/funds":{"post":{"operationId":"FundsController_processFund","summary":"Create a new fund","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      ","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"}},"tags":["Funds"],"security":[{"bearer":[]}]}},"/v1/funds/{id}/collaborators/trust":{"post":{"operationId":"FundsController_addFundCollaboratorTrust","summary":"Add a trusted collaborator to a fund","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    ","parameters":[{"name":"id","required":true,"in":"path","description":"The unique identifier of the fund","example":"123e4567-e89b-12d3-a456-426614174000","schema":{"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"}},"tags":["Funds"],"security":[{"bearer":[]}]}},"/v1/funds/{id}/collaborators/{userId}":{"delete":{"operationId":"FundsController_deleteFundCollaborator","summary":"Remove a collaborator from a fund","description":"Removes a collaborator's access to a specific fund. Only the fund manager can perform this action.","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"}},"tags":["Funds"],"security":[{"bearer":[]}]}},"/v1/recommendations/by-me":{"get":{"operationId":"RecommendationsController_getRecommendationByUser","summary":"Get recommendations created by the current user","description":"Retrieves all recommendations created by the currently authenticated user.","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"}},"tags":["Recommendations"],"security":[{"bearer":[]}]}},"/v1/recommendations/for-me":{"get":{"operationId":"RecommendationsController_getRecommendationForUser","summary":"Get recommendations for the current user","description":"Retrieves all recommendations directed to the currently authenticated user.","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"}},"tags":["Recommendations"],"security":[{"bearer":[]}]}},"/v1/recommendations/fund/{fundId}":{"get":{"operationId":"RecommendationsController_getRecommendationsForFund","summary":"Get recommendations for a specific fund","description":"Retrieves all recommendations associated with a specific fund ID that the user has access to.","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"}},"tags":["Recommendations"],"security":[{"bearer":[]}]}},"/v1/recommendations/{id}":{"get":{"operationId":"RecommendationsController_getRecommendationDetailsById","summary":"Get recommendation details by ID","description":"Retrieves the details of a specific recommendation by its ID.","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"}},"tags":["Recommendations"],"security":[{"bearer":[]}]}},"/v1/recommendations/grant":{"post":{"operationId":"RecommendationsController_createGrantRecommendation","summary":"Create a crypto donation recommendation","description":"Creates a recommendation for donating cryptocurrency.","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"}},"tags":["Recommendations"],"security":[{"bearer":[]}]}},"/v1/recommendations/donation":{"post":{"operationId":"RecommendationsController_createDonationRecommendation","summary":"Create a crypto donation recommendation","description":"Creates a recommendation for donating cryptocurrency.","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"}},"tags":["Recommendations"],"security":[{"bearer":[]}]}},"/v1/recommendations/trade":{"post":{"operationId":"RecommendationsController_createTradeRecommendation","summary":"Create a portfolio trade recommendation","description":"Creates a recommendation for a portfolio trade (buy/sell).","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"}},"tags":["Recommendations"],"security":[{"bearer":[]}]}},"/v1/recommendations/pledge-crypto":{"post":{"operationId":"RecommendationsController_createCryptoPledgeRecommendation","summary":"Create a crypto pledge recommendation","description":"Creates a recommendation for donating cryptocurrency.","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"}},"tags":["Recommendations"],"security":[{"bearer":[]}]}},"/v2/recommendations/pledge-stock":{"post":{"operationId":"RecommendationsController_createStockPledgeRecommendationV2","summary":"Create a stock pledge recommendation (V2)","description":"Creates a recommendation for donating stock.","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\""}},"tags":["Recommendations"],"security":[{"bearer":[]}]}},"/v1/recommendations/{id}/dismiss":{"put":{"operationId":"RecommendationsController_dismissRecommendation","summary":"Dismiss a recommendation","description":"Marks a recommendation as dismissed by the user.","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"}},"tags":["Recommendations"],"security":[{"bearer":[]}]}},"/v1/activity/org/{id}":{"get":{"operationId":"ActivityController_getRecentOrgActivity","summary":"Get recent activity for an organization","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    ","parameters":[{"name":"count","required":false,"in":"query","description":"Number of items to return per page","example":10,"schema":{"minimum":1,"default":10,"type":"number"}},{"name":"offset","required":false,"in":"query","description":"Number of items to skip (for pagination)","example":0,"schema":{"minimum":0,"default":0,"type":"number"}},{"name":"id","required":true,"in":"path","description":"Unique identifier of the organization","example":"123e4567-e89b-12d3-a456-426614174000","schema":{"format":"uuid","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"]}]}}}}},"tags":["Activity"],"security":[{"bearer":[]}]}},"/v1/activity/fund/{id}":{"get":{"operationId":"ActivityController_getRecentFundActivity","summary":"Get recent activity for a fund","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    ","parameters":[{"name":"count","required":false,"in":"query","description":"Number of items to return per page","example":10,"schema":{"minimum":1,"default":10,"type":"number"}},{"name":"offset","required":false,"in":"query","description":"Number of items to skip (for pagination)","example":0,"schema":{"minimum":0,"default":0,"type":"number"}},{"name":"id","required":true,"in":"path","description":"Unique identifier of the fund","example":"123e4567-e89b-12d3-a456-426614174000","schema":{"format":"uuid","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"}},"tags":["Activity"],"security":[{"bearer":[]}]}},"/v1/activity/featured":{"get":{"operationId":"ActivityController_getFeaturedRecentActivity","summary":"Get featured activities across the platform","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    ","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"}}}}}}}},"tags":["Activity"],"security":[{"bearer":[]}]}},"/v1/activity/mine":{"get":{"operationId":"ActivityController_getUserRecentActivity","summary":"Get current user's activities","description":"Returns a list of activities associated with the authenticated user","parameters":[{"name":"count","required":false,"in":"query","description":"Number of items to return per page","example":10,"schema":{"minimum":1,"default":10,"type":"number"}},{"name":"offset","required":false,"in":"query","description":"Number of items to skip (for pagination)","example":0,"schema":{"minimum":0,"default":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"]}]}}}}},"tags":["Activity"],"security":[{"bearer":[]}]}},"/v1/activity/portfolio/{id}":{"get":{"operationId":"ActivityController_getRecentPortfolioActivity","summary":"Get portfolio activities","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    ","parameters":[{"name":"count","required":false,"in":"query","description":"Number of items to return per page","example":10,"schema":{"minimum":1,"default":10,"type":"number"}},{"name":"offset","required":false,"in":"query","description":"Number of items to skip (for pagination)","example":0,"schema":{"minimum":0,"default":0,"type":"number"}},{"name":"id","required":true,"in":"path","description":"Unique identifier of the portfolio","example":"123e4567-e89b-12d3-a456-426614174000","schema":{"format":"uuid","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"]}]}}}}},"tags":["Activity"],"security":[{"bearer":[]}]}},"/v1/activity/subproject/{id}":{"get":{"operationId":"ActivityController_getRecentSubprojectActivity","summary":"Get recent activity for a subproject","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    ","parameters":[{"name":"count","required":false,"in":"query","description":"Number of items to return per page","example":10,"schema":{"minimum":1,"default":10,"type":"number"}},{"name":"offset","required":false,"in":"query","description":"Number of items to skip (for pagination)","example":0,"schema":{"minimum":0,"default":0,"type":"number"}},{"name":"id","required":true,"in":"path","description":"Unique identifier of the subproject","example":"123e4567-e89b-12d3-a456-426614174000","schema":{"format":"uuid","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"]}]}}}}},"tags":["Activity"],"security":[{"bearer":[]}]}},"/v1/donation-pledges/crypto":{"post":{"operationId":"DonationPledgesController_createCryptoPledge","summary":"Create a crypto donation pledge","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    ","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"}},"tags":["Donation Pledges"],"security":[{"bearer":[]}]}},"/v2/donation-pledges/stock":{"post":{"operationId":"DonationPledgesController_createStockPledge","summary":"Create a stock donation pledge","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    ","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\""}},"tags":["Donation Pledges"],"security":[{"bearer":[]}]}},"/v1/donation-pledges/stock-settled":{"post":{"operationId":"DonationPledgesController_createSettledStockPledge","summary":"Create a partner-settled stock donation pledge","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    - An Endaoment user via the `x-endaoment-user-id` header\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    ","parameters":[{"name":"x-endaoment-user-id","in":"header","description":"UUID of the Endaoment user the partner is acting on behalf of","required":true,"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"},"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"}},"tags":["Donation Pledges"],"security":[{"ApiKey":[]}]}},"/v1/donation-pledges/cash-settled":{"post":{"operationId":"DonationPledgesController_createSettledCashPledge","summary":"Create a partner-settled cash donation pledge","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    - An Endaoment user via the `x-endaoment-user-id` header\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    ","parameters":[{"name":"x-endaoment-user-id","in":"header","description":"UUID of the Endaoment user the partner is acting on behalf of","required":true,"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"},"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"}},"tags":["Donation Pledges"],"security":[{"ApiKey":[]}]}},"/v1/donation-pledges/daf-migration":{"post":{"operationId":"DonationPledgesController_createDafMigrationPledge","summary":"Create a DAF migration pledge","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    ","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"}},"tags":["Donation Pledges"],"security":[{"bearer":[]}]}},"/v1/donation-pledges/wire":{"post":{"operationId":"DonationPledgesController_createWirePledge","summary":"Create a wire transfer donation pledge","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    ","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"}},"tags":["Donation Pledges"],"security":[{"bearer":[]}]}},"/v1/donation-pledges/wire/details/domestic":{"get":{"operationId":"DonationPledgesController_getDomesticPledgeDetails","summary":"Get domestic wire transfer details","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    ","parameters":[],"responses":{"200":{"description":"Domestic wire transfer details successfully retrieved","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DomesticTransferDetailsDto"}}}}},"tags":["Donation Pledges"]}},"/v1/donation-pledges/wire/details/international":{"get":{"operationId":"DonationPledgesController_getInternationalPledgeDetails","summary":"Get international wire transfer details","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    ","parameters":[],"responses":{"200":{"description":"International wire transfer details successfully retrieved","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternationalTransferDetailsDto"}}}}},"tags":["Donation Pledges"]}},"/v1/donation-pledges/{id}/complete":{"post":{"operationId":"DonationPledgesController_completePledge","summary":"Complete a donation pledge","description":"\n    Completes a donation pledge by liquidating it, processing the donation, and returning the resulted donation.\n\n    This endpoint:\n    - Processes the pledge completion and returns the resulting donations\n    - All donations will have the amount of 10 USDC\n    ","parameters":[{"name":"x-api-key","in":"header","description":"API key used for authentication and authorization","required":true,"schema":{"type":"string"}},{"name":"id","required":true,"in":"path","description":"The unique identifier of the fund","example":"123e4567-e89b-12d3-a456-426614174000","schema":{}}],"responses":{"201":{"description":"Pledge successfully completed","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/DonationDto"}}}}},"401":{"description":"Unauthorized: Missing or invalid API key, or organization does not have trustedCollaboratorApiAccess configured"},"404":{"description":"Pledge not found or endpoint blocked in production"}},"tags":["Donation Pledges"],"security":[{"ApiKey":[]}]}},"/v1/donation-pledges/{id}/transaction-hash":{"patch":{"operationId":"DonationPledgesController_updateTransactionHash","summary":"Update transaction hash for a crypto donation pledge","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    ","parameters":[{"name":"id","required":true,"in":"path","description":"The unique identifier of the donation pledge","example":"123e4567-e89b-12d3-a456-426614174000","schema":{}}],"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"}},"tags":["Donation Pledges"],"security":[{"bearer":[]}]}},"/v1/missing-org-reports/determination-letter":{"post":{"operationId":"MissingOrgReportController_uploadDeterminationLetter","summary":"Upload a missing-org determination letter PDF","parameters":[],"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeterminationLetterUploadResultDto"}}}}},"tags":["Missing Org Reports"]}},"/v1/missing-org-reports":{"post":{"operationId":"MissingOrgReportController_submitReport","summary":"Submit a missing org report","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"}},"tags":["Missing Org Reports"]}},"/v1/missing-org-reports/tech-platform":{"post":{"operationId":"MissingOrgReportController_submitTechPlatformReport","summary":"Submit a missing org report from an authenticated tech platform","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"}},"tags":["Missing Org Reports"]}},"/v1/missing-org-reports/{id}":{"get":{"operationId":"MissingOrgReportController_getReportStatus","summary":"Get the status of a missing org report","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"}},"tags":["Missing Org Reports"]}},"/v1/missing-org-reports/{id}/status":{"patch":{"operationId":"MissingOrgReportController_updateReportStatus","summary":"Update the status of a missing org report","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateMissingOrgReportStatusDto"}}}},"responses":{"204":{"description":""}},"tags":["Missing Org Reports"]}}},"info":{"title":"Endaoment API","description":"The official Endaoment API endpoints","version":"0.0.1","contact":{}},"tags":[],"servers":[{"url":"https://api.endaoment.org","description":"Production"}],"components":{"securitySchemes":{"bearer":{"scheme":"bearer","bearerFormat":"JWT","type":"http"}},"schemas":{"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"]},"UpdateTokenDecimalsInputDto":{"type":"object","properties":{"newDecimals":{"type":"number","description":"New decimal places for the token","minimum":1,"maximum":32,"example":18}},"required":["newDecimals"]},"Token":{"type":"object","properties":{}},"PrecisionLossItemDto":{"type":"object","properties":{"oldInputAmount":{"type":"string","description":"Original input amount before scaling","example":"1000000000000000001"},"newInputAmount":{"type":"string","description":"New input amount after scaling (with precision loss)","example":"1000000"},"entityId":{"type":"string","description":"ID of the entity that was updated","example":"a1b2c3d4-e5f6-7890-abcd-ef1234567890"},"entityName":{"type":"string","description":"Name of the entity class that was updated","example":"Donation","enum":["Donation","CryptoDonationPledge"]}},"required":["oldInputAmount","newInputAmount","entityId","entityName"]},"UpdateTokenDecimalsResponseDto":{"type":"object","properties":{"token":{"description":"The updated token","allOf":[{"$ref":"#/components/schemas/Token"}]},"donationsUpdated":{"type":"number","description":"Number of donations updated without precision loss","example":5},"cryptoPledgesUpdated":{"type":"number","description":"Number of crypto pledges updated without precision loss","example":3},"itemsWithPrecisionLoss":{"description":"Array of items that experienced precision loss during the update","type":"array","items":{"$ref":"#/components/schemas/PrecisionLossItemDto"}}},"required":["token","donationsUpdated","cryptoPledgesUpdated","itemsWithPrecisionLoss"]},"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"]},"OrgContact":{"type":"object","properties":{"email":{"type":"string","description":"Contact email address","example":"contact@organization.org","nullable":true},"name":{"type":"string","description":"Contact person name","example":"John Doe","nullable":true},"phone":{"type":"string","description":"Contact phone number","example":"+1 (555) 123-4567","nullable":true},"title":{"type":"string","description":"Contact person title or role","example":"Executive Director","nullable":true}},"required":["email","name","phone","title"]},"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},"contactInfo":{"description":"Contact information for the organization","allOf":[{"$ref":"#/components/schemas/OrgContact"}]},"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","contactInfo","website"]},"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"]},"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"}]},"contactInfo":{"description":"Contact information for the organization","allOf":[{"$ref":"#/components/schemas/OrgContact"}]},"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","contactInfo","website","logo","nteeCode","nteeDescription","featuredIndex","claimedDateUtc","claimedType","claimed","contractAddress","deployments"]},"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"]},"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,"allOf":[{"$ref":"#/components/schemas/OrgSimpleListingDto"}]},"destinationSubproject":{"description":"Subproject receiving the grant. Null if the grant is for an organization.","nullable":true,"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,"allOf":[{"$ref":"#/components/schemas/ImpactPoolDetailsDto"}]},"expectedDeploymentInfo":{"description":"Information needed for on-chain deployment. Only available for funds not yet deployed","nullable":true,"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"},"partnerAccountNumber":{"type":"string","description":"Partner DAF account number. Required when partner configuration requires it.","example":"ALT-123456789"}},"required":["name"]},"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"]},"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,"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,"allOf":[{"$ref":"#/components/schemas/TokenListingDto"}]},"stock":{"description":"Stock of this donation (null if it was a crypto donation)","nullable":true,"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"},"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"},"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"]},"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"]},"DonationDto":{"type":"object","properties":{"id":{"type":"string","description":"ID of the Donation","example":"9bc260c9-2724-48ac-802e-fcad3cf3fb88"},"destinationEntity":{"type":"string","description":"ID of the destination that received the donation. If this is set, all other destinations are null","example":"4cc1500a-8dd0-4543-acf0-3b5433ef7a9a"},"entityType":{"type":"object","description":"Type of the entity that received the donation","example":"org"},"transactionHash":{"type":"string","description":"Transaction hash of the donation made to the target entity.","example":"0xffa8b0ef694866c23ae004b51661215d6654068cb3e0d3afca8d077047718673"},"destinationContractAddress":{"type":"string","description":"Endaoment contract that received the donation","example":"0xa68bb66c56e99d3a8799907c02a77275a60bf4fe"},"donorUserId":{"type":"object","description":"Id of the user that made the donation. Can be null in case of anonymous donations.","example":"86a15444-e720-468d-a50d-e013ead44261"},"donorAddress":{"type":"string","description":"On-chain address that made the donation.","example":"0x18682b92bfa61e6c2c200c449fb0041124f05427"},"inputAmount":{"type":"string","description":"Input token of the donation. Denominated in the smallest currency unit of the input token. For stock donations, this will be the amount of shares donated.","example":"250000"},"inputToken":{"type":"object","description":"Input token of the donation. Will be null if donation is a stock donation.","example":{"id":1032,"symbol":"FIAT.USD","name":"US Dollar","decimals":6,"logoUrl":"https://assets.coingecko.com/coins/images/6319/thumb/USD_Coin_icon.png?1547042389","type":"Token","featured":false,"popularity":0}},"inputStock":{"type":"object","description":"Input stock of the donation. Will be null if donation is a crypto donation.","example":null},"netOutputBaseToken":{"type":"string","description":"Net Output Amount for the Donation, liquid of fees. Stored in USDC Units. 2'000'000 USDC units = 2.00 USD","example":"1"},"fee":{"type":"string","description":"Fees charged for the donation.  Stored in the smallest unit of the base token (currently USDC). 2'000'000 USDC units = 2.00 USD","example":"0"},"outputBaseToken":{"description":"Output token of the donation","example":{"id":18,"symbol":"USDC","name":"USD//C","decimals":6,"logoUrl":"https://assets.coingecko.com/coins/images/6319/thumb/USD_Coin_icon.png?1547042389","type":"EvmToken","featured":false,"popularity":0,"chainId":31337,"contractAddress":"0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48"},"allOf":[{"$ref":"#/components/schemas/TokenListingDto"}]},"createdAtUtc":{"type":"string","description":"ISO-8601 string describing the UTC Date that this donation was registered in the database","example":"2025-03-26T18:20:48.493Z"},"chainId":{"type":"object","description":"Chain ID of the Donation.","example":31337}},"required":["id","destinationEntity","entityType","transactionHash","destinationContractAddress","donorUserId","donorAddress","inputAmount","inputToken","inputStock","netOutputBaseToken","fee","outputBaseToken","createdAtUtc","chainId"]},"UpdateTransactionHashDto":{"type":"object","properties":{"transactionHash":{"type":"string","description":"Transaction hash proving that the asset was sent to the entity","example":"0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef"}},"required":["transactionHash"]},"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"]},"UpdateMissingOrgReportStatusDto":{"type":"object","properties":{"status":{"type":"string","description":"Target status for the report","enum":["approved","rejected"],"example":"approved"},"resolvedOrgId":{"type":"string","description":"Resolved org UUID. Required when status is approved","example":"550e8400-e29b-41d4-a716-446655440002"},"rejectionReason":{"type":"string","description":"Free-text rejection reason. Required when status is rejected","example":"Insufficient documentation to verify eligibility"}},"required":["status"]}}}}