{"components":{"schemas":{"CommonResponseDto":{"properties":{"success":{"type":"boolean"}},"type":"object","required":["success"]},"PublicPaginationCommonDto":{"properties":{"limit":{"maximum":100,"type":"integer","minimum":1,"default":100,"description":"Maximum number of results to return per request."},"offset":{"maximum":1000000,"type":"integer","minimum":0,"default":0,"description":"Number of results to skip for pagination."}},"type":"object"},"PublicSearchCommonDto":{"properties":{"search":{"type":"string","default":null,"description":"Search query string to filter results."},"limit":{"maximum":100,"type":"integer","minimum":1,"default":100,"description":"Maximum number of results to return per request."},"offset":{"maximum":1000000,"type":"integer","minimum":0,"default":0,"description":"Number of results to skip for pagination."}},"type":"object"},"PublicCreateThemeDto":{"properties":{"name":{"type":"string","description":"Name of the theme."},"comments":{"type":"string","description":"Optional comments for the theme."}},"type":"object","required":["name"]},"PublicAddSubthemeDto":{"properties":{"subthemeId":{"type":"string","description":"ID of the theme to add as a subtheme."}},"type":"object","required":["subthemeId"]},"PublicRemoveSubthemeDto":{"properties":{"subthemeId":{"type":"string","description":"ID of the subtheme to remove."}},"type":"object","required":["subthemeId"]},"PublicGetThemeItemsDto":{"properties":{"folderId":{"type":"string","description":"Filter items by folder ID."},"limit":{"maximum":100,"type":"integer","minimum":1,"default":100,"description":"Maximum number of results to return per request."},"offset":{"maximum":1000000,"type":"integer","minimum":0,"default":0,"description":"Number of results to skip for pagination."}},"type":"object"},"PublicCreateThemeItemDto":{"properties":{"entityId":{"type":"string","description":"ID of the entity to link to this theme."},"entityType":{"type":"string","enum":["DEAL","NOTE","CONTACT","COMPANY"],"description":"Type of entity: DEAL, NOTE, CONTACT, or COMPANY."}},"type":"object","required":["entityId","entityType"]},"PublicThemeDto":{"properties":{"id":{"pattern":"^[0-9a-fA-F]{24}$","type":"string"},"name":{"type":"string"},"comments":{"type":"string"},"isGroupTheme":{"type":"boolean"},"isSubtag":{"type":"boolean"},"createdAt":{"oneOf":[{"format":"date","type":"string"},{"format":"date-time","type":"string"}]},"updatedAt":{"oneOf":[{"format":"date","type":"string"},{"format":"date-time","type":"string"}]}},"type":"object","required":["id","name","isGroupTheme","isSubtag","createdAt","updatedAt"]},"PublicViewAllThemesDto":{"properties":{"themes":{"items":{"$ref":"#/components/schemas/PublicThemeDto"},"type":"array"}},"type":"object","required":["themes"]},"PublicThemeItemDto":{"properties":{"id":{"pattern":"^[0-9a-fA-F]{24}$","type":"string"},"title":{"type":"string"},"description":{"type":"string"},"imageUrl":{"type":"string"},"entityType":{"type":"string","description":"Entity type of the tagged item (e.g. CONTACT, COMPANY, DEAL, NOTE)."},"entityId":{"type":"string","description":"ID of the entity tagged under this theme."},"tagId":{"type":"string","description":"ID of the theme this item belongs to."},"tagFolderId":{"type":"string","description":"ID of the folder this item belongs to."},"createdAt":{"oneOf":[{"format":"date","type":"string"},{"format":"date-time","type":"string"}]},"updatedAt":{"oneOf":[{"format":"date","type":"string"},{"format":"date-time","type":"string"}]}},"type":"object","required":["id","title","entityType","entityId","tagId","tagFolderId","createdAt","updatedAt"]},"PublicViewAllThemeItemsDto":{"properties":{"items":{"items":{"$ref":"#/components/schemas/PublicThemeItemDto"},"type":"array"},"total":{"type":"integer"}},"type":"object","required":["items","total"]},"PublicThemeFolderDto":{"properties":{"id":{"pattern":"^[0-9a-fA-F]{24}$","type":"string"},"name":{"type":"string"},"entityType":{"type":"string","description":"Entity type this folder groups (e.g. CONTACT, COMPANY, DEAL, NOTE, TAG)."},"subtagId":{"type":"string","description":"ID of the subtheme if entityType is TAG."},"canDelete":{"type":"boolean"},"createdAt":{"oneOf":[{"format":"date","type":"string"},{"format":"date-time","type":"string"}]},"updatedAt":{"oneOf":[{"format":"date","type":"string"},{"format":"date-time","type":"string"}]}},"type":"object","required":["id","name","entityType","canDelete","createdAt","updatedAt"]},"PublicViewAllThemeFoldersDto":{"properties":{"folders":{"items":{"$ref":"#/components/schemas/PublicThemeFolderDto"},"type":"array"},"total":{"type":"integer"}},"type":"object","required":["folders","total"]},"PublicDealCompanyDto":{"properties":{"name":{"type":"string"},"url":{"type":"string"},"cartaIssuerId":{"type":"string","description":"Carta issuer ID associated with this company."},"cartaCorporationId":{"type":"string","description":"Carta corporation ID associated with this company."}},"type":"object"},"PublicDealPeopleDto":{"properties":{"advisers":{"items":{"type":"string"},"type":"array","description":"Array of contact IDs linked as advisers to the deal."},"introducer":{"items":{"type":"string"},"type":"array","description":"Array of contact IDs linked as introducers to the deal."},"management":{"items":{"type":"string"},"type":"array","description":"Array of contact IDs linked as management to the deal."}},"type":"object"},"PublicDealDto":{"properties":{"id":{"pattern":"^[0-9a-fA-F]{24}$","type":"string"},"company":{"$ref":"#/components/schemas/PublicDealCompanyDto"},"comment":{"type":"string"},"tags":{"items":{"type":"string"},"type":"array"},"creatorId":{"type":"string"},"pipelineId":{"type":"string"},"stageId":{"type":"string"},"addedAt":{"oneOf":[{"format":"date","type":"string"},{"format":"date-time","type":"string"}]},"createdAt":{"oneOf":[{"format":"date","type":"string"},{"format":"date-time","type":"string"}]},"updatedAt":{"oneOf":[{"format":"date","type":"string"},{"format":"date-time","type":"string"}]},"dealLead":{"type":"string"},"fields":{"type":"object"},"people":{"$ref":"#/components/schemas/PublicDealPeopleDto","description":"Contacts linked to the deal by role (advisers, introducer, management). Note: these fields may have different names on the UI."}},"type":"object","required":["id"]},"PublicViewAllDealsDto":{"properties":{"deals":{"items":{"$ref":"#/components/schemas/PublicDealDto"},"type":"array"}},"type":"object","required":["deals"]},"PublicDealCreateDto":{"properties":{"company":{"$ref":"#/components/schemas/PublicDealCompanyDto"},"comment":{"type":"string"},"tags":{"items":{"type":"string"},"type":"array"},"pipelineId":{"type":"string"},"stageId":{"type":"string"},"addedAt":{"oneOf":[{"format":"date","type":"string"},{"format":"date-time","type":"string"}]},"dealLead":{"type":"string","description":"User ID to assign as deal lead"},"fields":{"type":"object","description":"Custom field values keyed by field ID. For fields of type `company`, provide either a company ID or a domain string (e.g. `\"stripe.com\"`). For `company-list` fields, provide an array of company IDs and/or domain strings. If a domain matches an existing company in your organization, the company record is linked directly; otherwise the domain is resolved via external enrichment. For fields of type `deal`, provide a deal ID. For `contacts-list` fields, provide an array of contact IDs."},"people":{"$ref":"#/components/schemas/PublicDealPeopleDto","description":"Contacts linked to the deal by role (advisers, introducer, management). Note: these fields may have different names on the UI."}},"type":"object"},"PublicDealBatchCreateDto":{"properties":{"deals":{"items":{"$ref":"#/components/schemas/PublicDealCreateDto"},"type":"array","maxItems":100,"minItems":1,"description":"Array of deals to create. Maximum 100 items per request."}},"type":"object","required":["deals"]},"PublicDealPatchDto":{"properties":{"company":{"$ref":"#/components/schemas/PublicDealCompanyDto"},"comment":{"type":"string"},"tags":{"items":{"type":"string"},"type":"array"},"stageId":{"type":"string"},"addedAt":{"oneOf":[{"format":"date","type":"string"},{"format":"date-time","type":"string"}]},"dealLead":{"type":"string","description":"User ID to assign as deal lead"},"fields":{"type":"object","description":"Custom field values keyed by field ID. For fields of type `company`, provide either a company ID or a domain string (e.g. `\"stripe.com\"`). For `company-list` fields, provide an array of company IDs and/or domain strings. If a domain matches an existing company in your organization, the company record is linked directly; otherwise the domain is resolved via external enrichment. For fields of type `deal`, provide a deal ID. For `contacts-list` fields, provide an array of contact IDs."},"people":{"$ref":"#/components/schemas/PublicDealPeopleDto","description":"Contacts linked to the deal by role (advisers, introducer, management). Note: these fields may have different names on the UI."}},"type":"object"},"PublicDealBatchPatchItemDto":{"properties":{"id":{"pattern":"^[0-9a-fA-F]{24}$","type":"string","description":"ID of the deal to update."},"company":{"$ref":"#/components/schemas/PublicDealCompanyDto"},"comment":{"type":"string"},"tags":{"items":{"type":"string"},"type":"array"},"stageId":{"type":"string"},"addedAt":{"oneOf":[{"format":"date","type":"string"},{"format":"date-time","type":"string"}]},"dealLead":{"type":"string","description":"User ID to assign as deal lead"},"fields":{"type":"object","description":"Custom field values keyed by field ID. For fields of type `company`, provide either a company ID or a domain string (e.g. `\"stripe.com\"`). For `company-list` fields, provide an array of company IDs and/or domain strings. If a domain matches an existing company in your organization, the company record is linked directly; otherwise the domain is resolved via external enrichment. For fields of type `deal`, provide a deal ID. For `contacts-list` fields, provide an array of contact IDs."},"people":{"$ref":"#/components/schemas/PublicDealPeopleDto","description":"Contacts linked to the deal by role (advisers, introducer, management). Note: these fields may have different names on the UI."}},"type":"object","required":["id"]},"PublicDealBatchPatchDto":{"properties":{"deals":{"items":{"$ref":"#/components/schemas/PublicDealBatchPatchItemDto"},"type":"array","maxItems":100,"minItems":1,"description":"Array of deals to update. Each item must include an `id` field. Maximum 100 items per request."}},"type":"object","required":["deals"]},"PublicDealBatchResponseDto":{"properties":{"deals":{"items":{"$ref":"#/components/schemas/PublicDealDto"},"type":"array"}},"type":"object","required":["deals"]},"PublicFundraisingDto":{"properties":{"id":{"pattern":"^[0-9a-fA-F]{24}$","type":"string"},"name":{"type":"string"},"creatorId":{"type":"string"},"stageId":{"type":"string"},"createdAt":{"oneOf":[{"format":"date","type":"string"},{"format":"date-time","type":"string"}]},"updatedAt":{"oneOf":[{"format":"date","type":"string"},{"format":"date-time","type":"string"}]},"fields":{"type":"object"}},"type":"object","required":["id"]},"PublicViewAllFundraisingDto":{"properties":{"fundraising":{"items":{"$ref":"#/components/schemas/PublicFundraisingDto"},"type":"array"}},"type":"object","required":["fundraising"]},"PublicFundraisingCreateDto":{"properties":{"name":{"type":"string"},"stageId":{"type":"string"},"fields":{"type":"object","description":"Custom field values keyed by field ID. For fields of type `company`, provide either a company ID or a domain string (e.g. `\"stripe.com\"`). For `company-list` fields, provide an array of company IDs and/or domain strings. For fields of type `deal`, provide a deal ID. For `contacts-list` fields, provide an array of contact IDs."}},"type":"object","required":["name"]},"PublicFundraisingPatchDto":{"properties":{"name":{"type":"string"},"stageId":{"type":"string"},"fields":{"type":"object","description":"Custom field values keyed by field ID. For fields of type `company`, provide either a company ID or a domain string (e.g. `\"stripe.com\"`). For `company-list` fields, provide an array of company IDs and/or domain strings. For fields of type `deal`, provide a deal ID. For `contacts-list` fields, provide an array of contact IDs."}},"type":"object"},"PublicListDto":{"properties":{"listId":{"type":"string"},"listName":{"type":"string"},"folderName":{"type":"string"},"type":{"enum":["list","folder"],"type":"string"},"inside":{"items":{"$ref":"#/components/schemas/PublicListDto"},"type":"array"}},"type":"object"},"PublicViewAllListsDto":{"properties":{"lists":{"items":{"$ref":"#/components/schemas/PublicListDto"},"type":"array"}},"type":"object","required":["lists"]},"PublicContactLocationDto":{"properties":{"city":{"type":"string"},"state":{"type":"string"},"country":{"type":"string"},"coordinates":{},"location":{"type":"string"}},"type":"object"},"PublicContactYearMonthDto":{"properties":{"year":{"type":"number"},"month":{"type":"number"}},"type":"object"},"PublicContactJobDto":{"properties":{"companyName":{"type":"string"},"companyUrl":{"type":"string"},"title":{"type":"string"},"description":{"type":"string"},"startedOn":{"$ref":"#/components/schemas/PublicContactYearMonthDto"},"endedOn":{"$ref":"#/components/schemas/PublicContactYearMonthDto"}},"type":"object"},"PublicContactSocialLinksDto":{"properties":{"linkedinUrl":{"type":"string"},"githubUrl":{"type":"string"},"facebookUrl":{"type":"string"},"twitterUrl":{"type":"string"}},"type":"object"},"PublicContactDto":{"properties":{"id":{"type":"string"},"listId":{"type":"string"},"ownerId":{"type":"string"},"name":{"type":"string"},"firstName":{"type":"string"},"middleName":{"type":"string"},"lastName":{"type":"string"},"emailDetail":{"type":"string"},"emailDetailSecond":{"type":"string"},"emailDetailThird":{"type":"string"},"emailDetailFourth":{"type":"string"},"phone":{"type":"string"},"businessPhone":{"type":"string"},"thirdPhone":{"type":"string"},"fourthPhone":{"type":"string"},"location":{"$ref":"#/components/schemas/PublicContactLocationDto"},"homeLocation":{"$ref":"#/components/schemas/PublicContactLocationDto"},"industry":{"type":"string"},"tags":{"items":{"type":"string"},"type":"array"},"themes":{"items":{"type":"string"},"type":"array"},"notes":{"type":"string"},"jobs":{"items":{"$ref":"#/components/schemas/PublicContactJobDto"},"type":"array"},"headline":{"type":"string"},"title":{"type":"string"},"socialLinks":{"$ref":"#/components/schemas/PublicContactSocialLinksDto"},"knownTo":{"items":{"type":"string"},"type":"array","description":"Array of user IDs that this contact is known to."},"fields":{"type":"object"},"dynamicInfo":{"type":"object","description":"Legacy key-value store. Each value must be a string or number."}},"type":"object","required":["id","name"]},"PublicViewAllContactsDto":{"properties":{"contacts":{"items":{"$ref":"#/components/schemas/PublicContactDto"},"type":"array"}},"type":"object","required":["contacts"]},"PublicCreateContactDto":{"properties":{"listId":{"type":"string"},"name":{"type":"string"},"firstName":{"type":"string"},"middleName":{"type":"string"},"lastName":{"type":"string"},"emailDetail":{"format":"email","type":"string"},"emailDetailSecond":{"format":"email","type":"string"},"emailDetailThird":{"format":"email","type":"string"},"emailDetailFourth":{"format":"email","type":"string"},"phone":{"type":"string"},"businessPhone":{"type":"string"},"thirdPhone":{"type":"string"},"fourthPhone":{"type":"string"},"location":{"$ref":"#/components/schemas/PublicContactLocationDto"},"homeLocation":{"$ref":"#/components/schemas/PublicContactLocationDto"},"industry":{"type":"string"},"tags":{"items":{"type":"string"},"type":"array"},"notes":{"type":"string"},"jobs":{"items":{"$ref":"#/components/schemas/PublicContactJobDto"},"type":"array"},"headline":{"type":"string"},"title":{"type":"string"},"socialLinks":{"$ref":"#/components/schemas/PublicContactSocialLinksDto"},"fields":{"type":"object"},"knownTo":{"items":{"type":"string"},"type":"array","description":"Array of user IDs that this contact is known to. Users must belong to the same organization."},"dynamicInfo":{"type":"object","description":"Legacy key-value store. Each value must be a string or number."}},"type":"object","required":["name"]},"PublicUpdateContactDto":{"properties":{"name":{"type":"string"},"firstName":{"type":"string"},"middleName":{"type":"string"},"lastName":{"type":"string"},"emailDetail":{"format":"email","type":"string"},"emailDetailSecond":{"format":"email","type":"string"},"emailDetailThird":{"format":"email","type":"string"},"emailDetailFourth":{"format":"email","type":"string"},"phone":{"type":"string"},"businessPhone":{"type":"string"},"thirdPhone":{"type":"string"},"fourthPhone":{"type":"string"},"location":{"$ref":"#/components/schemas/PublicContactLocationDto","description":"Fully replaces the work location when provided."},"homeLocation":{"$ref":"#/components/schemas/PublicContactLocationDto","description":"Fully replaces the home location when provided."},"industry":{"type":"string"},"tags":{"items":{"type":"string"},"type":"array"},"notes":{"type":"string"},"jobs":{"items":{"$ref":"#/components/schemas/PublicContactJobDto"},"type":"array","description":"Fully replaces the jobs array when provided."},"headline":{"type":"string"},"title":{"type":"string"},"socialLinks":{"$ref":"#/components/schemas/PublicContactSocialLinksDto","description":"Partially updates social links — only provided fields are overwritten."},"fields":{"type":"object"},"knownTo":{"items":{"type":"string"},"type":"array","description":"Array of user IDs that this contact is known to. Users must belong to the same organization. Fully replaces the existing list when provided."},"dynamicInfo":{"type":"object","description":"Legacy key-value store. Each value must be a string or number."}},"type":"object"},"PublicInvestorDto":{"properties":{"id":{"pattern":"^[0-9a-fA-F]{24}$","type":"string"},"name":{"type":"string"},"originType":{"type":"string","enum":["Contact","Company"]},"originContactId":{"type":"string"},"fields":{"type":"object"},"files":{"items":{"type":"string"},"type":"array"}},"type":"object","required":["id"]},"PublicViewAllInvestorsDto":{"properties":{"investors":{"items":{"$ref":"#/components/schemas/PublicInvestorDto"},"type":"array"}},"type":"object","required":["investors"]},"PublicInvestorCreateDto":{"properties":{"name":{"type":"string"},"fields":{"type":"object","description":"Custom field values keyed by field ID. For fields of type `company`, provide either a company ID or a domain string (e.g. `\"stripe.com\"`). For `company-list` fields, provide an array of company IDs and/or domain strings. For fields of type `deal`, provide a deal ID. For `contacts-list` fields, provide an array of contact IDs."},"originContactId":{"type":"string"}},"type":"object","required":["name"]},"PublicInvestorPatchDto":{"properties":{"name":{"type":"string"},"fields":{"type":"object","description":"Custom field values keyed by field ID. For fields of type `company`, provide either a company ID or a domain string (e.g. `\"stripe.com\"`). For `company-list` fields, provide an array of company IDs and/or domain strings. For fields of type `deal`, provide a deal ID. For `contacts-list` fields, provide an array of contact IDs."},"originContactId":{"type":"string"}},"type":"object"},"PublicCompanyDto":{"properties":{"id":{"pattern":"^[0-9a-fA-F]{24}$","type":"string"},"name":{"type":"string"},"image":{"type":"string"},"creatorId":{"type":"string"},"lists":{"items":{"type":"string"},"type":"array"},"files":{"items":{"type":"string"},"type":"array"},"fields":{"type":"object"},"createdAt":{"oneOf":[{"format":"date","type":"string"},{"format":"date-time","type":"string"}]},"updatedAt":{"oneOf":[{"format":"date","type":"string"},{"format":"date-time","type":"string"}]}},"type":"object","required":["id","name"]},"PublicViewAllCompaniesDto":{"properties":{"companies":{"items":{"$ref":"#/components/schemas/PublicCompanyDto"},"type":"array"}},"type":"object","required":["companies"]},"PublicCompanyListDto":{"properties":{"id":{"pattern":"^[0-9a-fA-F]{24}$","type":"string"},"name":{"type":"string"}},"type":"object","required":["id","name"]},"PublicViewAllCompanyListsDto":{"properties":{"lists":{"items":{"$ref":"#/components/schemas/PublicCompanyListDto"},"type":"array"}},"type":"object","required":["lists"]},"PublicCompanyCreateDto":{"properties":{"name":{"type":"string"},"image":{"type":"string"},"lists":{"items":{"pattern":"^[0-9a-fA-F]{24}$","type":"string"},"type":"array"},"fields":{"type":"object","description":"Custom field values keyed by field ID. For fields of type `company`, provide either a company ID or a domain string (e.g. `\"stripe.com\"`). For `company-list` fields, provide an array of company IDs and/or domain strings. For fields of type `deal`, provide a deal ID. For `contacts-list` fields, provide an array of contact IDs."}},"type":"object","required":["name"]},"PublicCompanyPatchDto":{"properties":{"name":{"type":"string"},"image":{"type":"string"},"lists":{"items":{"pattern":"^[0-9a-fA-F]{24}$","type":"string"},"type":"array"},"fields":{"type":"object","description":"Custom field values keyed by field ID. For fields of type `company`, provide either a company ID or a domain string (e.g. `\"stripe.com\"`). For `company-list` fields, provide an array of company IDs and/or domain strings. For fields of type `deal`, provide a deal ID. For `contacts-list` fields, provide an array of contact IDs."}},"type":"object"},"ErrorResponseDto":{"properties":{"success":{"type":"boolean"},"error":{"type":"string"}},"type":"object","required":["success","error"]},"PublicViewPipelineStageDto":{"properties":{"id":{"type":"string"},"name":{"type":"string"}},"type":"object","required":["id","name"]},"PublicViewAllStagesDto":{"properties":{"stages":{"items":{"$ref":"#/components/schemas/PublicViewPipelineStageDto"},"type":"array"}},"type":"object","required":["stages"]},"PublicViewPipelineDto":{"properties":{"id":{"type":"string"},"name":{"type":"string"},"stages":{"items":{"$ref":"#/components/schemas/PublicViewPipelineStageDto"},"type":"array"}},"type":"object","required":["id","name","stages"]},"PublicViewAllPipelinesDto":{"properties":{"pipelines":{"items":{"$ref":"#/components/schemas/PublicViewPipelineDto"},"type":"array"}},"type":"object","required":["pipelines"]},"PublicExtraConfigDto":{"properties":{"formatting":{"type":"string","enum":["number","percent","string","boolean","date"],"description":"Formatting type for the field value. Allowed values: number, percent, string, boolean, date."},"decimalPoints":{"type":"string","description":"Number of decimal points for number/percent formatting.","default":"1"},"suffix":{"type":"string","description":"Suffix to append to the displayed value.","default":""},"dateDisplayFormat":{"type":"string","description":"Date display format pattern (e.g. \"YYYY-MM-dd\").","default":"YYYY-MM-dd"}},"type":"object"},"PublicCreateCustomFieldDto":{"properties":{"fieldId":{"type":"string","description":"Unique identifier of the field used for business logic. Must be unique within the entity."},"label":{"type":"string","description":"Display name of the field shown in the UI."},"category":{"type":"string","description":"Category used for visual grouping of fields in the UI."},"type":{"type":"string","enum":["input","textarea","dropdown","datepicker","multiselect","users-array","contacts-list","checkbox","number","formula","deal","company","company-list","attachment","url-link"],"description":"Field type that determines business logic behavior. Allowed values: input, textarea, dropdown, datepicker, multiselect, users-array, contacts-list, checkbox, number, formula, deal, company, company-list, attachment, url-link."},"default":{"description":"Default value for the field. Varies by field type. Examples: empty string (\"\") for \"input\", empty array ([]) for \"multiselect\", false for \"checkbox\".","oneOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"array"},{"type":"object"}],"default":""},"options":{"items":{},"type":"array","description":"Additional configuration for field types that support predefined values, such as \"multiselect\", \"dropdown\". Defines the list of selectable options for these field types."},"invisibleField":{"type":"boolean","description":"Whether the field should be hidden in the UI."},"invisibleLabel":{"type":"boolean","description":"Whether the field label should be hidden in the UI."},"leftMenu":{"type":"boolean","description":"Whether the field should appear in the left menu navigation."},"mandatory":{"type":"boolean","description":"Whether the field is required to be populated."},"formula":{"type":"string","description":"Formula expression for fields of type \"formula\". Ignored for other field types.","default":""},"extraConfig":{"$ref":"#/components/schemas/PublicExtraConfigDto","description":"Extra configuration for field formatting and display. Applicable to field types that support value formatting, such as \"formula\", \"number\", and others. Controls how the field value is rendered (e.g. number of decimal points, suffix, date format)."},"externalServiceFieldPath":{"type":"string","description":"Field path used to map data from an external service response. Supports dot notation for nested properties (e.g. \"employees.current_count\"). Must be used together with externalServiceType. Defaults to \"NONE\" if not provided."},"externalServiceType":{"type":"string","enum":["APOLLO","PITCHBOOK","GAIN_PRO","NONE","SELF","CARTA","CARTA_DWH"],"description":"External service used for automatic field enrichment. The target entity must have the corresponding external service integration enabled, otherwise the field will not be enriched. Must be used together with externalServiceFieldPath. Defaults to \"NONE\" if not provided. Allowed values: APOLLO, PITCHBOOK, GAIN_PRO, NONE, SELF, CARTA, CARTA_DWH."},"readonly":{"type":"boolean","description":"Whether the field is read-only and cannot be edited by users.","default":false},"condition":{"type":"string","description":"Conditional expression that controls field visibility. When set, the field is only shown if the condition evaluates to true. Defaults to empty string (no condition) if not provided.","default":""}},"type":"object","required":["fieldId","label","category","type","default","options","invisibleField","invisibleLabel","leftMenu","mandatory"]},"PublicCreateContactCustomFieldDto":{"properties":{"type":{"type":"string","enum":["input","dropdown","multiselect","checkbox"],"description":"Field type that determines business logic behavior. Allowed values: input, dropdown, multiselect, checkbox."},"fieldId":{"type":"string","description":"Unique identifier of the field used for business logic. Must be unique within the entity."},"label":{"type":"string","description":"Display name of the field shown in the UI."},"category":{"type":"string","description":"Category used for visual grouping of fields in the UI."},"default":{"description":"Default value for the field. Varies by field type. Examples: empty string (\"\") for \"input\", empty array ([]) for \"multiselect\", false for \"checkbox\".","oneOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"array"},{"type":"object"}],"default":""},"options":{"items":{},"type":"array","description":"Additional configuration for field types that support predefined values, such as \"multiselect\", \"dropdown\". Defines the list of selectable options for these field types."},"invisibleField":{"type":"boolean","description":"Whether the field should be hidden in the UI."},"invisibleLabel":{"type":"boolean","description":"Whether the field label should be hidden in the UI."},"leftMenu":{"type":"boolean","description":"Whether the field should appear in the left menu navigation."},"mandatory":{"type":"boolean","description":"Whether the field is required to be populated."},"formula":{"type":"string","description":"Formula expression for fields of type \"formula\". Ignored for other field types.","default":""},"extraConfig":{"$ref":"#/components/schemas/PublicExtraConfigDto","description":"Extra configuration for field formatting and display. Applicable to field types that support value formatting, such as \"formula\", \"number\", and others. Controls how the field value is rendered (e.g. number of decimal points, suffix, date format)."},"externalServiceFieldPath":{"type":"string","description":"Field path used to map data from an external service response. Supports dot notation for nested properties (e.g. \"employees.current_count\"). Must be used together with externalServiceType. Defaults to \"NONE\" if not provided."},"externalServiceType":{"type":"string","enum":["APOLLO","PITCHBOOK","GAIN_PRO","NONE","SELF","CARTA","CARTA_DWH"],"description":"External service used for automatic field enrichment. The target entity must have the corresponding external service integration enabled, otherwise the field will not be enriched. Must be used together with externalServiceFieldPath. Defaults to \"NONE\" if not provided. Allowed values: APOLLO, PITCHBOOK, GAIN_PRO, NONE, SELF, CARTA, CARTA_DWH."},"readonly":{"type":"boolean","description":"Whether the field is read-only and cannot be edited by users.","default":false},"condition":{"type":"string","description":"Conditional expression that controls field visibility. When set, the field is only shown if the condition evaluates to true. Defaults to empty string (no condition) if not provided.","default":""}},"type":"object","required":["type","fieldId","label","category","default","options","invisibleField","invisibleLabel","leftMenu","mandatory"]},"PublicCustomFieldDto":{"properties":{"fieldId":{"type":"string"},"label":{"type":"string"},"category":{"type":"string"},"default":{},"invisibleField":{"type":"boolean"},"invisibleLabel":{"type":"boolean"},"leftMenu":{"type":"boolean"},"mandatory":{"type":"boolean"},"options":{"items":{},"type":"array"},"tabName":{"type":"string"},"type":{"type":"string","enum":["input","textarea","dropdown","datepicker","multiselect","users-array","contacts-list","checkbox","number","texteditor","tags","formula","deal","company","company-list","attachment","url-link"]},"externalServiceFieldPath":{"type":"string","description":"Field path used to map data from an external service response. Supports dot notation for nested properties (e.g. \"employees.current_count\")."},"externalServiceType":{"type":"string","enum":["APOLLO","PITCHBOOK","GAIN_PRO","NONE","SELF","CARTA","CARTA_DWH"],"description":"External service used for automatic field enrichment. Allowed values: APOLLO, PITCHBOOK, GAIN_PRO, NONE, SELF, CARTA, CARTA_DWH."},"formula":{"type":"string","description":"Formula expression for fields of type \"formula\"."},"extraConfig":{"$ref":"#/components/schemas/PublicExtraConfigDto","description":"Extra configuration for field formatting and display. Applicable to field types that support value formatting, such as \"formula\", \"number\", and others. Controls how the field value is rendered (e.g. number of decimal points, suffix, date format)."},"readonly":{"type":"boolean","description":"Whether the field is read-only and cannot be edited by users."},"condition":{"type":"string","description":"Conditional expression that controls field visibility."}},"type":"object","required":["fieldId","label","category","invisibleField","invisibleLabel","leftMenu","mandatory","options","tabName","type"]},"PublicCustomFieldsDto":{"properties":{"fields":{"items":{"$ref":"#/components/schemas/PublicCustomFieldDto"},"type":"array"}},"type":"object","required":["fields"]},"PublicUpdateCustomFieldDto":{"properties":{"label":{"type":"string","description":"Display name of the field shown in the UI."},"category":{"type":"string","description":"Category used for visual grouping of fields in the UI."},"type":{"type":"string","enum":["input","textarea","dropdown","datepicker","multiselect","users-array","contacts-list","checkbox","number","formula","deal","company","company-list","attachment","url-link"],"description":"Field type that determines business logic behavior. Allowed values: input, textarea, dropdown, datepicker, multiselect, users-array, contacts-list, checkbox, number, formula, deal, company, company-list, attachment, url-link."},"default":{"description":"Default value for the field. Varies by field type. Examples: empty string (\"\") for \"input\", empty array ([]) for \"multiselect\", false for \"checkbox\".","oneOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"array"},{"type":"object"}]},"options":{"items":{},"type":"array","description":"Additional configuration for field types that support predefined values, such as \"multiselect\", \"dropdown\". Defines the list of selectable options for these field types."},"invisibleField":{"type":"boolean","description":"Whether the field should be hidden in the UI."},"invisibleLabel":{"type":"boolean","description":"Whether the field label should be hidden in the UI."},"leftMenu":{"type":"boolean","description":"Whether the field should appear in the left menu navigation."},"mandatory":{"type":"boolean","description":"Whether the field is required to be populated."},"formula":{"type":"string","description":"Formula expression for fields of type \"formula\". Ignored for other field types."},"extraConfig":{"$ref":"#/components/schemas/PublicExtraConfigDto","description":"Extra configuration for field formatting and display. Applicable to field types that support value formatting, such as \"formula\", \"number\", and others. Controls how the field value is rendered (e.g. number of decimal points, suffix, date format)."},"externalServiceFieldPath":{"type":"string","description":"Field path used to map data from an external service response. Supports dot notation for nested properties (e.g. \"employees.current_count\"). Must be used together with externalServiceType."},"externalServiceType":{"type":"string","enum":["APOLLO","PITCHBOOK","GAIN_PRO","NONE","SELF","CARTA","CARTA_DWH"],"description":"External service used for automatic field enrichment. The target entity must have the corresponding external service integration enabled, otherwise the field will not be enriched. Must be used together with externalServiceFieldPath. Allowed values: APOLLO, PITCHBOOK, GAIN_PRO, NONE, SELF, CARTA, CARTA_DWH."},"readonly":{"type":"boolean","description":"Whether the field is read-only and cannot be edited by users."},"condition":{"type":"string","description":"Conditional expression that controls field visibility. When set, the field is only shown if the condition evaluates to true."}},"type":"object"},"PublicUpdateContactCustomFieldDto":{"properties":{"type":{"type":"string","enum":["input","dropdown","multiselect","checkbox"],"description":"Field type that determines business logic behavior. Allowed values: input, dropdown, multiselect, checkbox."},"label":{"type":"string","description":"Display name of the field shown in the UI."},"category":{"type":"string","description":"Category used for visual grouping of fields in the UI."},"default":{"description":"Default value for the field. Varies by field type. Examples: empty string (\"\") for \"input\", empty array ([]) for \"multiselect\", false for \"checkbox\".","oneOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"array"},{"type":"object"}]},"options":{"items":{},"type":"array","description":"Additional configuration for field types that support predefined values, such as \"multiselect\", \"dropdown\". Defines the list of selectable options for these field types."},"invisibleField":{"type":"boolean","description":"Whether the field should be hidden in the UI."},"invisibleLabel":{"type":"boolean","description":"Whether the field label should be hidden in the UI."},"leftMenu":{"type":"boolean","description":"Whether the field should appear in the left menu navigation."},"mandatory":{"type":"boolean","description":"Whether the field is required to be populated."},"formula":{"type":"string","description":"Formula expression for fields of type \"formula\". Ignored for other field types."},"extraConfig":{"$ref":"#/components/schemas/PublicExtraConfigDto","description":"Extra configuration for field formatting and display. Applicable to field types that support value formatting, such as \"formula\", \"number\", and others. Controls how the field value is rendered (e.g. number of decimal points, suffix, date format)."},"externalServiceFieldPath":{"type":"string","description":"Field path used to map data from an external service response. Supports dot notation for nested properties (e.g. \"employees.current_count\"). Must be used together with externalServiceType."},"externalServiceType":{"type":"string","enum":["APOLLO","PITCHBOOK","GAIN_PRO","NONE","SELF","CARTA","CARTA_DWH"],"description":"External service used for automatic field enrichment. The target entity must have the corresponding external service integration enabled, otherwise the field will not be enriched. Must be used together with externalServiceFieldPath. Allowed values: APOLLO, PITCHBOOK, GAIN_PRO, NONE, SELF, CARTA, CARTA_DWH."},"readonly":{"type":"boolean","description":"Whether the field is read-only and cannot be edited by users."},"condition":{"type":"string","description":"Conditional expression that controls field visibility. When set, the field is only shown if the condition evaluates to true."}},"type":"object"},"PublicDeleteCustomFieldDto":{"properties":{"fieldId":{"type":"string"}},"type":"object","required":["fieldId"]},"FieldIdDto":{"properties":{"fieldId":{"type":"string"}},"type":"object","required":["fieldId"]},"PublicCreateDealStageDto":{"properties":{"pipelineId":{"type":"string"},"id":{"type":"string"},"name":{"type":"string"},"description":{"type":"string","default":"","description":"Description of the stage."},"kanban":{"type":"boolean","default":false},"funnel":{"type":"boolean","default":false},"secondFunnel":{"type":"boolean","default":false},"default":{"type":"boolean","default":false,"description":"Whether this is the default stage for new deals."}},"type":"object","required":["pipelineId","id","name"]},"PublicUpdateDealStageDto":{"properties":{"pipelineId":{"type":"string"},"name":{"type":"string"},"description":{"type":"string","description":"Description of the stage."},"kanban":{"type":"boolean"},"funnel":{"type":"boolean"},"secondFunnel":{"type":"boolean"},"default":{"type":"boolean","description":"Whether this is the default stage for new deals."}},"type":"object","required":["pipelineId"]},"PublicDeleteDealStageDto":{"properties":{"pipelineId":{"type":"string"},"stageId":{"type":"string"}},"type":"object","required":["pipelineId","stageId"]},"UnauthorizeErrorResponseDto":{"properties":{"message":{"type":"string"}},"type":"object","required":["message"]},"PublicDealFieldDto":{"properties":{"fieldId":{"type":"string","description":"Unique field identifier. Use this value in filters and group_by."},"label":{"type":"string","description":"Human-readable field label."},"type":{"type":"string","description":"Field data type (e.g. text, number, date, set, dropdown)."},"source":{"type":"string","enum":["standard","custom"],"description":"Whether this is a built-in standard field or a user-defined custom field."},"options":{"items":{"type":"string"},"type":"array","description":"Allowed values for set/dropdown fields."}},"type":"object","required":["fieldId","label","type","source"]},"PublicAllDealFieldsDto":{"properties":{"fields":{"items":{"$ref":"#/components/schemas/PublicDealFieldDto"},"type":"array","description":"All available deal fields (standard and custom)."}},"type":"object","required":["fields"]},"PublicGetDealsDto":{"properties":{"stages":{"items":{"type":"string"},"type":"array","default":[],"description":"Filter by stage IDs. Stage IDs can be found in GET /v1/deals/pipelines endpoint (stages array within each pipeline).\n\n**Note:** To provide multiple values, repeat the parameter in query: `?stages=value1&stages=value2`"},"pipelines":{"items":{"type":"string"},"type":"array","default":[],"description":"Filter by pipeline IDs. Pipeline IDs can be found in GET /v1/deals/pipelines endpoint.\n\n**Note:** To provide multiple values, repeat the parameter in query: `?pipelines=value1&pipelines=value2`"},"limit":{"maximum":100,"type":"integer","minimum":1,"default":100,"description":"Maximum number of results to return per request."},"offset":{"maximum":1000000,"type":"integer","minimum":0,"default":0,"description":"Number of results to skip for pagination."},"search":{"type":"string","default":null,"description":"Search query string to filter results."}},"type":"object"},"MongoIdDto":{"properties":{"id":{"pattern":"^[0-9a-fA-F]{24}$","type":"string"}},"type":"object","required":["id"]},"PublicDealFilterDto":{"properties":{"field_id":{"type":"string","description":"Field ID to filter on. Use the List Deal Fields endpoint to discover valid IDs."},"operator":{"type":"string","enum":["eq","neq","gt","gte","lt","lte","contains","in","between"],"description":"Comparison operator. \"between\" requires a two-element array value."}},"type":"object","required":["field_id","operator"]},"PublicAggregateDealsDto":{"properties":{"group_by":{"items":{"type":"string"},"type":"array","maxItems":3,"minItems":1,"description":"Field IDs to group by (1-3 fields). Use the List Deal Fields endpoint to discover valid IDs."},"filters":{"items":{"$ref":"#/components/schemas/PublicDealFilterDto"},"type":"array","description":"Filters to narrow deals before aggregation."},"pipeline_id":{"type":"string","description":"Pipeline ID. Defaults to the organization's default pipeline."}},"type":"object","required":["group_by"]},"PublicAggregateGroupDto":{"properties":{"count":{"type":"number","description":"Number of deals in this group."}},"type":"object","required":["count"],"additionalProperties":true},"PublicAggregateDealsResponseDto":{"properties":{"groups":{"items":{"$ref":"#/components/schemas/PublicAggregateGroupDto"},"type":"array","description":"Array of groups, each containing the group key, field values, and count."},"totalCount":{"type":"number","description":"Total number of deals across all groups."}},"type":"object","required":["groups","totalCount"]},"PublicStageRefDto":{"properties":{"id":{"type":"string","description":"Stage ID."},"name":{"type":"string","description":"Stage display name."}},"type":"object","required":["id","name"]},"PublicStageTransitionDto":{"properties":{"timestamp":{"oneOf":[{"format":"date","type":"string"},{"format":"date-time","type":"string"}],"description":"When the transition occurred."},"fromStage":{"$ref":"#/components/schemas/PublicStageRefDto","description":"The stage the deal moved from. Null for the initial stage assignment.","nullable":true},"toStage":{"$ref":"#/components/schemas/PublicStageRefDto","description":"The stage the deal moved to."},"changedBy":{"type":"string","description":"User ID of the person who made the change."}},"type":"object","required":["timestamp","toStage","changedBy"]},"PublicDealStageHistoryResponseDto":{"properties":{"dealId":{"type":"string","description":"The deal ID."},"transitions":{"items":{"$ref":"#/components/schemas/PublicStageTransitionDto"},"type":"array","description":"Ordered list of stage transitions, oldest first."}},"type":"object","required":["dealId","transitions"]},"DealFieldUploadParamsDto":{"properties":{"dealId":{"pattern":"^[0-9a-fA-F]{24}$","type":"string"},"fieldId":{"minLength":1,"type":"string"}},"type":"object","required":["dealId","fieldId"]},"DealFieldDeleteAttachmentParamsDto":{"properties":{"dealId":{"pattern":"^[0-9a-fA-F]{24}$","type":"string"},"fieldId":{"minLength":1,"type":"string"},"fileId":{"minLength":1,"type":"string","description":"The attachment ID to delete"}},"type":"object","required":["dealId","fieldId","fileId"]},"PublicDealAttachmentDto":{"properties":{"id":{"type":"string"},"s3Path":{"type":"string"},"fileName":{"type":"string"},"mimeType":{"type":"string"},"contentLength":{"type":"number"},"uploadedAt":{"oneOf":[{"format":"date","type":"string"},{"format":"date-time","type":"string"}]},"previews":{"items":{},"type":"array"},"ownerId":{"type":"string"}},"type":"object","required":["id","s3Path","fileName","mimeType","contentLength","uploadedAt","previews"]},"EntityFieldUploadParamsDto":{"properties":{"id":{"pattern":"^[0-9a-fA-F]{24}$","type":"string"},"fieldId":{"minLength":1,"type":"string"}},"type":"object","required":["id","fieldId"]},"EntityFieldDeleteAttachmentParamsDto":{"properties":{"id":{"pattern":"^[0-9a-fA-F]{24}$","type":"string"},"fieldId":{"minLength":1,"type":"string"},"fileId":{"minLength":1,"type":"string","description":"The attachment ID to delete"}},"type":"object","required":["id","fieldId","fileId"]},"PublicCreateFundraisingStageDto":{"properties":{"id":{"type":"string"},"name":{"type":"string"},"kanban":{"type":"boolean","default":false,"description":"Whether the stage is visible on the kanban board."}},"type":"object","required":["id","name"]},"PublicUpdateFundraisingStageDto":{"properties":{"name":{"type":"string"},"kanban":{"type":"boolean"}},"type":"object"},"PublicDeleteFundraisingStageDto":{"properties":{"stageId":{"type":"string"}},"type":"object","required":["stageId"]},"PublicGetFundraisingDto":{"properties":{"stages":{"items":{"type":"string"},"type":"array","default":[],"description":"Filter by stage IDs. Stage IDs can be found in GET /v1/fundraisings/stages endpoint.\n\n**Note:** To provide multiple values, repeat the parameter in query: `?stages=value1&stages=value2`"},"limit":{"maximum":100,"type":"integer","minimum":1,"default":100,"description":"Maximum number of results to return per request."},"offset":{"maximum":1000000,"type":"integer","minimum":0,"default":0,"description":"Number of results to skip for pagination."},"search":{"type":"string","default":null,"description":"Search query string to filter results."}},"type":"object"},"PublicGetContactsDto":{"properties":{"listId":{"type":"string"},"limit":{"maximum":100,"type":"integer","minimum":1,"default":100,"description":"Maximum number of results to return per request."},"offset":{"maximum":1000000,"type":"integer","minimum":0,"default":0,"description":"Number of results to skip for pagination."},"search":{"type":"string","default":null,"description":"Search query string to filter results."}},"type":"object"},"PublicCreateContactListDto":{"properties":{"name":{"type":"string","description":"Display name of the contact list."}},"type":"object","required":["name"]},"PublicNoteDto":{"properties":{"id":{"pattern":"^[0-9a-fA-F]{24}$","type":"string"},"title":{"type":"string"},"owner":{"type":"string"},"text":{"type":"string"},"uid":{"type":"string"},"source":{"type":"string"},"folderId":{"type":"string"},"inFolder":{"type":"boolean"},"files":{"items":{"type":"string"},"type":"array"},"creationDate":{"oneOf":[{"format":"date","type":"string"},{"format":"date-time","type":"string"}]},"createdAt":{"oneOf":[{"format":"date","type":"string"},{"format":"date-time","type":"string"}]},"updatedAt":{"oneOf":[{"format":"date","type":"string"},{"format":"date-time","type":"string"}]}},"type":"object","required":["id","title","owner","inFolder","files","createdAt","updatedAt"]},"PublicNoteFolderDto":{"properties":{"id":{"pattern":"^[0-9a-fA-F]{24}$","type":"string"},"title":{"type":"string"},"owner":{"type":"string"},"createdAt":{"oneOf":[{"format":"date","type":"string"},{"format":"date-time","type":"string"}]},"updatedAt":{"oneOf":[{"format":"date","type":"string"},{"format":"date-time","type":"string"}]}},"type":"object","required":["id","title","owner","createdAt","updatedAt"]},"PublicViewAllNoteFoldersDto":{"properties":{"folders":{"items":{"$ref":"#/components/schemas/PublicNoteFolderDto"},"type":"array"}},"type":"object","required":["folders"]},"PublicViewAllNotesDto":{"properties":{"notes":{"items":{"$ref":"#/components/schemas/PublicNoteDto"},"type":"array"}},"type":"object","required":["notes"]},"PublicCreateNoteDto":{"properties":{"title":{"minLength":1,"type":"string"},"text":{"type":"string"},"folderId":{"pattern":"^[0-9a-fA-F]{24}$","type":"string"},"uid":{"type":"string","description":"External unique identifier from other systems"},"creationDate":{"oneOf":[{"format":"date","type":"string"},{"format":"date-time","type":"string"}],"description":"Historical creation date to preserve original timestamps"},"owner":{"type":"string","description":"Owner email. If not provided, the API key owner will be used. Not changeable after creation"}},"type":"object","required":["title"]},"PublicUpdateNoteDto":{"properties":{"title":{"type":"string"},"text":{"type":"string"},"folderId":{"pattern":"^[0-9a-fA-F]{24}$","type":"string"},"uid":{"type":"string","description":"External unique identifier from other systems"},"creationDate":{"oneOf":[{"format":"date","type":"string"},{"format":"date-time","type":"string"}],"description":"Historical creation date to preserve original timestamps"}},"type":"object"},"PublicGetNotesDto":{"properties":{"folderId":{"pattern":"^[0-9a-fA-F]{24}$","type":"string","description":"Filter notes by folder ID."},"limit":{"maximum":100,"type":"integer","minimum":1,"default":100,"description":"Maximum number of results to return per request."},"offset":{"maximum":1000000,"type":"integer","minimum":0,"default":0,"description":"Number of results to skip for pagination."},"search":{"type":"string","default":null,"description":"Search query string to filter results."}},"type":"object"},"PublicLinkedNotesDto":{"properties":{"notes":{"items":{"$ref":"#/components/schemas/PublicNoteDto"},"type":"array"}},"type":"object","required":["notes"]},"PublicAddUserDto":{"properties":{"name":{"type":"string"},"email":{"type":"string"},"password":{"type":"string"},"companyRole":{"enum":["ADMIN","LEADERSHIP","DEAL_TEAM","PORTFOLIO","FINANCE","INVESTOR_RELATIONS","ADMIN_SUPPORT","OTHER"],"type":"string"},"teams":{"items":{"type":"string"},"type":"array"}},"type":"object","required":["name","email","password","companyRole"]},"PublicUserDto":{"properties":{"id":{"type":"string"},"email":{"type":"string"},"name":{"type":"string"},"companyRole":{"enum":["ADMIN","LEADERSHIP","DEAL_TEAM","PORTFOLIO","FINANCE","INVESTOR_RELATIONS","ADMIN_SUPPORT","OTHER"],"type":"string"},"organization":{"type":"string"},"status":{"type":"string","enum":["ACTIVE","BLOCKED"]}},"type":"object","required":["id","email","name","companyRole","organization","status"]},"PublicViewAllUsersDto":{"properties":{"users":{"items":{"$ref":"#/components/schemas/PublicUserDto"},"type":"array"}},"type":"object","required":["users"]},"PublicTeamDto":{"properties":{"id":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"memberCount":{"type":"number"}},"type":"object","required":["id","name","description","memberCount"]},"PublicViewAllTeamsDto":{"properties":{"teams":{"items":{"$ref":"#/components/schemas/PublicTeamDto"},"type":"array"}},"type":"object","required":["teams"]},"PublicChangeUserStatusDto":{"properties":{"status":{"type":"string","enum":["ACTIVE","BLOCKED"]}},"type":"object","required":["status"]},"PublicUserIdParamsDto":{"properties":{"userId":{"type":"string"}},"type":"object","required":["userId"]},"PublicChangeUserRoleDto":{"properties":{"role":{"enum":["ADMIN","LEADERSHIP","DEAL_TEAM","PORTFOLIO","FINANCE","INVESTOR_RELATIONS","ADMIN_SUPPORT","OTHER"],"type":"string"}},"type":"object","required":["role"]},"PublicToggleModuleDto":{"properties":{"enable":{"type":"boolean"}},"type":"object","required":["enable"]},"PublicCreateCompanyListDto":{"properties":{"name":{"type":"string","description":"Display name of the company list."}},"type":"object","required":["name"]},"PublicUpdateCompanyListDto":{"properties":{"name":{"type":"string","description":"Updated display name of the company list."}},"type":"object"},"ListIdParamsDto":{"properties":{"listId":{"pattern":"^[0-9a-fA-F]{24}$","type":"string"}},"type":"object","required":["listId"]},"PublicGetCompaniesDto":{"properties":{"listId":{"pattern":"^[0-9a-fA-F]{24}$","type":"string","description":"Filter companies by list ID."},"limit":{"maximum":100,"type":"integer","minimum":1,"default":100,"description":"Maximum number of results to return per request."},"offset":{"maximum":1000000,"type":"integer","minimum":0,"default":0,"description":"Number of results to skip for pagination."},"search":{"type":"string","default":null,"description":"Search query string to filter results."}},"type":"object"},"CompanyListParamsDto":{"properties":{"id":{"pattern":"^[0-9a-fA-F]{24}$","type":"string"},"listId":{"pattern":"^[0-9a-fA-F]{24}$","type":"string"}},"type":"object","required":["id","listId"]}},"securitySchemes":{"ApiKeyAuth":{"type":"apiKey","in":"header","name":"Authorization"}}},"info":{"title":"Resources","version":"1.0.0","description":"Carta CRM Public API provides programmatic access to your data.  Use this API to integrate Carta CRM with your internal systems, automate workflows, and build custom reporting solutions.\n\nAll endpoints require API key authentication via the Authorization header."},"openapi":"3.0.0","paths":{"/v1/deals/pipelines":{"get":{"operationId":"PublicDealMetadataController.getPipelinesWithStages","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicViewAllPipelinesDto"}}},"description":"List of pipelines with their stages"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizeErrorResponseDto"}}},"description":"Invalid or missing API key"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Internal server error"}},"summary":"List Pipelines","tags":["Deals"],"description":"A **pipeline** represents the sequence of **stages** a deal passes through from initiation to completion. The Deal and Credit teams use different **pipelines** to manage their workflows effectively.","security":[{"ApiKeyAuth":[]}]}},"/v1/deals/fields":{"get":{"operationId":"PublicDealMetadataController.getAllDealFields","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicAllDealFieldsDto"}}},"description":"All available deal fields"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizeErrorResponseDto"}}},"description":"Invalid or missing API key"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Internal server error"}},"summary":"List Deal Fields","tags":["Deals"],"description":"Returns all available deal fields, both **standard** built-in fields and **custom** user-defined fields. Use the returned `fieldId` values in filter and aggregation endpoints.","security":[{"ApiKeyAuth":[]}]}},"/v1/deals/custom-fields":{"get":{"operationId":"PublicDealMetadataController.getCustomFields","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicCustomFieldsDto"}}},"description":"Schema of custom fields for deals"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizeErrorResponseDto"}}},"description":"Invalid or missing API key"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Internal server error"}},"summary":"List Custom Fields","tags":["Deals"],"description":"**Custom fields** allow users to store additional information alongside a deal. EBITDA, revenue multiple, and other financial metrics can be tracked using **custom fields**.","security":[{"ApiKeyAuth":[]}]}},"/v1/deals/custom-fields/add":{"post":{"operationId":"PublicDealMetadataController.addCustomField","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicCreateCustomFieldDto"}}},"description":"PublicCreateCustomFieldDto","required":false},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicCustomFieldDto"}}},"description":"Custom field created successfully"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Invalid request parameters"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizeErrorResponseDto"}}},"description":"Invalid or missing API key"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Internal server error"}},"summary":"Add Custom Field","tags":["Deals"],"description":"Adds a new **custom field** to the deal schema.","security":[{"ApiKeyAuth":[]}]}},"/v1/deals/custom-fields/{fieldId}":{"patch":{"operationId":"PublicDealMetadataController.updateCustomField","parameters":[{"in":"path","name":"fieldId","required":true,"schema":{"pattern":"[^\\/#\\?]+?","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicUpdateCustomFieldDto"}}},"description":"PublicUpdateCustomFieldDto","required":false},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicCustomFieldDto"}}},"description":"Custom field updated successfully"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Invalid request parameters"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizeErrorResponseDto"}}},"description":"Invalid or missing API key"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Internal server error"}},"summary":"Update Custom Field","tags":["Deals"],"description":"Partially updates an existing **custom field** in the deal schema. Only the fields provided in the request body will be modified.","security":[{"ApiKeyAuth":[]}]}},"/v1/deals/custom-fields/delete":{"delete":{"operationId":"PublicDealMetadataController.deleteCustomField","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicDeleteCustomFieldDto"}}},"description":"PublicDeleteCustomFieldDto","required":false},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommonResponseDto"}}},"description":"Custom field deleted successfully"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Invalid request parameters"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizeErrorResponseDto"}}},"description":"Invalid or missing API key"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Internal server error"}},"summary":"Delete Custom Field","tags":["Deals"],"description":"Deletes an existing **custom field** from the deal schema.","security":[{"ApiKeyAuth":[]}]}},"/v1/deals/stages/add":{"post":{"operationId":"PublicDealMetadataController.addStage","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicCreateDealStageDto"}}},"description":"PublicCreateDealStageDto","required":false},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicViewPipelineStageDto"}}},"description":"Stage created successfully"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Invalid request parameters"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizeErrorResponseDto"}}},"description":"Invalid or missing API key"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Internal server error"}},"summary":"Add Stage","tags":["Deals"],"description":"Adds a new **stage** to a deal pipeline.","security":[{"ApiKeyAuth":[]}]}},"/v1/deals/stages/{stageId}":{"patch":{"operationId":"PublicDealMetadataController.updateStage","parameters":[{"in":"path","name":"stageId","required":true,"schema":{"pattern":"[^\\/#\\?]+?","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicUpdateDealStageDto"}}},"description":"PublicUpdateDealStageDto","required":false},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicViewPipelineStageDto"}}},"description":"Stage updated successfully"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Invalid request parameters"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizeErrorResponseDto"}}},"description":"Invalid or missing API key"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Internal server error"}},"summary":"Update Stage","tags":["Deals"],"description":"Partially updates an existing **stage** in a deal pipeline. Only the fields provided in the request body will be modified.","security":[{"ApiKeyAuth":[]}]}},"/v1/deals/stages/delete":{"delete":{"operationId":"PublicDealMetadataController.deleteStage","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicDeleteDealStageDto"}}},"description":"PublicDeleteDealStageDto","required":false},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommonResponseDto"}}},"description":"Stage deleted successfully"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Invalid request parameters"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizeErrorResponseDto"}}},"description":"Invalid or missing API key"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Internal server error"}},"summary":"Delete Stage","tags":["Deals"],"description":"Deletes an existing **stage** from a deal pipeline.","security":[{"ApiKeyAuth":[]}]}},"/v1/deals":{"get":{"operationId":"PublicDealController.getDeals","parameters":[{"in":"query","name":"stages","schema":{"items":{"type":"string"},"type":"array","default":[],"description":"Filter by stage IDs. Stage IDs can be found in GET /v1/deals/pipelines endpoint (stages array within each pipeline).\n\n**Note:** To provide multiple values, repeat the parameter in query: `?stages=value1&stages=value2`"}},{"in":"query","name":"pipelines","schema":{"items":{"type":"string"},"type":"array","default":[],"description":"Filter by pipeline IDs. Pipeline IDs can be found in GET /v1/deals/pipelines endpoint.\n\n**Note:** To provide multiple values, repeat the parameter in query: `?pipelines=value1&pipelines=value2`"}},{"in":"query","name":"limit","schema":{"maximum":100,"type":"integer","minimum":1,"default":100,"description":"Maximum number of results to return per request."}},{"in":"query","name":"offset","schema":{"maximum":1000000,"type":"integer","minimum":0,"default":0,"description":"Number of results to skip for pagination."}},{"in":"query","name":"search","schema":{"type":"string","default":null,"description":"Search query string to filter results."}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicViewAllDealsDto"}}},"description":"List of deals matching the search criteria"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Invalid request parameters"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizeErrorResponseDto"}}},"description":"Invalid or missing API key"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Resource not found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Internal server error"}},"summary":"List Deals","tags":["Deals"],"description":"Return **deals** based on search criteria, with filtering, sorting, and pagination.\n\nIf the pipeline is not specified, the one marked as the default pipeline is used. To search in other pipelines, you need to explicitly pass the `pipelineId`. To search by stages that are not in the default pipeline, you also need to explicitly specify the `pipelineId`.","security":[{"ApiKeyAuth":[]}]},"post":{"operationId":"PublicDealController.createDeal","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicDealCreateDto"}}},"description":"PublicDealCreateDto","required":false},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicDealDto"}}},"description":"Deal created successfully"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Invalid request parameters"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizeErrorResponseDto"}}},"description":"Invalid or missing API key"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Internal server error"}},"summary":"Create Deal","tags":["Deals"],"description":"Creates a new deal in the specified pipeline and stage. The deal will be associated with the authenticated organization.\n\n**Auto-Enrichment:** To enable automatic company data enrichment, provide a valid company website URL in the `company.url` field. When a valid URL is supplied, the system will automatically populate additional company information.","security":[{"ApiKeyAuth":[]}]}},"/v1/deals/{id}":{"get":{"operationId":"PublicDealController.getDealById","parameters":[{"in":"path","name":"id","required":true,"schema":{"pattern":"[^\\/#\\?]+?","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicDealDto"}}},"description":"Deal found"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizeErrorResponseDto"}}},"description":"Invalid or missing API key"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Deal not found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Internal server error"}},"summary":"Get Deal by ID","tags":["Deals"],"description":"Returns a single **deal** by its unique identifier.","security":[{"ApiKeyAuth":[]}]},"patch":{"operationId":"PublicDealController.updateDeal","parameters":[{"in":"path","name":"id","required":true,"schema":{"pattern":"[^\\/#\\?]+?","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicDealPatchDto"}}},"description":"PublicDealPatchDto","required":false},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicDealDto"}}},"description":"Deal updated successfully"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Invalid request parameters"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizeErrorResponseDto"}}},"description":"Invalid or missing API key"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Deal not found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Internal server error"}},"summary":"Update Deal","tags":["Deals"],"description":"Partially updates an existing deal. Only the fields provided in the request body will be modified; all other fields remain unchanged.\n\n**Auto-Enrichment:** To trigger automatic company data enrichment, update the `company.url` field with a valid company website URL. When a valid URL is supplied, the system will automatically populate additional company information.","security":[{"ApiKeyAuth":[]}]},"delete":{"operationId":"PublicDealController.deleteDeal","parameters":[{"in":"path","name":"id","required":true,"schema":{"pattern":"[^\\/#\\?]+?","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommonResponseDto"}}},"description":"Deal deleted successfully"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizeErrorResponseDto"}}},"description":"Invalid or missing API key"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Deal not found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Internal server error"}},"summary":"Delete Deal","tags":["Deals"],"description":"Permanently removes a deal from the system.","security":[{"ApiKeyAuth":[]}]}},"/v1/deals/{id}/stage-history":{"get":{"operationId":"PublicDealController.getDealStageHistory","parameters":[{"in":"path","name":"id","required":true,"schema":{"pattern":"[^\\/#\\?]+?","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicDealStageHistoryResponseDto"}}},"description":"Stage transition history"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizeErrorResponseDto"}}},"description":"Invalid or missing API key"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Deal not found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Internal server error"}},"summary":"Get Deal Stage History","tags":["Deals"],"description":"Returns the chronological list of **stage transitions** for a deal, from the earliest recorded change to the most recent.","security":[{"ApiKeyAuth":[]}]}},"/v1/deals/batch":{"post":{"operationId":"PublicDealController.batchCreateDeals","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicDealBatchCreateDto"}}},"description":"PublicDealBatchCreateDto","required":false},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicDealBatchResponseDto"}}},"description":"Deals created successfully"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Invalid request parameters"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizeErrorResponseDto"}}},"description":"Invalid or missing API key"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Internal server error"}},"summary":"Batch Create Deals","tags":["Deals"],"description":"Creates multiple deals in a single request (up to 100). Each deal follows the same rules as the single create endpoint.\n\n**Atomicity:** This operation is all-or-nothing. If any deal in the array fails validation or creation, the entire request returns an error. Deals that were processed before the failure may have already been written; on error, check for partial side effects.","security":[{"ApiKeyAuth":[]}]},"patch":{"operationId":"PublicDealController.batchUpdateDeals","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicDealBatchPatchDto"}}},"description":"PublicDealBatchPatchDto","required":false},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicDealBatchResponseDto"}}},"description":"Deals updated successfully"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Invalid request parameters"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizeErrorResponseDto"}}},"description":"Invalid or missing API key"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"One or more deals not found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Internal server error"}},"summary":"Batch Update Deals","tags":["Deals"],"description":"Partially updates multiple deals in a single request (up to 100). Each item must include an `id` field identifying the deal to update. Only the fields provided will be modified.\n\n**Atomicity:** This operation is all-or-nothing. If any deal in the array fails (e.g. deal not found, invalid field), the entire request returns an error.","security":[{"ApiKeyAuth":[]}]}},"/v1/deals/aggregate":{"post":{"operationId":"PublicDealController.aggregateDeals","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicAggregateDealsDto"}}},"description":"PublicAggregateDealsDto","required":false},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicAggregateDealsResponseDto"}}},"description":"Aggregation results"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Invalid request parameters"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizeErrorResponseDto"}}},"description":"Invalid or missing API key"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Internal server error"}},"summary":"Aggregate Deals","tags":["Deals"],"description":"Groups deals by one or more fields and returns counts per group. Supports filtering before aggregation.\n\nUse the **List Deal Fields** endpoint to discover valid field IDs for `group_by` and `filters`.","security":[{"ApiKeyAuth":[]}]}},"/v1/deals/{dealId}/custom-fields/upload/{fieldId}":{"post":{"operationId":"PublicDealAttachmentController.uploadDealFieldAttachment","parameters":[{"in":"path","name":"dealId","required":true,"schema":{"pattern":"[^\\/#\\?]+?","type":"string"}},{"in":"path","name":"fieldId","required":true,"schema":{"pattern":"[^\\/#\\?]+?","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicDealAttachmentDto"}}},"description":"File uploaded successfully"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Invalid field type or missing file"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizeErrorResponseDto"}}},"description":"Invalid or missing API key"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Deal or field not found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Internal server error"}},"summary":"Upload Attachment to Deal Custom Field","tags":["Deal Attachments"],"description":"Uploads a file attachment to a deal custom field of type `attachment`. Send the file as `multipart/form-data` with the field name `file`.","requestBody":{"content":{"multipart/form-data":{"schema":{"type":"object","properties":{"file":{"type":"string","format":"binary","description":"The file to upload"}},"required":["file"]}}}},"security":[{"ApiKeyAuth":[]}]}},"/v1/deals/{dealId}/custom-fields/{fieldId}/attachments/{fileId}":{"delete":{"operationId":"PublicDealAttachmentController.deleteDealFieldAttachment","parameters":[{"in":"path","name":"dealId","required":true,"schema":{"pattern":"[^\\/#\\?]+?","type":"string"}},{"in":"path","name":"fieldId","required":true,"schema":{"pattern":"[^\\/#\\?]+?","type":"string"}},{"in":"path","name":"fileId","required":true,"schema":{"pattern":"[^\\/#\\?]+?","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommonResponseDto"}}},"description":"File deleted successfully"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Invalid field type"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizeErrorResponseDto"}}},"description":"Invalid or missing API key"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Deal or field not found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Internal server error"}},"summary":"Delete Attachment from Deal Custom Field","tags":["Deal Attachments"],"description":"Removes a file attachment from a deal custom field of type `attachment`. The file is also deleted from storage.","security":[{"ApiKeyAuth":[]}]}},"/v1/deals/{id}/logo":{"post":{"operationId":"PublicDealAttachmentController.uploadDealLogo","parameters":[{"in":"path","name":"id","required":true,"schema":{"pattern":"[^\\/#\\?]+?","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommonResponseDto"}}},"description":"Logo uploaded"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizeErrorResponseDto"}}},"description":""},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Deal not found"}},"summary":"Upload Deal Logo","tags":["Deal Attachments"],"description":"Uploads a logo for a deal. Send the file as `multipart/form-data` with the field name `file`. Replaces any existing logo.","requestBody":{"content":{"multipart/form-data":{"schema":{"type":"object","properties":{"file":{"type":"string","format":"binary"}},"required":["file"]}}}},"security":[{"ApiKeyAuth":[]}]},"delete":{"operationId":"PublicDealAttachmentController.deleteDealLogo","parameters":[{"in":"path","name":"id","required":true,"schema":{"pattern":"[^\\/#\\?]+?","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommonResponseDto"}}},"description":"Logo deleted"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizeErrorResponseDto"}}},"description":""},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Deal not found"}},"summary":"Delete Deal Logo","tags":["Deal Attachments"],"description":"Removes the logo from a deal.","security":[{"ApiKeyAuth":[]}]}},"/v1/investors/{id}/custom-fields/upload/{fieldId}":{"post":{"operationId":"PublicInvestorAttachmentController.uploadInvestorFieldAttachment","parameters":[{"in":"path","name":"id","required":true,"schema":{"pattern":"[^\\/#\\?]+?","type":"string"}},{"in":"path","name":"fieldId","required":true,"schema":{"pattern":"[^\\/#\\?]+?","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicDealAttachmentDto"}}},"description":"File uploaded successfully"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Invalid field type or missing file"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizeErrorResponseDto"}}},"description":"Invalid or missing API key"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Investor or field not found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Internal server error"}},"summary":"Upload Attachment to Investor Custom Field","tags":["Investor Attachments"],"description":"Uploads a file attachment to an investor custom field of type `attachment`. Send the file as `multipart/form-data` with the field name `file`.","requestBody":{"content":{"multipart/form-data":{"schema":{"type":"object","properties":{"file":{"type":"string","format":"binary","description":"The file to upload"}},"required":["file"]}}}},"security":[{"ApiKeyAuth":[]}]}},"/v1/investors/{id}/custom-fields/{fieldId}/attachments/{fileId}":{"delete":{"operationId":"PublicInvestorAttachmentController.deleteInvestorFieldAttachment","parameters":[{"in":"path","name":"id","required":true,"schema":{"pattern":"[^\\/#\\?]+?","type":"string"}},{"in":"path","name":"fieldId","required":true,"schema":{"pattern":"[^\\/#\\?]+?","type":"string"}},{"in":"path","name":"fileId","required":true,"schema":{"pattern":"[^\\/#\\?]+?","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommonResponseDto"}}},"description":"File deleted successfully"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Invalid field type"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizeErrorResponseDto"}}},"description":"Invalid or missing API key"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Investor or field not found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Internal server error"}},"summary":"Delete Attachment from Investor Custom Field","tags":["Investor Attachments"],"description":"Removes a file attachment from an investor custom field of type `attachment`. The file is also deleted from storage.","security":[{"ApiKeyAuth":[]}]}},"/v1/investors/{id}/logo":{"post":{"operationId":"PublicInvestorAttachmentController.uploadInvestorLogo","parameters":[{"in":"path","name":"id","required":true,"schema":{"pattern":"[^\\/#\\?]+?","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommonResponseDto"}}},"description":"Logo uploaded"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizeErrorResponseDto"}}},"description":""},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Investor not found"}},"summary":"Upload Investor Logo","tags":["Investor Attachments"],"description":"Uploads a logo for an investor. Send the file as `multipart/form-data` with the field name `file`. Replaces any existing logo.","requestBody":{"content":{"multipart/form-data":{"schema":{"type":"object","properties":{"file":{"type":"string","format":"binary"}},"required":["file"]}}}},"security":[{"ApiKeyAuth":[]}]},"delete":{"operationId":"PublicInvestorAttachmentController.deleteInvestorLogo","parameters":[{"in":"path","name":"id","required":true,"schema":{"pattern":"[^\\/#\\?]+?","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommonResponseDto"}}},"description":"Logo deleted"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizeErrorResponseDto"}}},"description":""},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Investor not found"}},"summary":"Delete Investor Logo","tags":["Investor Attachments"],"description":"Removes the logo from an investor.","security":[{"ApiKeyAuth":[]}]}},"/v1/companies/{id}/custom-fields/upload/{fieldId}":{"post":{"operationId":"PublicCompanyAttachmentController.uploadCompanyFieldAttachment","parameters":[{"in":"path","name":"id","required":true,"schema":{"pattern":"[^\\/#\\?]+?","type":"string"}},{"in":"path","name":"fieldId","required":true,"schema":{"pattern":"[^\\/#\\?]+?","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicDealAttachmentDto"}}},"description":"File uploaded successfully"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Invalid field type or missing file"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizeErrorResponseDto"}}},"description":"Invalid or missing API key"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Company or field not found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Internal server error"}},"summary":"Upload Attachment to Company Custom Field","tags":["Company Attachments"],"description":"Uploads a file attachment to a company custom field of type `attachment`. Send the file as `multipart/form-data` with the field name `file`.","requestBody":{"content":{"multipart/form-data":{"schema":{"type":"object","properties":{"file":{"type":"string","format":"binary","description":"The file to upload"}},"required":["file"]}}}},"security":[{"ApiKeyAuth":[]}]}},"/v1/companies/{id}/custom-fields/{fieldId}/attachments/{fileId}":{"delete":{"operationId":"PublicCompanyAttachmentController.deleteCompanyFieldAttachment","parameters":[{"in":"path","name":"id","required":true,"schema":{"pattern":"[^\\/#\\?]+?","type":"string"}},{"in":"path","name":"fieldId","required":true,"schema":{"pattern":"[^\\/#\\?]+?","type":"string"}},{"in":"path","name":"fileId","required":true,"schema":{"pattern":"[^\\/#\\?]+?","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommonResponseDto"}}},"description":"File deleted successfully"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Invalid field type"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizeErrorResponseDto"}}},"description":"Invalid or missing API key"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Company or field not found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Internal server error"}},"summary":"Delete Attachment from Company Custom Field","tags":["Company Attachments"],"description":"Removes a file attachment from a company custom field of type `attachment`. The file is also deleted from storage.","security":[{"ApiKeyAuth":[]}]}},"/v1/companies/{id}/logo":{"post":{"operationId":"PublicCompanyAttachmentController.uploadCompanyLogo","parameters":[{"in":"path","name":"id","required":true,"schema":{"pattern":"[^\\/#\\?]+?","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommonResponseDto"}}},"description":"Logo uploaded"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizeErrorResponseDto"}}},"description":""},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Company not found"}},"summary":"Upload Company Logo","tags":["Company Attachments"],"description":"Uploads a logo for a company. Send the file as `multipart/form-data` with the field name `file`. Replaces any existing logo.","requestBody":{"content":{"multipart/form-data":{"schema":{"type":"object","properties":{"file":{"type":"string","format":"binary"}},"required":["file"]}}}},"security":[{"ApiKeyAuth":[]}]},"delete":{"operationId":"PublicCompanyAttachmentController.deleteCompanyLogo","parameters":[{"in":"path","name":"id","required":true,"schema":{"pattern":"[^\\/#\\?]+?","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommonResponseDto"}}},"description":"Logo deleted"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizeErrorResponseDto"}}},"description":""},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Company not found"}},"summary":"Delete Company Logo","tags":["Company Attachments"],"description":"Removes the logo from a company.","security":[{"ApiKeyAuth":[]}]}},"/v1/fundraisings/{id}/custom-fields/upload/{fieldId}":{"post":{"operationId":"PublicFundraisingAttachmentController.uploadFundraisingFieldAttachment","parameters":[{"in":"path","name":"id","required":true,"schema":{"pattern":"[^\\/#\\?]+?","type":"string"}},{"in":"path","name":"fieldId","required":true,"schema":{"pattern":"[^\\/#\\?]+?","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicDealAttachmentDto"}}},"description":"File uploaded successfully"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Invalid field type or missing file"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizeErrorResponseDto"}}},"description":"Invalid or missing API key"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Fundraising or field not found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Internal server error"}},"summary":"Upload Attachment to Fundraising Custom Field","tags":["Fundraising Attachments"],"description":"Uploads a file attachment to a fundraising custom field of type `attachment`. Send the file as `multipart/form-data` with the field name `file`.","requestBody":{"content":{"multipart/form-data":{"schema":{"type":"object","properties":{"file":{"type":"string","format":"binary","description":"The file to upload"}},"required":["file"]}}}},"security":[{"ApiKeyAuth":[]}]}},"/v1/fundraisings/{id}/custom-fields/{fieldId}/attachments/{fileId}":{"delete":{"operationId":"PublicFundraisingAttachmentController.deleteFundraisingFieldAttachment","parameters":[{"in":"path","name":"id","required":true,"schema":{"pattern":"[^\\/#\\?]+?","type":"string"}},{"in":"path","name":"fieldId","required":true,"schema":{"pattern":"[^\\/#\\?]+?","type":"string"}},{"in":"path","name":"fileId","required":true,"schema":{"pattern":"[^\\/#\\?]+?","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommonResponseDto"}}},"description":"File deleted successfully"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Invalid field type"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizeErrorResponseDto"}}},"description":"Invalid or missing API key"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Fundraising or field not found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Internal server error"}},"summary":"Delete Attachment from Fundraising Custom Field","tags":["Fundraising Attachments"],"description":"Removes a file attachment from a fundraising custom field of type `attachment`. The file is also deleted from storage.","security":[{"ApiKeyAuth":[]}]}},"/v1/fundraisings/{id}/logo":{"post":{"operationId":"PublicFundraisingAttachmentController.uploadFundraisingLogo","parameters":[{"in":"path","name":"id","required":true,"schema":{"pattern":"[^\\/#\\?]+?","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommonResponseDto"}}},"description":"Logo uploaded"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizeErrorResponseDto"}}},"description":""},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Fundraising not found"}},"summary":"Upload Fundraising Logo","tags":["Fundraising Attachments"],"description":"Uploads a logo for a fundraising opportunity. Send the file as `multipart/form-data` with the field name `file`. Replaces any existing logo.","requestBody":{"content":{"multipart/form-data":{"schema":{"type":"object","properties":{"file":{"type":"string","format":"binary"}},"required":["file"]}}}},"security":[{"ApiKeyAuth":[]}]},"delete":{"operationId":"PublicFundraisingAttachmentController.deleteFundraisingLogo","parameters":[{"in":"path","name":"id","required":true,"schema":{"pattern":"[^\\/#\\?]+?","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommonResponseDto"}}},"description":"Logo deleted"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizeErrorResponseDto"}}},"description":""},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Fundraising not found"}},"summary":"Delete Fundraising Logo","tags":["Fundraising Attachments"],"description":"Removes the logo from a fundraising opportunity.","security":[{"ApiKeyAuth":[]}]}},"/v1/fundraisings/stages":{"get":{"operationId":"PublicFundraisingController.getStages","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicViewAllStagesDto"}}},"description":"List of available fundraising stages"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizeErrorResponseDto"}}},"description":"Invalid or missing API key"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Internal server error"}},"summary":"Get Fundraising Stages","tags":["Fundraisings"],"description":"Returns all available fundraising stages. Stages represent the lifecycle phases of a fundraising process.","security":[{"ApiKeyAuth":[]}]}},"/v1/fundraisings/custom-fields":{"get":{"operationId":"PublicFundraisingController.getCustomFields","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicCustomFieldsDto"}}},"description":"Schema of custom fields for fundraising"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizeErrorResponseDto"}}},"description":"Invalid or missing API key"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Internal server error"}},"summary":"Get Fundraising Custom Fields","tags":["Fundraisings"],"description":"Returns the schema of all custom fields configured for the Fundraising entity. Custom fields allow organizations to extend the default fundraising data model with additional attributes.","security":[{"ApiKeyAuth":[]}]}},"/v1/fundraisings/custom-fields/add":{"post":{"operationId":"PublicFundraisingController.addCustomField","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicCreateCustomFieldDto"}}},"description":"PublicCreateCustomFieldDto","required":false},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicCustomFieldDto"}}},"description":"Custom field created successfully"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Invalid request parameters"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizeErrorResponseDto"}}},"description":"Invalid or missing API key"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Internal server error"}},"summary":"Add Custom Field","tags":["Fundraisings"],"description":"Adds a new **custom field** to the fundraising schema.","security":[{"ApiKeyAuth":[]}]}},"/v1/fundraisings/custom-fields/{fieldId}":{"patch":{"operationId":"PublicFundraisingController.updateCustomField","parameters":[{"in":"path","name":"fieldId","required":true,"schema":{"pattern":"[^\\/#\\?]+?","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicUpdateCustomFieldDto"}}},"description":"PublicUpdateCustomFieldDto","required":false},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicCustomFieldDto"}}},"description":"Custom field updated successfully"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Invalid request parameters"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizeErrorResponseDto"}}},"description":"Invalid or missing API key"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Internal server error"}},"summary":"Update Custom Field","tags":["Fundraisings"],"description":"Partially updates an existing **custom field** in the fundraising schema. Only the fields provided in the request body will be modified.","security":[{"ApiKeyAuth":[]}]}},"/v1/fundraisings/custom-fields/delete":{"delete":{"operationId":"PublicFundraisingController.deleteCustomField","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicDeleteCustomFieldDto"}}},"description":"PublicDeleteCustomFieldDto","required":false},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommonResponseDto"}}},"description":"Custom field deleted successfully"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Invalid request parameters"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizeErrorResponseDto"}}},"description":"Invalid or missing API key"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Internal server error"}},"summary":"Delete Custom Field","tags":["Fundraisings"],"description":"Deletes an existing **custom field** from the fundraising schema.","security":[{"ApiKeyAuth":[]}]}},"/v1/fundraisings/stages/add":{"post":{"operationId":"PublicFundraisingController.addStage","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicCreateFundraisingStageDto"}}},"description":"PublicCreateFundraisingStageDto","required":false},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicViewPipelineStageDto"}}},"description":"Stage created successfully"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Invalid request parameters"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizeErrorResponseDto"}}},"description":"Invalid or missing API key"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Internal server error"}},"summary":"Add Fundraising Stage","tags":["Fundraisings"],"description":"Adds a new **stage** to the fundraising lifecycle.","security":[{"ApiKeyAuth":[]}]}},"/v1/fundraisings/stages/{stageId}":{"patch":{"operationId":"PublicFundraisingController.updateStage","parameters":[{"in":"path","name":"stageId","required":true,"schema":{"pattern":"[^\\/#\\?]+?","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicUpdateFundraisingStageDto"}}},"description":"PublicUpdateFundraisingStageDto","required":false},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicViewPipelineStageDto"}}},"description":"Stage updated successfully"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Invalid request parameters"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizeErrorResponseDto"}}},"description":"Invalid or missing API key"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Internal server error"}},"summary":"Update Fundraising Stage","tags":["Fundraisings"],"description":"Partially updates an existing **stage** in the fundraising lifecycle. Only the fields provided in the request body will be modified.","security":[{"ApiKeyAuth":[]}]}},"/v1/fundraisings/stages/delete":{"delete":{"operationId":"PublicFundraisingController.deleteStage","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicDeleteFundraisingStageDto"}}},"description":"PublicDeleteFundraisingStageDto","required":false},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommonResponseDto"}}},"description":"Stage deleted successfully"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Invalid request parameters"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizeErrorResponseDto"}}},"description":"Invalid or missing API key"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Internal server error"}},"summary":"Delete Fundraising Stage","tags":["Fundraisings"],"description":"Deletes an existing **stage** from the fundraising lifecycle.","security":[{"ApiKeyAuth":[]}]}},"/v1/fundraisings/{id}":{"get":{"operationId":"PublicFundraisingController.getFundraisingById","parameters":[{"in":"path","name":"id","required":true,"schema":{"pattern":"[^\\/#\\?]+?","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicFundraisingDto"}}},"description":"Fundraising found"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizeErrorResponseDto"}}},"description":"Invalid or missing API key"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Fundraising not found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Internal server error"}},"summary":"Get Fundraising by ID","tags":["Fundraisings"],"description":"Returns a single **fundraising** record by its unique identifier.","security":[{"ApiKeyAuth":[]}]},"patch":{"operationId":"PublicFundraisingController.updateFundraising","parameters":[{"in":"path","name":"id","required":true,"schema":{"pattern":"[^\\/#\\?]+?","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicFundraisingPatchDto"}}},"description":"PublicFundraisingPatchDto","required":false},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicFundraisingDto"}}},"description":"Fundraising updated successfully"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Invalid request parameters"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizeErrorResponseDto"}}},"description":"Invalid or missing API key"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Fundraising not found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Internal server error"}},"summary":"Update Fundraising","tags":["Fundraisings"],"description":"Partially updates an existing fundraising record. Only the fields provided in the request body will be modified; all other fields remain unchanged.\n\n**Auto-Enrichment:** To trigger automatic company data enrichment, update the `fields.website` field with a valid company website URL. When a valid URL is supplied, the system will automatically populate additional company information.","security":[{"ApiKeyAuth":[]}]},"delete":{"operationId":"PublicFundraisingController.deleteDeal","parameters":[{"in":"path","name":"id","required":true,"schema":{"pattern":"[^\\/#\\?]+?","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommonResponseDto"}}},"description":"Fundraising deleted successfully"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizeErrorResponseDto"}}},"description":"Invalid or missing API key"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Fundraising not found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Internal server error"}},"summary":"Delete Fundraising","tags":["Fundraisings"],"description":"Permanently removes a fundraising record from the system.","security":[{"ApiKeyAuth":[]}]}},"/v1/fundraisings":{"get":{"operationId":"PublicFundraisingController.getFundraising","parameters":[{"in":"query","name":"stages","schema":{"items":{"type":"string"},"type":"array","default":[],"description":"Filter by stage IDs. Stage IDs can be found in GET /v1/fundraisings/stages endpoint.\n\n**Note:** To provide multiple values, repeat the parameter in query: `?stages=value1&stages=value2`"}},{"in":"query","name":"limit","schema":{"maximum":100,"type":"integer","minimum":1,"default":100,"description":"Maximum number of results to return per request."}},{"in":"query","name":"offset","schema":{"maximum":1000000,"type":"integer","minimum":0,"default":0,"description":"Number of results to skip for pagination."}},{"in":"query","name":"search","schema":{"type":"string","default":null,"description":"Search query string to filter results."}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicViewAllFundraisingDto"}}},"description":"List of fundraisings matching the search criteria"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Invalid request parameters"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizeErrorResponseDto"}}},"description":"Invalid or missing API key"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Resource not found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Internal server error"}},"summary":"List Fundraisings","tags":["Fundraisings"],"description":"Returns **fundraisings** based on search criteria, with filtering, sorting, and pagination.","security":[{"ApiKeyAuth":[]}]},"post":{"operationId":"PublicFundraisingController.createFundraising","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicFundraisingCreateDto"}}},"description":"PublicFundraisingCreateDto","required":false},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicFundraisingDto"}}},"description":"Fundraising created successfully"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Invalid request parameters"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizeErrorResponseDto"}}},"description":"Invalid or missing API key"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Internal server error"}},"summary":"Create Fundraising","tags":["Fundraisings"],"description":"Creates a new fundraising record in the specified stage. The fundraising will be associated with the authenticated organization.\n\n**Auto-Enrichment:** To enable automatic company data enrichment, provide a valid company website URL in the `fields.website` field. When a valid URL is supplied, the system will automatically populate additional company information.","security":[{"ApiKeyAuth":[]}]}},"/v1/contacts/lists":{"get":{"operationId":"PublicContactsController.getLists","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicViewAllListsDto"}}},"description":"Lists and folder structure"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizeErrorResponseDto"}}},"description":"Invalid or missing API key"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Internal server error"}},"summary":"Get folders and lists structure","tags":["Contacts"],"description":"Returns the full folder and list hierarchy. Each item has a `type` field: if `type` is `FOLDER`, the item contains `folderName` and `inside` (an array of nested items). If `type` is `LIST`, the item contains `listId` and `listName`.","security":[{"ApiKeyAuth":[]}]},"post":{"operationId":"PublicContactsController.createList","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicCreateContactListDto"}}},"description":"PublicCreateContactListDto","required":false},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicListDto"}}},"description":"Contact list created successfully"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Invalid request parameters"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizeErrorResponseDto"}}},"description":"Invalid or missing API key"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Internal server error"}},"summary":"Create Contact List","tags":["Contacts"],"description":"Creates a new **contact list** for the authenticated organization.","security":[{"ApiKeyAuth":[]}]}},"/v1/contacts/lists/{listId}":{"delete":{"operationId":"PublicContactsController.deleteList","parameters":[{"in":"path","name":"listId","required":true,"schema":{"pattern":"[^\\/#\\?]+?","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommonResponseDto"}}},"description":"Contact list deleted successfully"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Invalid request parameters"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizeErrorResponseDto"}}},"description":"Invalid or missing API key"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Contact list not found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Internal server error"}},"summary":"Delete Contact List","tags":["Contacts"],"description":"Permanently removes a **contact list**. Contacts in the list are deleted. The default \"All Contacts\" list cannot be deleted.","security":[{"ApiKeyAuth":[]}]}},"/v1/contacts/custom-fields":{"get":{"operationId":"PublicContactsController.getCustomFields","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicCustomFieldsDto"}}},"description":"Schema of custom fields for contact"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizeErrorResponseDto"}}},"description":"Invalid or missing API key"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Internal server error"}},"summary":"Get Contact Custom Fields","tags":["Contacts"],"description":"Returns the schema of all custom fields configured for the Contact entity. Custom fields allow organizations to extend the default contact data model with additional attributes.","security":[{"ApiKeyAuth":[]}]}},"/v1/contacts":{"get":{"operationId":"PublicContactsController.getContacts","parameters":[{"in":"query","name":"listId","schema":{"type":"string"}},{"in":"query","name":"limit","schema":{"maximum":100,"type":"integer","minimum":1,"default":100,"description":"Maximum number of results to return per request."}},{"in":"query","name":"offset","schema":{"maximum":1000000,"type":"integer","minimum":0,"default":0,"description":"Number of results to skip for pagination."}},{"in":"query","name":"search","schema":{"type":"string","default":null,"description":"Search query string to filter results."}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicViewAllContactsDto"}}},"description":""},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Invalid request parameters"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizeErrorResponseDto"}}},"description":"Invalid or missing API key"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Resource not found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Internal server error"}},"summary":"List Contacts","tags":["Contacts"],"description":"Return **contacts** based on search criteria.","security":[{"ApiKeyAuth":[]}]},"post":{"operationId":"PublicContactsController.createContact","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicCreateContactDto"}}},"description":"PublicCreateContactDto","required":false},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicContactDto"}}},"description":"Contact created successfully"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Invalid request parameters"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizeErrorResponseDto"}}},"description":"Invalid or missing API key"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"List not found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Internal server error"}},"summary":"Create Contact","tags":["Contacts"],"description":"Creates a new contact in the specified list. If contact information such as emails or social URLs (e.g. LinkedIn) are provided, an automatic enrichment check will be triggered to populate additional contact details from external data sources.","security":[{"ApiKeyAuth":[]}]}},"/v1/contacts/{id}":{"get":{"operationId":"PublicContactsController.getContactById","parameters":[{"in":"path","name":"id","required":true,"schema":{"pattern":"[^\\/#\\?]+?","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicContactDto"}}},"description":"Contact found"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizeErrorResponseDto"}}},"description":"Invalid or missing API key"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Contact not found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Internal server error"}},"summary":"Get Contact by ID","tags":["Contacts"],"description":"Returns a single **contact** by its unique identifier.","security":[{"ApiKeyAuth":[]}]},"patch":{"operationId":"PublicContactsController.updateContact","parameters":[{"in":"path","name":"id","required":true,"schema":{"pattern":"[^\\/#\\?]+?","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicUpdateContactDto"}}},"description":"PublicUpdateContactDto","required":false},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicContactDto"}}},"description":"Contact updated successfully"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Invalid request parameters"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizeErrorResponseDto"}}},"description":"Invalid or missing API key"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Contact not found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Internal server error"}},"summary":"Update Contact","tags":["Contacts"],"description":"Partially updates a contact by its unique identifier. Only provided fields are modified. **Note:** `jobs`, `location`, and `homeLocation` are fully replaced when provided. `socialLinks` is partially updated — only the provided sub-fields are overwritten.","security":[{"ApiKeyAuth":[]}]},"delete":{"operationId":"PublicContactsController.deleteContact","parameters":[{"in":"path","name":"id","required":true,"schema":{"pattern":"[^\\/#\\?]+?","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommonResponseDto"}}},"description":"Contact deleted successfully"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizeErrorResponseDto"}}},"description":"Invalid or missing API key"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Contact not found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Internal server error"}},"summary":"Delete Contact","tags":["Contacts"],"description":"Permanently removes a contact by its unique identifier.","security":[{"ApiKeyAuth":[]}]}},"/v1/contacts/custom-fields/add":{"post":{"operationId":"PublicContactsController.addCustomField","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicCreateContactCustomFieldDto"}}},"description":"PublicCreateContactCustomFieldDto","required":false},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicCustomFieldDto"}}},"description":"Custom field created successfully"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Invalid request parameters"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizeErrorResponseDto"}}},"description":"Invalid or missing API key"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Internal server error"}},"summary":"Add Custom Field","tags":["Contacts"],"description":"Adds a new **custom field** to the contact schema.","security":[{"ApiKeyAuth":[]}]}},"/v1/contacts/custom-fields/{fieldId}":{"patch":{"operationId":"PublicContactsController.updateCustomField","parameters":[{"in":"path","name":"fieldId","required":true,"schema":{"pattern":"[^\\/#\\?]+?","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicUpdateContactCustomFieldDto"}}},"description":"PublicUpdateContactCustomFieldDto","required":false},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicCustomFieldDto"}}},"description":"Custom field updated successfully"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Invalid request parameters"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizeErrorResponseDto"}}},"description":"Invalid or missing API key"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Internal server error"}},"summary":"Update Custom Field","tags":["Contacts"],"description":"Partially updates an existing **custom field** in the contact schema. Only the fields provided in the request body will be modified.","security":[{"ApiKeyAuth":[]}]}},"/v1/contacts/custom-fields/delete":{"delete":{"operationId":"PublicContactsController.deleteCustomField","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicDeleteCustomFieldDto"}}},"description":"PublicDeleteCustomFieldDto","required":false},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommonResponseDto"}}},"description":"Custom field deleted successfully"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Invalid request parameters"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizeErrorResponseDto"}}},"description":"Invalid or missing API key"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Internal server error"}},"summary":"Delete Custom Field","tags":["Contacts"],"description":"Deletes an existing **custom field** from the contact schema.","security":[{"ApiKeyAuth":[]}]}},"/v1/contacts/{id}/photo":{"post":{"operationId":"PublicContactsController.uploadContactPhoto","parameters":[{"in":"path","name":"id","required":true,"schema":{"pattern":"[^\\/#\\?]+?","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommonResponseDto"}}},"description":"Photo uploaded"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizeErrorResponseDto"}}},"description":"Invalid or missing API key"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Contact not found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Internal server error"}},"summary":"Upload Contact Photo","tags":["Contacts"],"description":"Uploads a photo for a contact. Send the file as `multipart/form-data` with the field name `file`. Replaces any existing photo.","requestBody":{"content":{"multipart/form-data":{"schema":{"type":"object","properties":{"file":{"type":"string","format":"binary","description":"The photo file to upload"}},"required":["file"]}}}},"security":[{"ApiKeyAuth":[]}]},"delete":{"operationId":"PublicContactsController.deleteContactPhoto","parameters":[{"in":"path","name":"id","required":true,"schema":{"pattern":"[^\\/#\\?]+?","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommonResponseDto"}}},"description":"Photo deleted"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizeErrorResponseDto"}}},"description":"Invalid or missing API key"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Contact not found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Internal server error"}},"summary":"Delete Contact Photo","tags":["Contacts"],"description":"Removes the photo from a contact.","security":[{"ApiKeyAuth":[]}]}},"/v1/contacts/{id}/lists/{listId}":{"delete":{"operationId":"PublicContactsController.removeContactFromList","parameters":[{"in":"path","name":"id","required":true,"schema":{"pattern":"[^\\/#\\?]+?","type":"string"}},{"in":"path","name":"listId","required":true,"schema":{"pattern":"[^\\/#\\?]+?","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommonResponseDto"}}},"description":"Contact removed from list"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizeErrorResponseDto"}}},"description":"Invalid or missing API key"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Contact not found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Internal server error"}},"summary":"Remove Contact from List","tags":["Contacts"],"description":"Removes a contact from the specified list only. The contact remains in other lists it belongs to. To permanently delete a contact from all lists, use `DELETE /v1/contacts/:id` instead.","security":[{"ApiKeyAuth":[]}]}},"/v1/investors/custom-fields":{"get":{"operationId":"PublicInvestorsController.getCustomFields","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicCustomFieldsDto"}}},"description":"Schema of custom fields for investors"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizeErrorResponseDto"}}},"description":"Invalid or missing API key"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Internal server error"}},"summary":"List Custom Fields","tags":["Investors"],"description":"**Custom fields** allow users to store additional information","security":[{"ApiKeyAuth":[]}]}},"/v1/investors/custom-fields/add":{"post":{"operationId":"PublicInvestorsController.addCustomField","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicCreateCustomFieldDto"}}},"description":"PublicCreateCustomFieldDto","required":false},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicCustomFieldDto"}}},"description":"Custom field created successfully"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Invalid request parameters"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizeErrorResponseDto"}}},"description":"Invalid or missing API key"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Internal server error"}},"summary":"Add Custom Field","tags":["Investors"],"description":"Adds a new **custom field** to the investor schema.","security":[{"ApiKeyAuth":[]}]}},"/v1/investors/custom-fields/{fieldId}":{"patch":{"operationId":"PublicInvestorsController.updateCustomField","parameters":[{"in":"path","name":"fieldId","required":true,"schema":{"pattern":"[^\\/#\\?]+?","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicUpdateCustomFieldDto"}}},"description":"PublicUpdateCustomFieldDto","required":false},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicCustomFieldDto"}}},"description":"Custom field updated successfully"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Invalid request parameters"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizeErrorResponseDto"}}},"description":"Invalid or missing API key"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Internal server error"}},"summary":"Update Custom Field","tags":["Investors"],"description":"Partially updates an existing **custom field** in the investor schema. Only the fields provided in the request body will be modified.","security":[{"ApiKeyAuth":[]}]}},"/v1/investors/custom-fields/delete":{"delete":{"operationId":"PublicInvestorsController.deleteCustomField","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicDeleteCustomFieldDto"}}},"description":"PublicDeleteCustomFieldDto","required":false},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommonResponseDto"}}},"description":"Custom field deleted successfully"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Invalid request parameters"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizeErrorResponseDto"}}},"description":"Invalid or missing API key"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Internal server error"}},"summary":"Delete Custom Field","tags":["Investors"],"description":"Deletes an existing **custom field** from the investor schema.","security":[{"ApiKeyAuth":[]}]}},"/v1/investors/{id}":{"get":{"operationId":"PublicInvestorsController.getInvestorById","parameters":[{"in":"path","name":"id","required":true,"schema":{"pattern":"[^\\/#\\?]+?","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicInvestorDto"}}},"description":"Investor found"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizeErrorResponseDto"}}},"description":"Invalid or missing API key"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Investor not found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Internal server error"}},"summary":"Get Investor by ID","tags":["Investors"],"description":"Returns a single **investor** by its unique identifier.","security":[{"ApiKeyAuth":[]}]},"patch":{"operationId":"PublicInvestorsController.updateInvestor","parameters":[{"in":"path","name":"id","required":true,"schema":{"pattern":"[^\\/#\\?]+?","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicInvestorPatchDto"}}},"description":"PublicInvestorPatchDto","required":false},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicInvestorDto"}}},"description":"Investor updated successfully"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Invalid request parameters"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizeErrorResponseDto"}}},"description":"Invalid or missing API key"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Investor not found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Internal server error"}},"summary":"Update Investor","tags":["Investors"],"description":"Updates an existing **investors** in the system.\n\n**Auto-Enrichment:** To enable automatic company data enrichment, provide a valid company website URL in the `fields.website` field. When a valid URL is supplied, the system will automatically populate additional company information.","security":[{"ApiKeyAuth":[]}]},"delete":{"operationId":"PublicInvestorsController.deleteInvestor","parameters":[{"in":"path","name":"id","required":true,"schema":{"pattern":"[^\\/#\\?]+?","type":"string"}}],"responses":{"200":{"content":{"application/json":{}},"description":"Successful response"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Invalid request parameters"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizeErrorResponseDto"}}},"description":"Invalid or missing API key"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Investor not found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Internal server error"}},"summary":"Delete Investor","tags":["Investors"],"description":"Deletes an existing **investors** from the system.","security":[{"ApiKeyAuth":[]}]}},"/v1/investors":{"get":{"operationId":"PublicInvestorsController.getInvestors","parameters":[{"in":"query","name":"search","schema":{"type":"string","default":null,"description":"Search query string to filter results."}},{"in":"query","name":"limit","schema":{"maximum":100,"type":"integer","minimum":1,"default":100,"description":"Maximum number of results to return per request."}},{"in":"query","name":"offset","schema":{"maximum":1000000,"type":"integer","minimum":0,"default":0,"description":"Number of results to skip for pagination."}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicViewAllInvestorsDto"}}},"description":"List of investors matching the search criteria"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Invalid request parameters"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizeErrorResponseDto"}}},"description":"Invalid or missing API key"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Resource not found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Internal server error"}},"summary":"List Investors","tags":["Investors"],"description":"Returns **investors** based on search criteria, with filtering, sorting, and pagination.","security":[{"ApiKeyAuth":[]}]},"post":{"operationId":"PublicInvestorsController.createInvestor","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicInvestorCreateDto"}}},"description":"PublicInvestorCreateDto","required":false},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicInvestorDto"}}},"description":"Investor created successfully"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Invalid request parameters"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizeErrorResponseDto"}}},"description":"Invalid or missing API key"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Internal server error"}},"summary":"Create Investor","tags":["Investors"],"description":"Creates a new **investors** in the system.\n\n**Auto-Enrichment:** To enable automatic company data enrichment, provide a valid company website URL in the `fields.website` field. When a valid URL is supplied, the system will automatically populate additional company information.","security":[{"ApiKeyAuth":[]}]}},"/v1/notes/folders":{"get":{"operationId":"PublicNotesController.getFolders","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicViewAllNoteFoldersDto"}}},"description":"List of note folders"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizeErrorResponseDto"}}},"description":"Invalid or missing API key"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Internal server error"}},"summary":"List Note Folders","tags":["Notes"],"description":"Returns all **note folders** accessible to the authenticated user.","security":[{"ApiKeyAuth":[]}]}},"/v1/notes":{"get":{"operationId":"PublicNotesController.getNotes","parameters":[{"in":"query","name":"folderId","schema":{"pattern":"^[0-9a-fA-F]{24}$","type":"string","description":"Filter notes by folder ID."}},{"in":"query","name":"limit","schema":{"maximum":100,"type":"integer","minimum":1,"default":100,"description":"Maximum number of results to return per request."}},{"in":"query","name":"offset","schema":{"maximum":1000000,"type":"integer","minimum":0,"default":0,"description":"Number of results to skip for pagination."}},{"in":"query","name":"search","schema":{"type":"string","default":null,"description":"Search query string to filter results."}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicViewAllNotesDto"}}},"description":"List of notes matching the search criteria"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Invalid request parameters"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizeErrorResponseDto"}}},"description":"Invalid or missing API key"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Internal server error"}},"summary":"List Notes","tags":["Notes"],"description":"Returns **notes** based on search criteria, with optional folder filtering and pagination.","security":[{"ApiKeyAuth":[]}]},"post":{"operationId":"PublicNotesController.createNote","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicCreateNoteDto"}}},"description":"PublicCreateNoteDto","required":false},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicNoteDto"}}},"description":"Note created successfully"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Invalid request parameters"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizeErrorResponseDto"}}},"description":"Invalid or missing API key"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Internal server error"}},"summary":"Create Note","tags":["Notes"],"description":"Creates a new **note** with the specified title, optional text content, and optional folder assignment.","security":[{"ApiKeyAuth":[]}]}},"/v1/notes/{id}":{"get":{"operationId":"PublicNotesController.getNoteById","parameters":[{"in":"path","name":"id","required":true,"schema":{"pattern":"[^\\/#\\?]+?","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicNoteDto"}}},"description":"Note found"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizeErrorResponseDto"}}},"description":"Invalid or missing API key"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Note not found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Internal server error"}},"summary":"Get Note by ID","tags":["Notes"],"description":"Returns a single **note** by its unique identifier.","security":[{"ApiKeyAuth":[]}]},"patch":{"operationId":"PublicNotesController.updateNote","parameters":[{"in":"path","name":"id","required":true,"schema":{"pattern":"[^\\/#\\?]+?","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicUpdateNoteDto"}}},"description":"PublicUpdateNoteDto","required":false},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicNoteDto"}}},"description":"Note updated successfully"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Invalid request parameters"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizeErrorResponseDto"}}},"description":"Invalid or missing API key"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Note not found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Internal server error"}},"summary":"Update Note","tags":["Notes"],"description":"Partially updates an existing **note**. Only the fields provided in the request body will be modified; all other fields remain unchanged.","security":[{"ApiKeyAuth":[]}]},"delete":{"operationId":"PublicNotesController.deleteNote","parameters":[{"in":"path","name":"id","required":true,"schema":{"pattern":"[^\\/#\\?]+?","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommonResponseDto"}}},"description":"Note deleted successfully"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Invalid request parameters"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizeErrorResponseDto"}}},"description":"Invalid or missing API key"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Internal server error"}},"summary":"Delete Note","tags":["Notes"],"description":"Permanently removes a **note** from the system.","security":[{"ApiKeyAuth":[]}]}},"/v1/deals/{id}/notes":{"get":{"operationId":"PublicDealLinkingController.getLinkedNotes","parameters":[{"in":"path","name":"id","required":true,"schema":{"pattern":"[^\\/#\\?]+?","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicLinkedNotesDto"}}},"description":"List of notes linked to the deal"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizeErrorResponseDto"}}},"description":"Invalid or missing API key"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Deal not found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Internal server error"}},"summary":"List Linked Notes","tags":["Deals-Linking"],"description":"Returns all **notes** linked to the specified deal.","security":[{"ApiKeyAuth":[]}]}},"/v1/deals/{id}/notes/{noteId}":{"post":{"operationId":"PublicDealLinkingController.linkNote","parameters":[{"in":"path","name":"id","required":true,"schema":{"pattern":"[^\\/#\\?]+?","type":"string"}},{"in":"path","name":"noteId","required":true,"schema":{"pattern":"[^\\/#\\?]+?","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommonResponseDto"}}},"description":"Note linked to deal successfully"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Invalid request or linking failed"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizeErrorResponseDto"}}},"description":"Invalid or missing API key"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Deal or note not found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Internal server error"}},"summary":"Link Note to Deal","tags":["Deals-Linking"],"description":"Establishes a link between an existing **note** and a **deal**. No request body is needed.","security":[{"ApiKeyAuth":[]}]},"delete":{"operationId":"PublicDealLinkingController.unlinkNote","parameters":[{"in":"path","name":"id","required":true,"schema":{"pattern":"[^\\/#\\?]+?","type":"string"}},{"in":"path","name":"noteId","required":true,"schema":{"pattern":"[^\\/#\\?]+?","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommonResponseDto"}}},"description":"Note unlinked from deal successfully"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Invalid request or unlinking failed"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizeErrorResponseDto"}}},"description":"Invalid or missing API key"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Deal or note not found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Internal server error"}},"summary":"Unlink Note from Deal","tags":["Deals-Linking"],"description":"Removes the link between a **note** and a **deal**. The note itself is not deleted.","security":[{"ApiKeyAuth":[]}]}},"/v1/investors/{id}/notes":{"get":{"operationId":"PublicInvestorLinkingController.getLinkedNotes","parameters":[{"in":"path","name":"id","required":true,"schema":{"pattern":"[^\\/#\\?]+?","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicLinkedNotesDto"}}},"description":"List of notes linked to the investor"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizeErrorResponseDto"}}},"description":"Invalid or missing API key"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Investor not found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Internal server error"}},"summary":"List Linked Notes","tags":["Investors-Linking"],"description":"Returns all **notes** linked to the specified investor.","security":[{"ApiKeyAuth":[]}]}},"/v1/investors/{id}/notes/{noteId}":{"post":{"operationId":"PublicInvestorLinkingController.linkNote","parameters":[{"in":"path","name":"id","required":true,"schema":{"pattern":"[^\\/#\\?]+?","type":"string"}},{"in":"path","name":"noteId","required":true,"schema":{"pattern":"[^\\/#\\?]+?","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommonResponseDto"}}},"description":"Note linked to investor successfully"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Invalid request or linking failed"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizeErrorResponseDto"}}},"description":"Invalid or missing API key"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Investor or note not found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Internal server error"}},"summary":"Link Note to Investor","tags":["Investors-Linking"],"description":"Establishes a link between an existing **note** and an **investor**. No request body is needed.","security":[{"ApiKeyAuth":[]}]},"delete":{"operationId":"PublicInvestorLinkingController.unlinkNote","parameters":[{"in":"path","name":"id","required":true,"schema":{"pattern":"[^\\/#\\?]+?","type":"string"}},{"in":"path","name":"noteId","required":true,"schema":{"pattern":"[^\\/#\\?]+?","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommonResponseDto"}}},"description":"Note unlinked from investor successfully"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Invalid request or unlinking failed"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizeErrorResponseDto"}}},"description":"Invalid or missing API key"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Investor or note not found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Internal server error"}},"summary":"Unlink Note from Investor","tags":["Investors-Linking"],"description":"Removes the link between a **note** and an **investor**. The note itself is not deleted.","security":[{"ApiKeyAuth":[]}]}},"/v1/fundraisings/{id}/notes":{"get":{"operationId":"PublicFundraisingLinkingController.getLinkedNotes","parameters":[{"in":"path","name":"id","required":true,"schema":{"pattern":"[^\\/#\\?]+?","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicLinkedNotesDto"}}},"description":"List of notes linked to the fundraising"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizeErrorResponseDto"}}},"description":"Invalid or missing API key"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Fundraising not found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Internal server error"}},"summary":"List Linked Notes","tags":["Fundraisings-Linking"],"description":"Returns all **notes** linked to the specified fundraising.","security":[{"ApiKeyAuth":[]}]}},"/v1/fundraisings/{id}/notes/{noteId}":{"post":{"operationId":"PublicFundraisingLinkingController.linkNote","parameters":[{"in":"path","name":"id","required":true,"schema":{"pattern":"[^\\/#\\?]+?","type":"string"}},{"in":"path","name":"noteId","required":true,"schema":{"pattern":"[^\\/#\\?]+?","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommonResponseDto"}}},"description":"Note linked to fundraising successfully"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Invalid request or linking failed"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizeErrorResponseDto"}}},"description":"Invalid or missing API key"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Fundraising or note not found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Internal server error"}},"summary":"Link Note to Fundraising","tags":["Fundraisings-Linking"],"description":"Establishes a link between an existing **note** and a **fundraising**. No request body is needed.","security":[{"ApiKeyAuth":[]}]},"delete":{"operationId":"PublicFundraisingLinkingController.unlinkNote","parameters":[{"in":"path","name":"id","required":true,"schema":{"pattern":"[^\\/#\\?]+?","type":"string"}},{"in":"path","name":"noteId","required":true,"schema":{"pattern":"[^\\/#\\?]+?","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommonResponseDto"}}},"description":"Note unlinked from fundraising successfully"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Invalid request or unlinking failed"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizeErrorResponseDto"}}},"description":"Invalid or missing API key"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Fundraising or note not found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Internal server error"}},"summary":"Unlink Note from Fundraising","tags":["Fundraisings-Linking"],"description":"Removes the link between a **note** and a **fundraising**. The note itself is not deleted.","security":[{"ApiKeyAuth":[]}]}},"/v1/contacts/{id}/notes":{"get":{"operationId":"PublicContactLinkingController.getLinkedNotes","parameters":[{"in":"path","name":"id","required":true,"schema":{"pattern":"[^\\/#\\?]+?","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicLinkedNotesDto"}}},"description":"List of notes linked to the contact"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizeErrorResponseDto"}}},"description":"Invalid or missing API key"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Contact not found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Internal server error"}},"summary":"List Linked Notes","tags":["Contacts-Linking"],"description":"Returns all **notes** linked to the specified contact.","security":[{"ApiKeyAuth":[]}]}},"/v1/contacts/{id}/notes/{noteId}":{"post":{"operationId":"PublicContactLinkingController.linkNote","parameters":[{"in":"path","name":"id","required":true,"schema":{"pattern":"[^\\/#\\?]+?","type":"string"}},{"in":"path","name":"noteId","required":true,"schema":{"pattern":"[^\\/#\\?]+?","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommonResponseDto"}}},"description":"Note linked to contact successfully"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Invalid request or linking failed"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizeErrorResponseDto"}}},"description":"Invalid or missing API key"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Contact or note not found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Internal server error"}},"summary":"Link Note to Contact","tags":["Contacts-Linking"],"description":"Establishes a link between an existing **note** and a **contact**. No request body is needed.","security":[{"ApiKeyAuth":[]}]},"delete":{"operationId":"PublicContactLinkingController.unlinkNote","parameters":[{"in":"path","name":"id","required":true,"schema":{"pattern":"[^\\/#\\?]+?","type":"string"}},{"in":"path","name":"noteId","required":true,"schema":{"pattern":"[^\\/#\\?]+?","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommonResponseDto"}}},"description":"Note unlinked from contact successfully"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Invalid request or unlinking failed"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizeErrorResponseDto"}}},"description":"Invalid or missing API key"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Contact or note not found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Internal server error"}},"summary":"Unlink Note from Contact","tags":["Contacts-Linking"],"description":"Removes the link between a **note** and a **contact**. The note itself is not deleted.","security":[{"ApiKeyAuth":[]}]}},"/v1/organization/users":{"get":{"operationId":"PublicOrganizationConfigurationController.getUsers","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicViewAllUsersDto"}}},"description":"List of users"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizeErrorResponseDto"}}},"description":"Invalid or missing API key"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Internal server error"}},"summary":"List Users","tags":["Organization Configuration"],"description":"Returns a list of users in the organization associated with the API key.","security":[{"ApiKeyAuth":[]}]},"post":{"operationId":"PublicOrganizationConfigurationController.addUser","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicAddUserDto"}}},"description":"PublicAddUserDto","required":false},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicUserDto"}}},"description":"User created successfully"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Invalid request parameters"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizeErrorResponseDto"}}},"description":"Invalid or missing API key"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Internal server error"}},"summary":"Add User","tags":["Organization Configuration"],"description":"Creates a new user in the organization associated with the API key.","security":[{"ApiKeyAuth":[]}]}},"/v1/organization/teams":{"get":{"operationId":"PublicOrganizationConfigurationController.getTeams","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicViewAllTeamsDto"}}},"description":"List of teams"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizeErrorResponseDto"}}},"description":"Invalid or missing API key"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Internal server error"}},"summary":"List Teams","tags":["Organization Configuration"],"description":"Returns a list of teams in the organization associated with the API key.","security":[{"ApiKeyAuth":[]}]}},"/v1/organization/users/{userId}/status":{"post":{"operationId":"PublicOrganizationConfigurationController.changeUserStatus","parameters":[{"in":"path","name":"userId","required":true,"schema":{"pattern":"[^\\/#\\?]+?","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicChangeUserStatusDto"}}},"description":"PublicChangeUserStatusDto","required":false},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommonResponseDto"}}},"description":"Status changed successfully"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Invalid request parameters"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizeErrorResponseDto"}}},"description":"Invalid or missing API key"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Internal server error"}},"summary":"Change User Status","tags":["Organization Configuration"],"description":"Changes the status of a user (ACTIVE or BLOCKED).","security":[{"ApiKeyAuth":[]}]}},"/v1/organization/users/{userId}/role":{"post":{"operationId":"PublicOrganizationConfigurationController.changeUserRole","parameters":[{"in":"path","name":"userId","required":true,"schema":{"pattern":"[^\\/#\\?]+?","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicChangeUserRoleDto"}}},"description":"PublicChangeUserRoleDto","required":false},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommonResponseDto"}}},"description":"Role changed successfully"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Invalid request parameters"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizeErrorResponseDto"}}},"description":"Invalid or missing API key"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Internal server error"}},"summary":"Change User Role","tags":["Organization Configuration"],"description":"Changes the company role of a user.","security":[{"ApiKeyAuth":[]}]}},"/v1/organization/modules/{module}":{"post":{"operationId":"PublicOrganizationConfigurationController.toggleModule","parameters":[{"in":"path","name":"module","required":true,"schema":{"pattern":"[^\\/#\\?]+?","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicToggleModuleDto"}}},"description":"PublicToggleModuleDto","required":false},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommonResponseDto"}}},"description":"Module toggled successfully"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Invalid module name or request parameters"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizeErrorResponseDto"}}},"description":"Invalid or missing API key"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Internal server error"}},"summary":"Toggle Module","tags":["Organization Configuration"],"description":"Enables or disables an organization module. Available modules: `deals`, `fundraising`, `investors`, `fees`, `themes`, `companies`, `contacts`.","security":[{"ApiKeyAuth":[]}]}},"/v1/companies/custom-fields":{"get":{"operationId":"PublicCompanyMetadataController.getCustomFields","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicCustomFieldsDto"}}},"description":"Schema of custom fields for companies"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizeErrorResponseDto"}}},"description":"Invalid or missing API key"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Internal server error"}},"summary":"List Custom Fields","tags":["Companies"],"description":"**Custom fields** allow users to store additional information on companies.","security":[{"ApiKeyAuth":[]}]}},"/v1/companies/custom-fields/add":{"post":{"operationId":"PublicCompanyMetadataController.addCustomField","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicCreateCustomFieldDto"}}},"description":"PublicCreateCustomFieldDto","required":false},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicCustomFieldDto"}}},"description":"Custom field created successfully"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Invalid request parameters"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizeErrorResponseDto"}}},"description":"Invalid or missing API key"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Internal server error"}},"summary":"Add Custom Field","tags":["Companies"],"description":"Adds a new **custom field** to the company schema.","security":[{"ApiKeyAuth":[]}]}},"/v1/companies/custom-fields/{fieldId}":{"patch":{"operationId":"PublicCompanyMetadataController.updateCustomField","parameters":[{"in":"path","name":"fieldId","required":true,"schema":{"pattern":"[^\\/#\\?]+?","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicUpdateCustomFieldDto"}}},"description":"PublicUpdateCustomFieldDto","required":false},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicCustomFieldDto"}}},"description":"Custom field updated successfully"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Invalid request parameters"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizeErrorResponseDto"}}},"description":"Invalid or missing API key"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Internal server error"}},"summary":"Update Custom Field","tags":["Companies"],"description":"Partially updates an existing **custom field** in the company schema. Only the fields provided in the request body will be modified.","security":[{"ApiKeyAuth":[]}]}},"/v1/companies/custom-fields/delete":{"delete":{"operationId":"PublicCompanyMetadataController.deleteCustomField","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicDeleteCustomFieldDto"}}},"description":"PublicDeleteCustomFieldDto","required":false},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommonResponseDto"}}},"description":"Custom field deleted successfully"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Invalid request parameters"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizeErrorResponseDto"}}},"description":"Invalid or missing API key"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Internal server error"}},"summary":"Delete Custom Field","tags":["Companies"],"description":"Deletes an existing **custom field** from the company schema.","security":[{"ApiKeyAuth":[]}]}},"/v1/companies/lists":{"get":{"operationId":"PublicCompanyMetadataController.getCompanyLists","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicViewAllCompanyListsDto"}}},"description":"List of company lists"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizeErrorResponseDto"}}},"description":"Invalid or missing API key"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Internal server error"}},"summary":"List Company Lists","tags":["Companies"],"description":"Returns all available **company lists** for the authenticated organization.","security":[{"ApiKeyAuth":[]}]},"post":{"operationId":"PublicCompanyMetadataController.createCompanyList","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicCreateCompanyListDto"}}},"description":"PublicCreateCompanyListDto","required":false},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicCompanyListDto"}}},"description":"Company list created successfully"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Invalid request parameters"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizeErrorResponseDto"}}},"description":"Invalid or missing API key"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Internal server error"}},"summary":"Create Company List","tags":["Companies"],"description":"Creates a new **company list** for the authenticated organization.","security":[{"ApiKeyAuth":[]}]}},"/v1/companies/lists/{listId}":{"patch":{"operationId":"PublicCompanyMetadataController.updateCompanyList","parameters":[{"in":"path","name":"listId","required":true,"schema":{"pattern":"[^\\/#\\?]+?","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicUpdateCompanyListDto"}}},"description":"PublicUpdateCompanyListDto","required":false},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicCompanyListDto"}}},"description":"Company list updated successfully"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Invalid request parameters"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizeErrorResponseDto"}}},"description":"Invalid or missing API key"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Company list not found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Internal server error"}},"summary":"Update Company List","tags":["Companies"],"description":"Updates an existing **company list**. Only the fields provided in the request body will be modified.","security":[{"ApiKeyAuth":[]}]},"delete":{"operationId":"PublicCompanyMetadataController.deleteCompanyList","parameters":[{"in":"path","name":"listId","required":true,"schema":{"pattern":"[^\\/#\\?]+?","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommonResponseDto"}}},"description":"Company list deleted successfully"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Invalid request parameters"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizeErrorResponseDto"}}},"description":"Invalid or missing API key"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Company list not found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Internal server error"}},"summary":"Delete Company List","tags":["Companies"],"description":"Permanently removes a **company list**. Companies in the list are not deleted, but their association with this list is removed.","security":[{"ApiKeyAuth":[]}]}},"/v1/companies":{"get":{"operationId":"PublicCompanyController.getCompanies","parameters":[{"in":"query","name":"listId","schema":{"pattern":"^[0-9a-fA-F]{24}$","type":"string","description":"Filter companies by list ID."}},{"in":"query","name":"limit","schema":{"maximum":100,"type":"integer","minimum":1,"default":100,"description":"Maximum number of results to return per request."}},{"in":"query","name":"offset","schema":{"maximum":1000000,"type":"integer","minimum":0,"default":0,"description":"Number of results to skip for pagination."}},{"in":"query","name":"search","schema":{"type":"string","default":null,"description":"Search query string to filter results."}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicViewAllCompaniesDto"}}},"description":"List of companies matching the search criteria"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Invalid request parameters"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizeErrorResponseDto"}}},"description":"Invalid or missing API key"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Internal server error"}},"summary":"List Companies","tags":["Companies"],"description":"Return **companies** based on search criteria, with filtering, sorting, and pagination.","security":[{"ApiKeyAuth":[]}]},"post":{"operationId":"PublicCompanyController.createCompany","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicCompanyCreateDto"}}},"description":"PublicCompanyCreateDto","required":false},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicCompanyDto"}}},"description":"Company created successfully"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Invalid request parameters"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizeErrorResponseDto"}}},"description":"Invalid or missing API key"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Internal server error"}},"summary":"Create Company","tags":["Companies"],"description":"Creates a new company in the system. The company will be associated with the authenticated organization.\n\n**Auto-Enrichment:** To enable automatic company data enrichment, provide a valid company website URL in the `website` field. When a valid URL is supplied, the system will automatically populate additional company information.","security":[{"ApiKeyAuth":[]}]}},"/v1/companies/{id}":{"get":{"operationId":"PublicCompanyController.getCompanyById","parameters":[{"in":"path","name":"id","required":true,"schema":{"pattern":"[^\\/#\\?]+?","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicCompanyDto"}}},"description":"Company found"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Invalid request parameters"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizeErrorResponseDto"}}},"description":"Invalid or missing API key"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Company not found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Internal server error"}},"summary":"Get Company by ID","tags":["Companies"],"description":"Returns a single **company** by its unique identifier.","security":[{"ApiKeyAuth":[]}]},"patch":{"operationId":"PublicCompanyController.updateCompany","parameters":[{"in":"path","name":"id","required":true,"schema":{"pattern":"[^\\/#\\?]+?","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicCompanyPatchDto"}}},"description":"PublicCompanyPatchDto","required":false},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicCompanyDto"}}},"description":"Company updated successfully"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Invalid request parameters"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizeErrorResponseDto"}}},"description":"Invalid or missing API key"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Company not found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Internal server error"}},"summary":"Update Company","tags":["Companies"],"description":"Partially updates an existing company. Only the fields provided in the request body will be modified; all other fields remain unchanged.\n\n**Auto-Enrichment:** To trigger automatic company data enrichment, provide a valid company website URL in the `website` field. When a valid URL is supplied, the system will automatically populate additional company information.","security":[{"ApiKeyAuth":[]}]},"delete":{"operationId":"PublicCompanyController.deleteCompany","parameters":[{"in":"path","name":"id","required":true,"schema":{"pattern":"[^\\/#\\?]+?","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommonResponseDto"}}},"description":"Company deleted successfully"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Invalid request parameters"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizeErrorResponseDto"}}},"description":"Invalid or missing API key"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Company not found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Internal server error"}},"summary":"Delete Company","tags":["Companies"],"description":"Permanently removes a company from the system.","security":[{"ApiKeyAuth":[]}]}},"/v1/companies/{id}/lists/{listId}":{"post":{"operationId":"PublicCompanyController.addCompanyToList","parameters":[{"in":"path","name":"id","required":true,"schema":{"pattern":"[^\\/#\\?]+?","type":"string"}},{"in":"path","name":"listId","required":true,"schema":{"pattern":"[^\\/#\\?]+?","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicCompanyDto"}}},"description":"Company added to list"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Invalid request parameters"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizeErrorResponseDto"}}},"description":"Invalid or missing API key"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Company or list not found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Internal server error"}},"summary":"Add Company to List","tags":["Companies"],"description":"Adds a **company** to the specified **list**.","security":[{"ApiKeyAuth":[]}]},"delete":{"operationId":"PublicCompanyController.removeCompanyFromList","parameters":[{"in":"path","name":"id","required":true,"schema":{"pattern":"[^\\/#\\?]+?","type":"string"}},{"in":"path","name":"listId","required":true,"schema":{"pattern":"[^\\/#\\?]+?","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicCompanyDto"}}},"description":"Company removed from list"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Invalid request parameters"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizeErrorResponseDto"}}},"description":"Invalid or missing API key"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Company or list not found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Internal server error"}},"summary":"Remove Company from List","tags":["Companies"],"description":"Removes a **company** from the specified **list**.","security":[{"ApiKeyAuth":[]}]}},"/v1/themes":{"get":{"operationId":"PublicThemesController.getThemes","parameters":[{"in":"query","name":"search","schema":{"type":"string","default":null,"description":"Search query string to filter results."}},{"in":"query","name":"limit","schema":{"maximum":100,"type":"integer","minimum":1,"default":100,"description":"Maximum number of results to return per request."}},{"in":"query","name":"offset","schema":{"maximum":1000000,"type":"integer","minimum":0,"default":0,"description":"Number of results to skip for pagination."}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicViewAllThemesDto"}}},"description":"List of themes"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizeErrorResponseDto"}}},"description":"Invalid or missing API key"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Internal server error"}},"summary":"List Themes","tags":["Themes"],"description":"Returns all themes for the organization.","security":[{"ApiKeyAuth":[]}]},"post":{"operationId":"PublicThemesController.createTheme","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicCreateThemeDto"}}},"description":"PublicCreateThemeDto","required":false},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicThemeDto"}}},"description":"Theme created or existing theme returned"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Invalid request parameters"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizeErrorResponseDto"}}},"description":"Invalid or missing API key"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Internal server error"}},"summary":"Create Theme","tags":["Themes"],"description":"Creates a new theme. If a theme with the same name already exists, returns the existing one.","security":[{"ApiKeyAuth":[]}]}},"/v1/themes/{id}/subthemes":{"post":{"operationId":"PublicThemesController.addSubtheme","parameters":[{"in":"path","name":"id","required":true,"schema":{"pattern":"[^\\/#\\?]+?","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicAddSubthemeDto"}}},"description":"PublicAddSubthemeDto","required":false},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicThemeDto"}}},"description":"Subtheme linked to parent"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizeErrorResponseDto"}}},"description":"Invalid or missing API key"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Parent or subtheme not found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Internal server error"}},"summary":"Add Subtheme","tags":["Themes"],"description":"Makes an existing theme a subtheme of the specified parent theme.","security":[{"ApiKeyAuth":[]}]},"delete":{"operationId":"PublicThemesController.removeSubtheme","parameters":[{"in":"path","name":"id","required":true,"schema":{"pattern":"[^\\/#\\?]+?","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicRemoveSubthemeDto"}}},"description":"PublicRemoveSubthemeDto","required":false},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicThemeDto"}}},"description":"Subtheme removed"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizeErrorResponseDto"}}},"description":"Invalid or missing API key"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Parent or subtheme link not found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Internal server error"}},"summary":"Remove Subtheme","tags":["Themes"],"description":"Removes a subtheme link from the specified parent theme.","security":[{"ApiKeyAuth":[]}]}},"/v1/themes/{id}/folders":{"get":{"operationId":"PublicThemesController.getThemeFolders","parameters":[{"in":"path","name":"id","required":true,"schema":{"pattern":"[^\\/#\\?]+?","type":"string"}},{"in":"query","name":"limit","schema":{"maximum":100,"type":"integer","minimum":1,"default":100,"description":"Maximum number of results to return per request."}},{"in":"query","name":"offset","schema":{"maximum":1000000,"type":"integer","minimum":0,"default":0,"description":"Number of results to skip for pagination."}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicViewAllThemeFoldersDto"}}},"description":"List of theme folders"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizeErrorResponseDto"}}},"description":"Invalid or missing API key"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Theme not found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Internal server error"}},"summary":"Get Theme Folders","tags":["Themes"],"description":"Returns the folders within a theme, grouped by entity type.","security":[{"ApiKeyAuth":[]}]}},"/v1/themes/{id}/theme-items":{"get":{"operationId":"PublicThemesController.getThemeItems","parameters":[{"in":"path","name":"id","required":true,"schema":{"pattern":"[^\\/#\\?]+?","type":"string"}},{"in":"query","name":"folderId","schema":{"type":"string","description":"Filter items by folder ID."}},{"in":"query","name":"limit","schema":{"maximum":100,"type":"integer","minimum":1,"default":100,"description":"Maximum number of results to return per request."}},{"in":"query","name":"offset","schema":{"maximum":1000000,"type":"integer","minimum":0,"default":0,"description":"Number of results to skip for pagination."}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicViewAllThemeItemsDto"}}},"description":"List of theme items"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizeErrorResponseDto"}}},"description":"Invalid or missing API key"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Theme not found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Internal server error"}},"summary":"Get Theme Items","tags":["Themes"],"description":"Returns all items (contacts, companies, deals, notes) tagged under the specified theme.","security":[{"ApiKeyAuth":[]}]},"post":{"operationId":"PublicThemesController.createThemeItem","parameters":[{"in":"path","name":"id","required":true,"schema":{"pattern":"[^\\/#\\?]+?","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicCreateThemeItemDto"}}},"description":"PublicCreateThemeItemDto","required":false},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicThemeItemDto"}}},"description":"Theme item created"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Invalid request parameters"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizeErrorResponseDto"}}},"description":"Invalid or missing API key"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Theme or entity not found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Internal server error"}},"summary":"Add Theme Item","tags":["Themes"],"description":"Links an entity to the specified theme and updates its comments/tags with a theme mention.","security":[{"ApiKeyAuth":[]}]}},"/v1/themes/{id}/theme-items/{itemId}":{"delete":{"operationId":"PublicThemesController.deleteThemeItem","parameters":[{"in":"path","name":"id","required":true,"schema":{"pattern":"[^\\/#\\?]+?","type":"string"}},{"in":"path","name":"itemId","required":true,"schema":{"pattern":"[^\\/#\\?]+?","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommonResponseDto"}}},"description":"Theme item deleted"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizeErrorResponseDto"}}},"description":"Invalid or missing API key"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Theme or item not found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"description":"Internal server error"}},"summary":"Delete Theme Item","tags":["Themes"],"description":"Removes an item from the theme and cleans up the theme mention from the entity's text/comments/tags.","security":[{"ApiKeyAuth":[]}]}}},"servers":[{"url":"https://api.listalpha.com","description":"API server"}],"tags":[{"name":"Deals","description":"A **deal** represents the process of acquiring a company. Every deal on the platform belongs to a **pipeline** and is associated with a specific **stage** within that pipeline. The Deal entity supports configurable **custom fields**."},{"name":"Fundraisings","description":"A **fundraising** represents an intent to raise capital from existing or prospective investors. Every fundraising on the platform belongs to specific **stage**. The Fundraising entity supports configurable **custom fields**."},{"name":"Companies","description":"A **company** is a legal entity tracked on the platform. The Company entity supports configurable **custom fields**."},{"name":"Contacts","description":"A **contact** entity stores details used for communication."},{"name":"Investors","description":"A **investor** represents an entity used for tracking relationships, interactions and additional data."},{"name":"Deals-Linking","description":"Endpoints for managing associations between deals and related entities such as notes."},{"name":"Fundraisings-Linking","description":"Endpoints for managing associations between fundraisings and related entities such as notes."},{"name":"Contacts-Linking","description":"Endpoints for managing associations between contacts and related entities such as notes."},{"name":"Investors-Linking","description":"Endpoints for managing associations between investors and related entities such as notes."},{"name":"Deal Attachments","description":"Upload and manage file attachments for deals — both entity-level files and custom fields of type `attachment`."},{"name":"Investor Attachments","description":"Upload and manage file attachments for investors — both entity-level files and custom fields of type `attachment`."},{"name":"Company Attachments","description":"Upload and manage file attachments for companies — both entity-level files and custom fields of type `attachment`."},{"name":"Fundraising Attachments","description":"Upload and manage file attachments for fundraisings — both entity-level files and custom fields of type `attachment`."}]}